最近各大网站上最喜大普奔的新闻莫过于 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 今后的方向。