202211 | 0.10 横空出世
0.10.0 Release Notes
本月最大的事情就是 0.10 版本发布了,主要功能就是 self-hosted compiler,也称为『自举』,即可以用 Zig 来写 Zig 编译器,自举之所以对于一门语言如此重要,主要在于,这说明了该语言可以处理足够复杂的系统,不再只是玩具而已。编译的提升:
- Wall Clock Time: 43 seconds to 40 seconds (7% faster)
- Peak RSS: 9.6 GiB to 2.8 GiB (3.5x less memory used)
赶紧升级吧,少年!
zigcc 中文社区微信群
欢迎喜欢 Zig 的小伙伴加入!
观点/教程
- Wasmer 3.0 使用 Zig 进行跨平台编译 · Discussion #35 · zigcc/forum
- Easy Interfaces with Zig 0.10.0。由于 Zig 中没有 interface/trait 这种抽象类型,作者这里通过 0.10 提供的一个新功能(inline else)来实现类似效果:
|
|
My hopes and dreams for ‘zig test’。作者对
zig test
一些不满意的地方,这里面有个词比较有意思:paper-cuts,中文直接翻译就是“被纸张划的伤痕”,在软件领域特指:影响用户体验的小缺陷,虽然不严重,但是比较烦人。Writing a SQL database, take two: Zig and RocksDB 。本文作者是 TigerBeetle 的联合创始人 Phil,这篇文章主要演示了基于 Zig 做 RocksDB 的 binding,并在此基础上,增加 SQL 层,实现简单的 CRUD 功能。代码地址:eatonphil/zigrocks
Debugging undefined behavior caught by Zig。Hexops 官博,本文讨论了一个有意思的问题:UBSan 的一个 bug 导致 Mach engine 的测试失败,更准确说是 UBSan 需要内存地址对齐来工作,但是现在主流的处理器(x86、ARM、RISC-V 等)都可以处理非对齐的地址访问。
Using rr to quickly debug memory corruption,本文作者通过使用 rr 这个工具来排查内存损坏的问题
A Programmer-Friendly I/O Abstraction Over io_uring and kqueue。 TigerBeetle 官博,HN 讨论
How zig-spoon (and lots of coffee) helped me sort thousands of pictures。本文作者通过 spoon 这个库开发了一个帮助自己进行图片打标的 UI 工具,
项目/工具
- Zig 程序设计语言中文手册 GitHub 用户 @sxwangzhiwen 制作,论坛相关讨论。
- dantecatalfamo/zig-dns: Experimental DNS library implemented in zig
- Neovim Zig Plugin written in Lua
- trace.zig: A small and simple tracing client library,项目地址:Zig tracing / trace.zig
- Zig Support plugin for IntelliJ and CLion version 0.2.0 released