Zig 0.6.0 已发布,这是一门通用编程语言,专为稳定性、可维护性和性能而设计,追求替代 C 语言在系统编程上的最佳地位。Zig 具有以下值得关注的特性:
- 手动管理内存
- 与 C 语言竞争而非依赖它,Zig 标准库不依赖于 libc
- 轻量而简单,专注于调试应用而不是调试编程语言的知识
- 新的错误处理方法,与编写良好的 C 语言错误处理类似,但减少了很多冗余
- 调试模式下优化了快速编译时间,并在不确定行为发生时使用堆栈跟踪崩溃
- ReleaseFast 模式和 ReleaseSafe 模式
- 泛型数据结构和函数
- 通过协程实现并发
- 导入 .h 头文件并直接使用 C 语言的类型、变量和函数
- 导出要依赖 C 语言代码的函数,变量和类型,自动生成 .h 头文件
- 可选类型而非空指针
- 交叉编译是主要用例
此版本的开发周期历时 6 个月,有 122 名不同贡献者提交了 2527 次 commit。
Zig 0.6.0 保持与 LLVM 一致的更新节奏,已将 LLVM 升级到最新版 LLVM 10,并且不再兼容 LLVM 9。新的 LLVM 版本主要是修复 Bug,尤其是对 ARM 支持、MIPS 支持、RISC-V 支持等方面的错误修复。
这也是第一个将 Zig 的所有补丁合并到上游的 LLD 版本。因此,Zig 的源码库中不再包含 LLD 源码的 fork,也就意味着源码的 tarball zig-0.6.0.tar.xz 比 zig-0.5.0.tar.xz 小了 0.5MiB,因为删除 LLD 源码比这个发布周期中所有其他的改动加起来还节省了更多的空间。请注意,新的 Bootstrap Tarball 捆绑了 Zig 编译器的所有依赖项,其中包括 LLVM、LLD 和 Clang。
语言特性层面的主要更新包括:
- 类型强制语法(Type Coercion Syntax)
- Sentinel-Terminated Pointers
- Remove Array-to-Reference Type Coercion
- Numerical Comparisons
- Anonymous Struct Literals
- Tuples Added, Var Args Removed
- SIMD
- @newStackCall Removed
- @call
- callconv
- Non-Exhaustive Enums
- Unicode Character Literals
详细内容查看发布公告 https://ziglang.org/download/0.6.0/release-notes.html