IT资讯 Swift 5.8 正式发布

carlson · 2023-04-01 12:00:09 · 热度: 22

Swift 5.8 已经正式发布了! 这个版本包括改进开发者体验,改进 Swift 生态中的工具,包括 Swift-DocC、Swift Package Manager 和 SwiftSyntax,完善Windows 支持 等等。

开发者体验

改进的 Result Builder 实现

在 Swift 5.8 中对 Result Builder 的实现进行了重做,以大幅提高编译时性能、代码补全结果和诊断能力。Swift 5.8 的 Result Builder 实现执行了更严格的类型推理,与 SE-0289: Result Builders 中的语义相符,这对一些依赖无效类型推理的现有代码有影响。

生态

Swift-DocC

正如 2 月宣布的,《Swift 编程语言》一书已被转换为 Swift-DocC,并开源,随之而来的是对 Swift-DocC 本身的一些改进,其形式为 Option 指令,你可以用来改变你生成的文档的行为。Swift-DocC 还增加了一些新的指令来创建更多的动态文档页面,包括基于网格的布局和标签导航器。

为了更进一步,你现在可以通过颜色、字体和定制图标自定义你的文档页面的外观。导航也向前迈进了一步,有了快速导航,可以在项目中进行模糊的搜索:

Swift 5.8 正式发布

Swift-DocC 现在还支持记录对其他模块的类型的扩展。这是一个选择性功能,可以在使用 Swift-DocC 插件时添加 -include-extended-types 标志来启用。

Swift 5.8 正式发布

Swift Package Manager

以下是 Swift 5.8 中对 Swift Package Manager 引入变化的一些亮点:

  • SE-0362:目标现在可以指定他们需要的即将到来的语言功能。Package.swift清单语法已通过 API 进行了扩展,包括在目标层设置enableUpcomingFeatureenableExperimentalFeature标志。
  • SE-0378: 现在支持在与包注册表交互时进行令牌认证。swift package-registry命令有两个新的子命令loginlogout,用于添加/删除注册表凭证。
  • 现在允许公开一个仅由二进制目标组成的可执行产品,该目标由一个工件包支持。这允许将二进制可执行文件作为它们自己独立的软件包出售,独立于正在使用它们的插件。
  • 在使用 5.8 或更高版本的 工具 的包中,Foundation 不再被隐式导入包清单中。如果使用 Foundation API,则需要明确导入该模块。

SwiftSyntax

随着 SwiftSyntax 的 Swift 5.8 版本的发布,SwiftSyntax 包含一个完全重新编写的解析器,它完全由 Swift 实现,而不是依靠 C++ 解析器来生成 SwiftSyntax 树。虽然 Swift 编译器仍然使用用 C++ 实现的旧解析器,但最终目标是完全取代旧解析器。新的解析器有很多优点:

  • 贡献或依赖 SwiftSyntax 现在就像其他 Swift 包一样容易,这大大降低了新的贡献者和采用者的准入门槛。
  • 新的解析器是以错误恢复为主要目标设计的。它对解析错误的容忍度更高,产生的错误信息也更好。
  • SwiftSyntaxBuilder 允许使用结果构建器和字符串插值的混合方式,以声明的方式生成源代码。

Windows 平台

Swift 5.8 继续对 Windows 工具链进行增量改进。这个发布周期中的一些重要工作包括:

  • Windows 工具链减少了对环境变量的一些依赖。DEVELOPER_DIR以前需要用来定位组件,现在不再需要了。这清理了安装程序,使我们能够更接近于按用户安装。
  • ICU 已经改为静态链接。这减少了需要分发的文件的数量,并减少了运输产品所需的依赖关系的数量。这是因为在 Swift 标准库中删除了 ICU 的依赖性,才得以实现。
  • 支持 Windows 上 C++ 互操作的一些初步工作已被合并,并在工具链中提供。这包括对微软 C++ 运行时(msvcprt)进行模块化的工作。
  • vcruntime模块已被重新命名为visualc。这更好地反映了该模块,并为未来加强与 Windows 平台库的连接铺平了道路。
  • 改善 Swift 包管理器中的路径处理的大量工作已被合并。这将有助于使 Swift 包管理器在 Windows 上更加强大,并改善与 SourceKit-LSP 的交互。
  • SourceKit-LSP 已经受益于一些改进。跨模块引用现在更加可靠,C/C++ 引用也得到了改善,这要归功于 SPM 中增强的路径处理,确保文件被正确识别。

更多详情可查看:https://www.swift.org/blog/swift-5.8-released/

 

为您推荐与 swift 相关的帖子:

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册