202304 | 首次闯入 Tiobe 前 50

重大事件

在 2023 四月份的 Tiobe 指数上,Zig 排名 46,尽管 Loris 发推表示这个数字对 Zig 来说没什么实际意义,但对于多数吃瓜群众来说,这还是十分让人鼓舞的。

For people who heard about Zig just recently:

  • Zig is not 2x faster than Rust, despite what recent benchmarks might lead you to believe.
  • You won't find many Zig jobs for a few years still, despite the Tiobe stuff.
  • Don't join to the Zig community just to rant about Rust.

— Loris Cro ⚡ (@croloris) April 13, 2023

观点/教程

When should I use an UNTAGGED Union?
Loris 的文章,作者利用访问 untagged union 的未赋值字段是一种 safety-checked UB 的行为,来解决数组成员被重新赋值过的情况。
Data driven polymorphism
作者用 Zig 来实现 Clojure 语言中的 defmulti,以达到『动态派发』的效果
Testing and Files as Structs
作者演示了一个文件作为 struct 的效果,这样导入时就可以用 const Node = @import("Node.zig") 的方式了。
Sneaky Error Payloads
一种在错误中携带上下文信息的方式,上一期的月报也有类似讨论。 Errors and Zig
Regular Expressions in Zig
由于 Zig 现在不支持 C 中的 bitfields,因此无法直接使用 Posix 的 regex.h ,这篇文章介绍了一种解决方法。
Zig Build System
对 Zig build 系统的介绍
Reasonable Bootstrap
探讨了编译器如何实现自举的方式
Data Oriented Parallel Value Interner
Matklad 探讨了如何实现一个高性能的 Interner
TigerStyle! (Or How To Design Safer Systems in Less Time)
Systems Distributed 23 视频。B 站链接
What Is a Database?
Systems Distributed 23 视频,B 站链接,作者博客:Scattered Thoughts

项目/工具

Coming Soon to a Zig Near You: HTTP Client
对标准库 std.http 的介绍。
Zig Bits 0x3: Mastering project management in Zig
介绍了如何更好地维护一个 Zig 项目,包括:新增依赖、增加测试覆盖率、增加文档、基于 GitHub Action 做持续集成等。
ityonemo/zigler
zig nifs in elixir
Ziggifying Kilo
使用 Zig 重写 kilo 编辑器,目前仅能在 Linux 上运行
jakubgiesler/VecZig
Vector implementation in Zig
b0bleet/zvisor
Zvisor is an open-source hypervisor written in the Zig programming language, which provides a modern and efficient approach to systems programming.