2022-12-10
本月最大的事情就是 0.10 版本发布了,主要功能就是 self-hosted compiler,也称为『自举』,即可以用 Zig 来写 Zig 编译器,自举之所以对于一门语言如此重要,主要在于,这说明了该语言可以处理足够复杂的系统,不再只是玩具而已。编译的提升:
赶紧升级吧,少年!
欢迎喜欢 Zig 的小伙伴加入! {{< figure src=“https://github.com/zigcc/.github/raw/main/weixin.jpg” width=“200” title=“ZigCC 微信群二维码” >}}
const Animal = union(enum){
cat: Cat,
dog: Dog,
snake: Snake,
pub fn talk(self: Animal) void {
switch (self) {
.snake => std.debug.print("Ssss~~~", .{}),
inline else => |case| case.talk(),
}
}
};
zig test
一些不满意的地方,这里面有个词比较有意思:paper-cuts,中文直接翻译就是“被纸张划的伤痕”,在软件领域特指:影响用户体验的小缺陷,虽然不严重,但是比较烦人。[视频][memory safety in c++, zig, & rust (part 1) - youtube](https://www.youtube.com/watch?v=qeiRGbYCD-0)
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 工具,