Swift 5.8 正式发布
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-DocC 现在还支持记录对其他模块的类型的扩展。这是一个选择性功能,可以在使用 Swift-DocC 插件时添加 -include-extended-types
标志来启用。
Swift Package Manager
以下是 Swift 5.8 中对 Swift Package Manager 引入变化的一些亮点:
- SE-0362:目标现在可以指定他们需要的即将到来的语言功能。
Package.swift
清单语法已通过 API 进行了扩展,包括在目标层设置enableUpcomingFeature
和enableExperimentalFeature
标志。 - SE-0378: 现在支持在与包注册表交互时进行令牌认证。
swift package-registry
命令有两个新的子命令login
和logout
,用于添加/删除注册表凭证。 - 现在允许公开一个仅由二进制目标组成的可执行产品,该目标由一个工件包支持。这允许将二进制可执行文件作为它们自己独立的软件包出售,独立于正在使用它们的插件。
- 在使用 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/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Bytebase 1.15.0 发布
Bytebase 是一个基于网络、零配置、无依赖的数据库 Schema 变更和版本控制管理工具,适用于开发人员和 DBA。 Bytebase 1.15.0 发布,更新内容如下: 新功能 Bytebase 发布了 SaaS 版本 GitOps 支持使用 Bitbucket Cloud (bitbucket.org) 上的 Git 仓库 改进 SQL 审核支持检查 PostgreSQL 视图依赖关系 Bug 修复 修复了无法识别 MySQL 5.7.20-log 版本中一些对象的问题 修复了 MySQL 在 lower\_case\_table\_names = 1 情况下创建数据库无法识别的问题 更多详情可查看:https://github.com/bytebase/bytebase/releases/tag/1.15.0
- 下一篇
Pigsty v2.0.2 发布,开源 RDS PG 替代
Pigsty v2.0.2 现已发布,现在可以使用 pgvector 插件存储 AI Embedding,并执行高效的最近邻向量搜索。同时,2.0.2 修复了 MinIO CVE-2023-28432 高危漏洞,修复了一些 Bug,并对监控系统面板进行了优化,官方强烈建议升级。 具体更新内容包括: Highlight 使用pgvector存储 OpenAI 嵌入并搜索相似向量 新扩展pgvector MinIO CVE-2023-28432修复,并升级到 20230324 与新策略 API: Changes 用于存储 OpenAI 嵌入和搜索相似向量的新扩展pgvector。 MinIO CVE-2023-28432修复,并升级到 20230324,采用新的策略 API。 向 DNSMASQ systemd 服务添加重载功能 将 pev 升级到 v1.8 将 grafana 升级到 v9.4.7 将 MinIO 和 MCLI 版本升级到 20230324 将 bytebase 版本升级到 v1.15.0 升级监控仪表板并修复死链接 升级 aliyun terraform 模板镜像到 r...
相关文章
文章评论
共有0条评论来说两句吧...