最近各大网站上最喜大普奔的新闻莫过于 Swift 正式开源这条了。这无疑是一个里程碑式的前进,苹果也向开源社区更加进了一步。那么 Swift 开源后有什么具体的改变呢,我们一一道来。

成立开源社区 swift.org

Swift 将开源社区功能都放在了 swift.org 这个网站上,提供了诸如 bug 报告系统,邮件列表,社区文档,以及社区贡献指引这些开源项目应具备的特性。

打开 swift.org 可以看到全新的开源社区主页:

Swift 现在支持 Linux 了

开源的 Swift,可以移植到任何一个平台,从此它不再是仅仅局限于 iOS 和 Mac 平台的开发语言了。swift.org 网站上列出了支持 Linux 平台的 Swift 开发包:

除了下载地址,网站上还提供了在各个平台上的环境配置指引。在 Mac 平台上,我们不仅可以使用 XCode 自带的 Swift 版本,也可以安装最新的开发版 Swift(不过 swift.org 社区网站上还说明了一点,如果是提交到 App Store 的应用,则必须使用 XCode 默认的 Swift 版本进行编译,这点需要大家注意)。

Github 上面的开放源代码

Swift 将所有开放的源代码托管到 Github 上面。它的 Github 主页 https://github.com/apple/swift

进入主页,Swift 的所有源代码都可以供我们使用了。并且它的社区极其活跃,下面是我写这篇文章时候对 Swift 在 Github 上项目的提交记录的截图,可以看到,几个小时之内就有好多有效提交:

Swift 包管理工具

随着 Swift 的开源,社区为 Swift 推出了全新的包管理工具。Swift 包管理的规则是通过建立一个叫做 Package.swift 的文件实现的。这个文件中定义了当前项目的依赖包等等。

Swift 开源社区通过一个示例项目演示了包管理的使用方法, 我们在命令行输入如下命令,即可使用这个示例项目,并通过包管理处理依赖包的获取:

git clone https://github.com/apple/example-package-dealer.git
cd example-package-dealer
swift build
.build/debug/Dealer

首先,我们通过 git clone 将示例项目复制到本地,然后进入项目所在目录,使用 swift build 命令构建项目,这时就会根据该项目的 Package.swift 文件,获取相应的依赖包。

我们再来看一下这个项目中的 Package.swift 文件:

import PackageDescription

let package = Package(
name: "Dealer",
dependencies: [
.Package(url: "https://github.com/apple/example-package-deckofplayingcards.git", majorVersion: 1),
]
)

我们看到,这个示例项目还依赖于另外一个项目 https://github.com/apple/example-package-deckofplayingcards.git。 当我们使用 swift build 进行构建的时候,包管理会帮助我们把相关的依赖项目也拉取下来,并进行构建。

我们之前也介绍过 iOS 平台开发时用到的包管理工具,如果你对包管理的了解还不是很多,也可以参看这两篇文章:

Carthage 包管理工具,另一种敏捷轻快的 iOS & MAC 开发体验

Swift Tips - 当 Swift 遇上 CocoaPods

因为开源的 Swift 是跨平台的,Swift 包管理的应用范围在今后会更加广泛。

Swift 核心库

Swift 在今后会提供一套核心库,这个库不依赖于任何具体的平台,针对编程中得基础操作,比如通用的字符处理,网络请求处理,多线程操作这些,都会通过核心库的方式来实现。

社区网站上说的是,重新构建这样一个库是一个十分庞大的工程,所以决定基于现有的库的基础上进行构建,比如 在 iOS 的 Foundation 库的基础上构建核心库。但这个核心库虽然和苹果平台的接口很多类似,但他底层是依赖于 Objective-C 运行时的,所以它是一套独立的库。

目前,这样核心库的开发工作还在规划当中,估计要的 Swift 3.x 版本才能发布出来。

Mailing List

最后嘛,Swift 社区提供了邮件列表订阅,开源社区的各种交流沟通,都可以在这个邮件列表中进行,只需要将你的邮箱地址提交到表单中,即可开始订阅邮件列表内容了。

结语

好啦,Swift 开源相关的主要内容跟大家分享的也差不多了。总的来说呢,对于 iOS 或者 Mac 平台上 APP 的开发,这些变化的影响可能不那么明显。我们开发 APP 的时候还是使用 XCode,还是提交到 AppStore,并且 Swift 版本也被限制在 XCode 自带的范围内。

但是从更远的角度来看,开源对 Swift 来说是一件非常好的事情。今后的 Swift 会借助社区的力量更加壮大。也许在不久的将来 Swift 不仅能在 iOS 和 Mac 平台上大展身手,可能也会成为一个服务端开发的利器。

