Zig 0.5.0 发布了。
Zig 是一门通用编程语言,专为稳定性、可维护性和性能而设计,追求替代 C 语言在系统编程上的最佳地位。Zig 具有以下值得关注的特性:
0.5.0 版本经过 6 个月打磨,包括了 1541 次 commit,带来了许多新的内容。
Zig 跟随 LLVM 的步伐,前几天 LLVM 9 发布了,所以 Zig 目前升级到了 LLVM 9,不再兼容 LLVM 8。值得注意的是,这意味着 Zig 现在支持 RISC-V。同时 Zig 还可以以 Emscripten 为编译目标操作系统。Emscripten 是一个独特的 LLVM 后端,它可以将 LLVM 字节码编译成 JavaScript(asm.js),往上追溯其实也就是通过 Clang 将 C 和 C++ 代码编译成 JavaScript(asm.js),可以大大简化现有代码在 Web 时代的重用。除了 asm.js,Emscripten 还支持 WebAssembly 这一更加先进的 Web 技术,通过与 asm.js 类似的机制,Emscripten 可以生成 WASM 二进制字节码。
目前 Emscripten 还不能自托管,之后可行的情况下,可以使用 WebAssembly 将其作为浏览器中的 Zig 沙箱选项。
语言特性层面的主要更新包括:
@typeInfo(Slice).Pointer.child
。c_void
指针。*[N]T
隐式 cast 到[*c]T
。anyerror
不再作为关键字。comptime_int
现在隐式 cast 为comptime_float
。noinline
函数声明中添加了关键字。enum
默认设置为u0
,comptime_int
仍允许作为显式枚举标签类型。完整更新内容查看发布公告: