最近各大网站上最喜大普奔的新闻莫过于 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. Tomcat结合Apache、Nginx实现高性能的web服务器

    一.Tomcat为什么需要与apache.nginx一起结合使用? Tomcat虽然是一个servlet和jsp容器,但是它也是一个轻量级的web服务器.它既可以处理动态内容,也可以处理静态内容.不过 ...

  2. http各种状态码具体解释

    1XX (暂时响应)   100(继续) 请求者应当继续提出请求.   101(切换协议)请求者已要求server切换协议,server已确认并准备切换 2XX(成功)    ·200(成功) ser ...

  3. 图像数据的 normalization

    Normalization的方法 matlab 工具函数(三)-- normalize(归一化数据) 1. 加载指定标准差的噪声 im_clean = double(imread('Lena512.p ...

  4. 图形界面Aardio

    用aardio给python写个图形界面 前阵子在用python写一些小程序,写完后就开始思考怎么给python程序配一个图形界面,毕竟控制台实在太丑陋了. 于是百度了下python的图形界面库,眼花 ...

  5. SWIFT学习笔记04

    1.在实际编译时,Swift 编译器会优化字符串的使用.使实际的复制仅仅发生在绝对必要的情况下,这意味着您将字符串作为值类型的同一时候能够获得极高的性能. 2.for character in &qu ...

  6. INT_MIN与溢出

    隔了好久没更新了,由于我在学习PL和编译器/解释器的知识. 挺好奇这方面的,由于没有学过相关的课程.所以学起来有点吃力,进展缓慢.所以导致没啥可写的. 今天看到这么一段话: 32位的int型的取值是2 ...

  7. EXTJS和javaweb应用的开发思路

    近期.做些几个基于extjs界面的应用.在此.总结一下要点.标题是基于javaweb,可是基本上各种server端语言都适用.使用Extjs做界面,无非就是取消了原来非常多的jsp文件,转而使用Ext ...

  8. tensorflow 的使用流程

    1. optimizer.minimize 与 global_step optimizer = tf.train.**(learning_rate) global_step = tf.Variable ...

  9. Andrew Ng Machine Learning 专题【Logistic Regression &amp; Regularization】

    此文是斯坦福大学,机器学习界 superstar - Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记. 力求简洁,仅代表本人观点,不足之处希望大家探 ...

  10. 微信小程序bnner滚动

    首先是轮播图,autoplay 自动播放,interval 轮播的时间,duration 切换速度,可以根据自己需求去添加. Delete:是删除按钮,加载进来是隐藏的,需用户点轮播图进去后,轮播图全 ...