就好像 Swift 原来只是苹果公司在开发维护。而现在,全世界的开发者和团队都可以为 Swift 的发展做出贡献,甚至去决定 Swift 今后的方向。

Swift 开源那点事儿的更多相关文章

  1. swift开源项目精选

    Swift 开源项目精选-v1.0 2016-03-07 22:11 542人阅读 评论(0) 收藏 举报  分类: iOS(55)   Swift(4)    目录(?)[+]   转自 http: ...

  2. 43个优秀的Swift开源项目

    作为一门集百家之长的新语言,Swift拥有着苹果先天的生态优势,而其在GitHub上各种优秀的开源项目也层出不穷.本文作者@SwiftLanguage从2014年6月苹果发布Swift语言以来,便通过 ...

  3. Swift - 开源框架总结

    苹果官方Swift文档<The Swift Programming Language> 苹果开发者Swift文档及介绍 网友整理的Swift中文文档< Apple Swift编程语言 ...

  4. 必须Mark!43个优秀的Swift开源项目推荐

    摘要:拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷.本文作者站在个人的角度,将2014年Swift开源项目做了一个甄别.筛选,从工具.存储.网络.界面.框架到Demo以及 ...

  5. Swift开源了,有什么好处?

    昨天swift开源了,喜大泪奔的好消息! swift的官方网站https://swift.org swift在github的开源地址https://github.com/apple/swift 今天早 ...

  6. 【转】43个优秀的Swift开源项目推荐

    作为一门集百家之长的新语言,Swift拥有着苹果先天的生态优势,而其在GitHub上各种优秀的开源项目也层出不穷.本文作者@SwiftLanguage从2014年6月苹果发布Swift语言以来,便通过 ...

  7. Swift 开源项目练习应用

    小的View.动画实现练习 拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷.本文作者站在个人的角度,将2014年Swift开源项目做了一个甄别.筛选,从工具.存储.网络.界 ...

  8. 400多个开源项目以及43个优秀的Swift开源项目-Swift编程语言资料大合集

    Swift 基于C和Objective-C,是供iOS和OS X应用编程的全新语言,更加高效.现代.安全,可以提升应用性能,同时降低开发难度. Swift仍然处于beta测试的阶段,会在iOS 8发布 ...

  9. Swift 开源项目精选

    Swift 开源项目精选 站在个人的角度,并基于<Swift 语言指南>,针对开源项目做了一个甄别.筛选.当然,由于个人能力及涉足范围所限,还远远不够,其中肯定有偏颇及不足,还望同学们多多 ...

随机推荐

  1. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser 2014-06-25 14:25 722人阅读 评论(1) 收藏

    一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...

  2. 用户之间imp的问题

    今天同事说申请了一个从生产导出的dump文件,须要导入測试库进行測试. 之前做的基本都是本库导出,本库导入的操作,比如:imp test/***@test tables=tbl_fuel file=H ...

  3. 栈溢出笔记1.9 认识SEH

    从本节開始,我们就要研究一些略微高级点的话题了,如同在1.2节中看到的,Windows中为抵抗栈溢出做了非常多保护性的检查工作,编译的程序默认开启了这些保护. 假设我们不能绕过这些保护.那么我们的Sh ...

  4. php如何利用标准输入输出实现在一个字符串中计算某个字符出现的个数?

    php如何利用标准输入输出实现在一个字符串中计算某个字符出现的个数? 一.总结 php实现计算字符个数(php标准输入和输出:fgets(STDIN)  echo $output;) 1.php标准输 ...

  5. [React Router v4] Use the React Router v4 Link Component for Navigation Between Routes

    If you’ve created several Routes within your application, you will also want to be able to navigate ...

  6. 【转】Boost.Python

    http://edyfox.codecarver.org/html/boost_python.html Boost.Python 是 Boost 中的一个组件,使用它能够大大简化用 C++ 为 Pyt ...

  7. 使用Delegate在两个ViewController之间传值

    以下就实现了使用Delegate在两个ViewController之间传值,这种场景一般应用在进入子界面输入信息,完后要把输入的信息回传给前一个界面的情况,比如修改用户个人信息,点击修改进入修改界面, ...

  8. EL表达式JSON应用

    由于之前在学校写的jsp页面都是夹杂着java代码的,所以之前写了个jsp,满满的<%%>和java代码,老师说那样太不美观了啊!!!要全部用EL表达式替代了.本人还是太笨了,弄了一上午才 ...

  9. 简单易用的动画animations

    _tableView_selc.frame=CGRectMake(20, , 20,20); [UIView animateWithDuration:0.3f animations:^{ _table ...

  10. 【BZOJ 1018】 [SHOI2008]堵塞的交通traffic

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1018 [题意] [题解] 按照这里的题解写的http://blog.csdn.net/ ...