规划一条通往无数据竞争错误的软件包生态系统的道路
Swift 6 为编译时数据竞争安全检查引入了功能,适用于任何选择加入使用 Swift 6 语言模式的代码。虽然各个模块可以逐步且独立于其依赖项采用此模式,但只有当所有模块都选择加入时,才能充分实现运行时数据竞争安全性的好处。因此,在开源软件包生态系统中快速采用 Swift 6 语言模式将在提升整个 Swift 生态系统的数据竞争安全性方面发挥关键作用。
数据竞争可能导致应用程序崩溃、行为不一致和性能问题,因此应用程序及其依赖项越早采用 Swift 6 语言模式并选择加入这些检查,效果就越好!
跟踪 Swift 6 的就绪状态和进展
Swift Package Index 新的“Ready for Swift 6”页面跟踪整个软件包生态系统在数据竞争安全性方面的进展。虽然软件包可以根据自己的方便选择加入 Swift 6 语言模式,但此页面显示了如果为所有软件包启用所有严格的并发检查,则可以通过这些检查的软件包数量。
自五月初以来,Swift Package Index 一直使用 Swift 6 nightly 工具链运行这些检查,并且数据竞争错误软件包的数量已经稳步减少。在过去一周,Swift Package Index 构建机器一直在运行新的构建,利用了具有更多 Sendable
一致性的平台 SDK 的优势,使零数据竞争错误软件包的总百分比超过 43%!对于 Swift 6 Beta 版发布仅一周而言,这是一个非常好的开端。
随着时间的推移,软件包生态系统中 Swift 6 语言模式的成功采用将来自两个方向。首先,随着更多软件包选择加入这些检查,软件包作者将修复编译器突出显示的潜在数据竞争,从而提高兼容性并减少错误。其次,编译器迭代将改进数据竞争检查并整合错误诊断。
数据竞争安全指标
在评估软件包时,了解该软件包是否存在任何已报告的数据竞争安全问题会很有帮助。为了帮助实现这一点,当软件包使用complete
严格并发检查编译且零错误时,Swift Package Index 现在会在其他软件包元数据旁边显示“数据竞争安全”标签。
兼容性与数据竞争安全
在过渡到 Swift 6 期间,您可能会看到在 Swift Package Index 的平台和 Swift 版本兼容性矩阵中,针对 Swift 6 显示绿色复选标记的软件包,同时还显示该软件包存在数据竞争安全错误
在编译软件包以检查与 Swift 6 的兼容性时,Swift Package Index 使用软件包作者指定的任何语言模式。软件包可以在采用 Swift 6 语言模式和严格并发检查之前就与 Swift 6 兼容,并且该矩阵始终只显示兼容性。是否采用具有潜在数据竞争安全问题的软件包由您决定,但如果兼容性矩阵显示绿色复选标记,则您可以采用。
行动号召:采用 Swift 6 语言模式
编译时数据竞争安全性是 Swift 语言的一项重大进步,它消除了整整一类潜在的并发错误,并提高了代码的安全性和可维护性。每个迁移到 Swift 6 的模块都为社区范围内的过渡做出了贡献,从而将数据竞争安全性引入 Swift 软件生态系统。您可以通过更新您自己的软件包来提供帮助,并且可以在 Swift Package Index 上的“Ready for Swift 6”页面上关注更广泛的生态系统的进展。