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 还增加了一些新的指令来创建更多的动态文档页面,包括基于网格的布局和标签导航器。

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

/attach/20230401/23d5309412d6f148bb79f38850651c5103301d81.png

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

/attach/20230401/7f2c787ec39162a28de8af936d1382f9410f0df4.png

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/

 


相關推薦

2023-03-21

、Textile、Tex 等)或任何其他类型的纯文本。 CotEditor 4.5 正式发布,该版本更新内容如下: 系统要求: macOS 12 及以上版本 新功能: 更新代码片段功能,使其能够命名,改变顺序,并从菜单中执行 在文本菜单中增加

2022-11-23

Spring Security 6.0 现已普遍可用。与此同时 Spring Security 5.8 也已全面上市,以简化到 6.0 的升级。 Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应

2022-12-21

lseye" 系列操作系统,Tails 开发团队近日发布了 Tails 5.7 的正式版本,Tails 5.8 是多年来 Tails 最重要的发布版本。它包括了现有功能的重大重新设计、重要的可用性改进和强化的安全性。 新功能 新的持久存储 经过两年的开发工

2023-06-09

Cinnamon 5.8 桌面环境已经发布,且已经在 Arch Linux 的稳定软件存储库中可用。 Cinnamon 5.8 有几个很酷的新功能,其中之一是 XDG 桌面门户支持,为 Flatpak 应用程序以及 GNOME/libadwaita 应用程序提供更好的兼容性,使得这些应用程序可

2022-11-05

排各种DevOps流程并分发到不同平台执行。 建木v2.5.8现已发布 主要更新:支持arm64架构部署、修复若干已知bug feature: server支持arm64镜像构建 fixed: 挂起和待启动状态增加问号提示 待启动项目点终止,执行时长问题复现

2022-09-12

Winamp 5.9 正式版已发布。 Winamp 5.9 主要变化是改进与 Windows 11 的兼容性,以及优化播放 https:// 流的性能。开发者还表示,对终端用户来说,Winamp 5.9 可能变化不大,但底层代码库有了巨大变化,从 Visual Studio 2008 升级到了 Visual St

2022-02-08

将首先设计互操作性模型,然后将其带回 Swift 社区进行正式评估和讨论。 Swift 论坛: 论坛上的 "开发" 板块将会有一个新的 "C++ 互操作性" 子板块,该板块对所有人开放,将承载关于 C++ 互操作性的相关技术讨论帖子。除了

2023-05-12

项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于 excel 操作风格,通过拖拽完成报表设计。

2022-09-11

与统一维护管理的模块。 通知公告:系统通知公告信息发布维护。 代码生成:一键生成模块 CRUD 的功能,包括后端和前端 Vue 等相关代码。 案例演示:常规代码生成器一键生成后的演示案例。 开发者信息 软件名称:R

2024-03-07

Swift 5.10 现已发布,此版本在并发语言模型中实现了完全的数据隔离。公告称,“这一重要的里程碑经过了多年的积极开发,历经多个版本。” 并发模型是在 Swift 5.5 中引入的,包括async/await、actors 和结构化并发 (structured concurre

2022-08-02

布推出 Winamp 5.8。 现在,时隔将近 4 年,Winamp 终于发布了 5.8 之后的更新:5.9 RC1 (build 5.9.9999)。 Winamp 5.9 主要变化是改进与 Windows 11 的兼容性,以及优化播放 https:// 流的性能。 其他更新内容 Improved: 更新了生

2022-12-16

这个全新的 Foundation 框架将于 2023 年开源,并在 GitHub 上发布。

2023-05-04

善 Swift 的跨平台开发。近日,基于 Swift 重写的 Foundation 发布了首个 Preview 预览版。 Foundation 框架是苹果 macOS 和 iOS 的基础组件支持核心,几乎所有的 Swift 项目都使用 Foundation 框架,其主要包含了大量常用的 API,为许多基本

2022-11-25

wift 团队的一名工程师兼语言工作组成员 John McCall 在最新发布的一篇博客中介绍了 Swift 的 2023 年度计划。 “Swift 项目中有很多激动人心的工作正在进行,而且很难跟踪所有这些工作,因为它发生在许多不同的存储库、拉取请求