@@ -6,64 +6,65 @@ showVersion: false
66
77# ` 0.15.1 `
88
9- 2025/1/20,` 0.15.1 ` 发布,历时 5 个月,有 162 位贡献者,一共进行了 647 次提交!
9+ 2025/1/20,` 0.15.1 ` 发布,自上一个版本来历时 5 个月,共有 162 位贡献者参与,进行了 647 次提交!
1010
11- Zig 官方团队直接从 ` 0.14.0 ` 跨越到了 ` 0.15.1 ` 。在默认选择 Zig 的 x86 后端后,调试编译速度提高了 5 倍;正在开发的 aarch64 后端也紧随其后。同时,Writergate 事件以及一系列语言变更和标准库的调整,带来了大量的 API 破坏性更改 ;这预示着 async/await 的复兴;也是语言稳定化的最后防线 。
11+ Zig 官方团队直接从 ` 0.14.0 ` 跨越到了 ` 0.15.1 ` 。在默认选择 Zig 的 x86 后端后,调试编译速度提高了 ** 5 ** 倍;正在开发的 aarch64 后端也紧随其后。同时,随着 ` Writergate ` 事件以及一系列语言变更和标准库的调整,** 大量 ** API 有破坏性更改 ;这预示着 async/await 即将重生;也是语言稳定化的最后关头 。
1212
1313## 编译器重大改进
1414
1515### x86 后端性能突破
1616
17- ** 调试编译速度提高了 5 倍 ** , 这是本次更新最显著的性能改进。x86 后端现在是默认选择,为快速开发周期提供了强有力的支持 。
17+ ** 调试模式 ** 的编译速度提高了 ** 5 ** 倍; 这是本次更新最显著的性能改进。x86 后端现在是 ** 调试模式 ** 的默认选择,为缩短开发周期提供了强有力的支持 。
1818
1919### aarch64 后端开发进展
2020
21- aarch64 后端的开发也在稳步推进,持续改进 ARM 平台支持,为多架构开发提供更好的体验。
21+ aarch64 后端的开发也在稳步推进,持续优化 ARM 平台支持,为多架构开发提供更好的体验。
2222
23- ### 增量编译
23+ ### 增量编译功能增强
24+
25+ 增量编译功能得到了进一步优化,现在支持:
2426
25- 增量编译功能得到了改进,支持:
2627- 与文件系统监视结合使用
2728- 仅检查编译错误模式
2829- 更快的重建速度
2930
3031### 多线程代码生成
3132
32- 编译器现在支持多线程代码生成,可以充分利用多核 CPU 的性能 。
33+ 编译器现已支持多线程代码生成,能够充分利用多核 CPU 的性能优势 。
3334
3435## 语言特性重大调整
3536
3637### 移除 ` usingnamespace ` 关键字
3738
38- 这是一个** 破坏性更改 ** ,` usingnamespace ` 关键字被完全移除。所有使用 ` usingnamespace ` 的代码需要重写,推荐使用显式导入替代,提高代码可读性和维护性 。
39+ 这是一个** 破坏性变更 ** ,` usingnamespace ` 关键字被完全移除。所有使用 ` usingnamespace ` 的代码都需要重写,建议采用显式导入方式替代,以提高代码可读性和可维护性 。
3940
4041### 移除异步关键字
4142
42- ` async ` 和 ` await ` 关键字被移除,当前异步编程模型被移除 ,为未来新的异步方案做准备。这预示着 async/await 的复兴 。
43+ ` async ` 和 ` await ` 关键字已被移除,当前异步编程模型也随之取消 ,为未来新的异步方案做准备。这预示着 Zig 协程 的重生 。
4344
44- ### 对非穷尽枚举的 ` switch ` 支持
45+ ### 增强对非穷尽枚举的 ` switch ` 支持
4546
46- 新增对非穷尽枚举使用 ` switch ` 语句的支持,提高枚举处理的灵活性,支持未知枚举值的处理 ,增强代码的健壮性。
47+ 新增对非穷尽枚举使用 ` switch ` 语句的支持,提高了枚举处理的灵活性,能够更好地处理未知枚举值 ,增强代码的健壮性。
4748
48- ### 允许对布尔向量使用更多运算符
49+ ### 扩展布尔向量运算符支持
4950
5051布尔向量现在支持更多运算符,包括逻辑运算和比较运算。
5152
5253### 内联汇编:类型化的破坏描述符
5354
54- 内联汇编现在支持类型化的 clobber 列表,提供更好的类型安全 。
55+ 内联汇编现在支持类型化的 ` clobber ` 列表,提供了更好的类型安全保证 。
5556
56- ### 指针转换增强
57+ ### 指针转换能力增强
5758
58- ` @ptrCast ` 现在允许从单项指针到切片的转换,提供更大的灵活性 。
59+ ` @ptrCast ` 现在允许从单项指针转换为切片,提供了更大的灵活性 。
5960
60- ### undefined 运算新规则
61+ ### 调整 ` undefined ` 运算规则
6162
62- 对 ` undefined ` 值的算术运算规则发生了变化 ,任何与 ` undefined ` 的运算都返回 ` undefined ` 。
63+ 对 ` undefined ` 值的算术运算规则有所调整 ,任何与 ` undefined ` 的运算结果都将返回 ` undefined ` 。
6364
64- ### 有损转换检测
65+ ### 加强有损转换检测
6566
66- 现在对于可能导致精度损失的整数到浮点数转换会发出编译错误 。
67+ 对于可能导致精度损失的整数到浮点数转换,编译器会视为错误 。
6768
6869## 标准库重大变更
6970
@@ -80,6 +81,7 @@ aarch64 后端的开发也在稳步推进,持续改进 ARM 平台支持,为
8081### 格式化系统调整
8182
8283格式化系统进行了重要调整:
84+
8385- 调用自定义 ` format ` 方法需要使用 ` {f} ` 格式说明符
8486- ` format ` 方法签名简化,移除了格式字符串和选项参数
8587- 格式化打印不再处理 Unicode
@@ -88,12 +90,13 @@ aarch64 后端的开发也在稳步推进,持续改进 ARM 平台支持,为
8890### ` ArrayList ` 非托管化
8991
9092容器类型的重要变更:
93+
9194- ` std.ArrayList ` 现在默认采用非托管方式
9295- 开发者需要显式提供分配器
9396- 与其他非托管容器保持一致
9497- 提供更好的内存管理控制
9598
96- ### 去泛型化链表
99+ ### 链表去泛型化
97100
98101链表类型进行了重构,去除了泛型化设计。
99102
@@ -117,11 +120,12 @@ aarch64 后端的开发也在稳步推进,持续改进 ARM 平台支持,为
117120
118121### 移除隐式根模块
119122
120- 构建系统移除了对隐式根模块的支持,需要在构建脚本中明确指定模块,提高构建配置的明确性 。
123+ 构建系统移除了对隐式根模块的支持,现在需要在构建脚本中明确指定模块;这提高了构建配置的清晰度和准确性 。
121124
122125### macOS 文件系统监视
123126
124127在 macOS 上新增了文件系统监视功能:
128+
125129- 能够在文件更改时自动触发重建
126130- 支持 ` --watch ` 和 ` --debounce ` 选项
127131- 显著提高开发效率
@@ -130,19 +134,21 @@ aarch64 后端的开发也在稳步推进,持续改进 ARM 平台支持,为
130134
131135构建系统现在支持 Web 界面和详细的时间报告功能。
132136
133- ## 模糊测试器
137+ ### 模糊测试器
134138
135139Zig 0.15.1 集成了一个内置的模糊测试器:
140+
136141- 支持进程内模糊测试
137142- 提供 Web UI 界面
138143- 支持实时代码覆盖率显示
139- - 可以快速发现代码中的问题
144+ - 可以快速发现代码中的潜在问题
140145
141146## 工具链更新
142147
143148### LLVM 20
144149
145150升级到 LLVM 20,带来了:
151+
146152- 更好的优化支持
147153- 新的目标架构支持
148154- 改进的调试信息生成
@@ -158,22 +164,24 @@ Zig 0.15.1 集成了一个内置的模糊测试器:
158164
159165### MinGW-w64 更新
160166
161- MinGW-w64 工具链得到了更新,改进了 Windows 交叉编译支持 。
167+ MinGW-w64 工具链得到了更新,进一步改进了对 Windows 的交叉编译支持 。
162168
163169### zig libc 和 zig cc 增强
164170
165- ` zig libc ` 和 ` zig cc ` 命令得到了功能增强:
171+ ` zig libc ` 和 ` zig cc ` 命令的功能得到了增强:
172+
166173- 更好的 GCC 兼容性
167174- 支持更多编译选项
168- - 更好的错误报告
175+ - 更清晰的错误报告
169176
170177## 版本跳跃说明
171178
172- Zig 官方团队选择直接从 ` 0.14.0 ` 跳跃到 ` 0.15.1 ` ,这反映了:
173- - 本次更新包含的重大变更数量
179+ Zig 官方团队选择直接从 ` 0.14.0 ` 跳跃到 ` 0.15.1 ` ,这一决策反映了:
180+
181+ - 本次更新包含的重大变更数量之多
174182- 对编译器性能的重要改进
175183- 标准库接口的重大重构
176- - 为未来版本奠定更好的基础
184+ - 为未来版本奠定更坚实的基础
177185
178186## 升级挑战与机遇
179187
@@ -194,6 +202,7 @@ Zig 官方团队选择直接从 `0.14.0` 跳跃到 `0.15.1`,这反映了:
194202## 社区影响
195203
196204这次更新对 Zig 社区产生了重要影响:
205+
197206- ** 学习曲线** :新用户需要适应新的接口设计
198207- ** 迁移工作** :现有项目需要进行大量调整
199208- ** 性能收益** :编译速度的显著提升改善开发体验
@@ -202,14 +211,16 @@ Zig 官方团队选择直接从 `0.14.0` 跳跃到 `0.15.1`,这反映了:
202211## 技术债务清理
203212
204213本次更新体现了 Zig 团队对技术债务的积极清理:
214+
205215- 移除了有争议的 ` usingnamespace ` 特性
206216- 重构了性能不佳的 I/O 接口
207217- 统一了容器类型的设计理念
208- - 为未来的语言演进奠定基础
218+ - 为未来的语言演进奠定坚实基础
209219
210220## 未来展望
211221
212222` 0.15.1 ` 为 Zig 的未来发展奠定了重要基础:
223+
213224- ** 编译性能** :为大型项目开发提供更好支持
214225- ** 接口设计** :更一致、更高效的标准库
215226- ** 开发体验** :更快的编译和更好的工具支持
@@ -224,9 +235,10 @@ I/O 系统将继续作为接口进行发展和完善,为未来的异步编程
224235## 建议
225236
226237对于 Zig 开发者:
238+
2272391 . ** 谨慎升级** :在测试环境中充分验证
2282402 . ** 分步迁移** :逐步调整代码以适配新接口
229- 3 . ** 利用性能 ** :充分利用编译速度的改进
230- 4 . ** 关注社区 ** :参与社区讨论,分享迁移经验
241+ 3 . ** 充分利用性能优势 ** :积极采用有关编译速度的改进
242+ 4 . ** 关注社区动态 ** :参与社区讨论,分享迁移经验和最佳实践
231243
232- ` 0.15.1 ` 是 Zig 发展历程中的一个重要里程碑,虽然带来了较多的破坏性更改 ,但为语言的长期发展和性能提升奠定了坚实的基础。这是语言稳定化的最后防线 ,为 1.0 版本的发布做好了准备 。
244+ ` 0.15.1 ` 是 Zig 发展历程中的一个重要里程碑,虽然带来了较多的破坏性变更 ,但为语言的长期发展和性能提升奠定了坚实的基础。这标志着语言稳定化的最后阶段 ,为 1.0 版本的正式发布做好了充分准备 。
0 commit comments