Swift 2021 生态调研报告

ddbfcea8ffc72dbded12b2e5d1babd0e.png

回顾 2020

在去年的《一次关于 Swift 在 iOS 生态圈里的现状调研》一文中, 我们分析了整个大环境的现状,在文章发表后得到了大家的广泛关注,时隔一年,我们再来看看有什么变化吧?

Swift 语言

版本变化

首先从去年的 5.2 版本,到现在即将发布 5.4 版本,Swift 经历了 2 个小的版本变化,分别是 5.3 和 5.4

其中 5.3 版本给出了以下几个语言特性:

  • SE-0276[1]:catch 语句在捕获 error 的时候,可以更加灵活自由,例如一次捕获多个 error 或者对 error 的值进行绑定。

  • SE-0279[2]:支持多个尾随闭包,这个特性主要是为 SwiftUI 准备的。

  • SE-0266[3]:enum 支持 comparable 协议,并根据顺序自行决定大小

  • SE-0269[4]:在某些场景下可以避免 self 关键字的声明

  • SE-0281[5]:通过 @main 关键字定位程序入口

  • SE-0267[6]:在函数的泛型和扩展中就可以使用包含 where 关键字的语句

  • SE-0280[7]:protocol witness 匹配模型在枚举值中的加强

  • SE-0277[8]:新增 Float16 的数据类型

  • SE-0268[9]:didSet 方法优化和语义更新

  • 首先在 SE-0271[10] 中,Swift Package Manager 在资源文件的支持上有了进一步的提升,同时,在 SE-0278[11] 中,SPM 对本地化资源的支持也有了改进,而且在 SE-0272[12] 中,SPM 终于支持了二进制形式的组件。在 SE-0273[13],SPM 允许我们对特定的 target 进行特殊的依赖配置。

其中在未来的 5.4 版本又新增了以下几个语言特性:

  • SE-0287[14]:提升了隐式成员表达式的类型推断能力。

  • SE-0284[15]:在函数中可以定义多个可变参数。

  • SE-0289[16]:在 5.1 就公布的 Function Builder 功能正式命名为 Result Builder,并在原先的基础上进行了完善。

  • SR-10069[17]:嵌套函数支持重载

  • SE-0294[18]:新增 executable 类型的 target,使得 SE-0281[19] 新增的特性更易于使用。

  • property wrapper 除了可以作为属性外,还可以在函数里作为本地变量。

On the road to Swift 6

在 2021 年的 1 月,Swift 社区的 Ted Kremenek[20],他的另一个身份是 Manager of the Languages and Runtime Team @Apple,在 swift.org forum[21] 公布了一则名为《On the road to Swift 6》[22]的文章

在这篇文章里,提到了一些对 Swift 6 的规划,从大方向来说,Ted 提了三点:

  1. 加速整个 Swift 软件生态的发展:包含兼容更多的开发平台,简化软件的安装部署和大力发展各类工具库。

  2. 打造极致的开发体验:包括更快的构建速度,更好用的调试工具,更灵敏的代码补全和更丰富的诊断信息。

  3. 结合开发者的反馈进一步发展语言特性:包括完善 API 的设计,拓展其在底层系统,服务器和机器学习方面的应用场景,同时对某些主流的语言特性提供支持,例如并发特性和内存相关的特性。

同时 Swift 的核心团队也发生了一些变化,Saleem Abdulrasool[23] 和 Tom Doron[24] 作为新成员加入到核心团队,而 [Dave Abrahams] 则退出了核心团队。

这里稍微提一下的,Tom 是 SwiftNIO 的核心开发,同时在 SSWG(Swift Server Work Group) 项目中也是主要的发起者,而 Saleem 是 Swift to Windows 的核心发起者,这两个变动结合着最开始的三个大方向,可以看出整个核心团队是言行一致的。

另外关于 Swift 6 的公布时间,Ted 的原话是这样的:

Instead of announcing a specific timeline for “Swift 6”, the plan is for the community to be a part of seeing these efforts progress, with focused efforts and goals, and we release Swift 6 when those efforts culminate.

所以这样看来,Swift 6 还是有一段时间才能与我们见面,毕竟人家说了 when those efforts culminate!

那反过来看,Swift 5 还将会是近期使用的主要版本。(PS:希望今年的 WWDC 21 不要被打脸)

技术社区

语言排行榜

同样我们来看一看编程语言排行榜 TIOBE[25] 和 PYPL[26] 的情况,在 TIOBE 的排行榜中,Swift 在今年的排名是第 15 名,而 Objective-C 已经彻底排在了 20 名之外了。

8a81827fc91c806d0d068e91403d7f8c.jpeg

而在 PYPL 的排行榜中,Swift 和 Objective-C 的热度还是较为接近的。

60f299ee749c88d6051eb48bb889c3c0.jpeg

从社区的语言排行榜来看,虽然乍一看,感觉还是 Swift 和 Objective-C 共存的大环境,但其实背后也反映出,Swift 已经被大部分开发者所接受了。

社区活跃度

同样通过 GitHut 2.0[27] 这个工具对 GitHub 进行分析。

下面四张图的 Y 轴分别代表了 Pull Requests ,Pushes,Stars,Issues 的数量,蓝色的线代表 Objective-C ,浅橙色的线代表 Swift。

可以发现,在 Pull Request 方面,Swift 占比约 0.595%,而 Objective-C 占比约 0.335%

5c0badf1074028cd1f090fdf306d7a6e.jpeg

同时 Push 方面,Swift 占比约 0.476%,而 Objective-C 占比约 0.310%

5a4757f9aecd43eb214f559509ad589a.jpeg

在 Stars 方面,Swift 占比约 2.107%,而 Objective-C 占比约 1.067%

d10cd479dec54891225702cf1fbb3f25.jpeg

在 Issue 方面,Swift 占比约 0.767%,而 Objective-C 占比约 0.607%

97ad61d4d015eef3018074f693b03344.jpeg

总的来看,在 GitHub 的大环境中,社区中的开发者还是持续看好 Swift,也相对更加活跃,尤其在 Star 这项指标上可以明显看出,它高出了 Objective-C 近一倍!

商用 SDK 的技术选型

在今年我们还发现了一些有意思的现象,不少商用 SDK 也开始了 Swift 的迁移。

例如国外的 Nordic Semiconductor[28] 公司,它是北欧的一个半导体公司,主营蓝牙芯片,在业界属于领先地位,不少使用它家芯片的团队会涉及到固件升级问题,无线的升级方案需要进行固件传输、校验、升级管理等动作,而这些动作都得使用它们家提供的 SDK 来完成。

a8650a2da278f712ffbb804a145b5a79.jpeg

在 Nordic Semiconductor 的 GitHub 页面[29]上,我们可以看到目前提供的商用 SDK 中,iOS 端只有 Swift 版本[30],而 Android 端只有 Java 版本[31]

同时像 Google 的 Firebase 在其 RoadMap[32] 里也明确指出了将更

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值