Swift 6.3 来了,这次更新像是一个产品经理终于想通了——与其让用户在跨平台这件事上自己折腾,不如官方下场把路铺平。
最显眼的变化是 Android 支持正式转正。之前只在 nightly 构建里偷偷摸摸存在的 Android SDK,现在稳定了。你可以用 Swift 写原生安卓应用,也能把现有的 Swift 包移植过去,甚至通过 Swift Java 和 JNI Core 插进 Kotlin/Java 项目里。苹果生态的开发者如果想试试安卓市场,门槛被砍了一大截。
另一个重头戏是 C 互操作性。Swift 6.3 引入了 @c 和 @implementation 两个属性,相当于给 Swift 和 C 之间搭了座双向桥:用 @c 标记的 Swift 函数会自动出现在 C/C++ 头文件里,C 代码能直接调用;反过来,@c 配上 @implementation 还能给现成的 C 声明写 Swift 实现。编译器会在旁边盯着,确保你没瞎编。
模块选择器也是个实用的小工具。不同模块里撞名字了?以前可能得靠猜或者改代码,现在直接用 ModuleA::getValue() 这种写法点名道姓,歧义当场消除。
并发方面,weak let 终于落地。以前 weak 只能跟 var 搭配,结果引用变成可变状态,在并发场景里寸步难行。现在 weak let 让不可变的弱引用成为可能,闭包里捕获外部对象时不用再提心吊胆。
至于性能控,@specialize 和 @inline(always) 给了你们更多跟编译器讨价还价的筹码。泛型特化、强制内联,这些原本藏在编译器黑箱里的开关,现在可以手动拧了。
嵌入式 Swift 也在推进统一链接模型,@section 和 @used 属性让你对内存布局更有话语权,Swift SMMIO 则补上了内存映射 I/O 的支持。玩单片机的同学,工具箱又厚了一层。
有个细节挺有意思:这次更新里,"官方支持 Android"和"强化 C 互操作"被放在同等位置宣传。放在五年前,这几乎是不可想象的组合。语言生态的扩张期,姿态往往比功能本身更能说明问题。
热门跟贴