Swift 开源那点事儿
最近各大网站上最喜大普奔的新闻莫过于 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 开源那点事儿的更多相关文章
- swift开源项目精选
Swift 开源项目精选-v1.0 2016-03-07 22:11 542人阅读 评论(0) 收藏 举报 分类: iOS(55) Swift(4) 目录(?)[+] 转自 http: ...
- 43个优秀的Swift开源项目
作为一门集百家之长的新语言,Swift拥有着苹果先天的生态优势,而其在GitHub上各种优秀的开源项目也层出不穷.本文作者@SwiftLanguage从2014年6月苹果发布Swift语言以来,便通过 ...
- Swift - 开源框架总结
苹果官方Swift文档<The Swift Programming Language> 苹果开发者Swift文档及介绍 网友整理的Swift中文文档< Apple Swift编程语言 ...
- 必须Mark!43个优秀的Swift开源项目推荐
摘要:拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷.本文作者站在个人的角度,将2014年Swift开源项目做了一个甄别.筛选,从工具.存储.网络.界面.框架到Demo以及 ...
- Swift开源了,有什么好处?
昨天swift开源了,喜大泪奔的好消息! swift的官方网站https://swift.org swift在github的开源地址https://github.com/apple/swift 今天早 ...
- 【转】43个优秀的Swift开源项目推荐
作为一门集百家之长的新语言,Swift拥有着苹果先天的生态优势,而其在GitHub上各种优秀的开源项目也层出不穷.本文作者@SwiftLanguage从2014年6月苹果发布Swift语言以来,便通过 ...
- Swift 开源项目练习应用
小的View.动画实现练习 拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷.本文作者站在个人的角度,将2014年Swift开源项目做了一个甄别.筛选,从工具.存储.网络.界 ...
- 400多个开源项目以及43个优秀的Swift开源项目-Swift编程语言资料大合集
Swift 基于C和Objective-C,是供iOS和OS X应用编程的全新语言,更加高效.现代.安全,可以提升应用性能,同时降低开发难度. Swift仍然处于beta测试的阶段,会在iOS 8发布 ...
- Swift 开源项目精选
Swift 开源项目精选 站在个人的角度,并基于<Swift 语言指南>,针对开源项目做了一个甄别.筛选.当然,由于个人能力及涉足范围所限,还远远不够,其中肯定有偏颇及不足,还望同学们多多 ...
随机推荐
- 【源代码】Timer和TimerTask源代码剖析
Timer是java.util包中的一个工具类,提供了定时器的功能. 我们能够构造一个Timer对象,然后调用其schedule方法在某个特定的时间或者若干延时之后去运行一个特定的任务.甚至你能够让其 ...
- svn pre commit
windows下的必须要用.bat文件,pre-commit.bat ================================================== @echo off set ...
- .NET-架构优化实战-梳理篇
原文:.NET-架构优化实战-梳理篇 前言 程序员输出是他敲写的代码,那么输入就是他思考好的设计.因此不做设计是不存在,设计只分优秀的设计和糟糕的设计.为了避免过度设计浪费成本,需要针对现有业务与问题 ...
- SqlBulkCopy 帮助类
using System;using System.Collections.Generic;using System.Configuration;using System.Data;using Sys ...
- 【codeforces 757A】Gotta Catch Em' All!
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 分布式ID解决方案
开发十年,就只剩下这套Java开发体系了 >>> 在游戏开发中,我们使用分布式ID.有很多优点 便于合服 便于ID管理 等等 一.单服各自ID系统的弊端 1. 列如合服 在游戏上 ...
- [SVG] Optimize SVGs for Better Performance using svgo
Just like a bitmap image, you can compress an SVG by removing various pieces of code that aren’t nec ...
- java基础—网络编程———建立聊天的形式
接收器和发射器的简单演示 import java.io.*; import java.net.*; public class SocketDemo { public static void main( ...
- iOS 下载功能:断点下载(暂停和开始)(NSURLConnectionDataDelegate方法)
1,model文件代码 文件名称:HMFileDownloader.h #import <Foundation/Foundation.h> @interface HMFileDownloa ...
- rebar工具使用备忘录
http://cryolite.iteye.com/blog/1159448 rebar是一个开源的erlang应用自动构建工具.basho的tuncer开发.它实际上是一个erlang脚本(escr ...