Zig 语言中文社区

202411

2024-12-01

ZigCC

TOC

观点/教程

Why am I writing a JavaScript toolchain in Zig?

JAM 作者写的一篇文章,分析里市面上现有的 JS 工具链(bundler、formatter、linter 等),虽然已经很好用,但是不够快。下面是他举的几个例子:

Advent of Code in Zig | Loris Cro’s Blog

一年一度的 AoC 又到了,这篇文章里给出了一些使用的技巧来帮助大家用 Zig 来解决 AoC 问题。

更重要的,作者最后提到 AoC 可能不是学习 Zig 的最好方式:

虽然 AoC 非常有趣,但它并不是练习软件工程的方法。 每个 AoC 练习都要求你找到一个问题的解决方案,虽然你需要编写一个程序来解决这个问题, 但你的程序将是一个只需运行一次(一次正确)的一次性脚本。

当你的软件需要稳健、优化和可维护时,Zig 就会大显身手,而这些对于 AoC 来说都不重要。

因此,请注意,虽然肯定能用 Zig 解决 AoC 问题,而且 Zig 的某些功能甚至能帮助您取得比其他语言更快的进展,但它最终还是针对软件工程进行了优化,而这并不是您在 AoC 中要做的事情。

Zig and Emulators

Zig Reproduced Without Binaries

一个很有趣的实验,在 0.10 版本中,Zig 编译器实现了自举,即可以用老版本的 Zig 来编译 Zig 源码,生成最新的 Zig 二进制。这里重新复习一下这个复杂的流程:

之所以复杂,问题在于老版本的 Zig 从哪里来呢?对于 Zig 来说就是 zig1.wasm,它是用没自举前的 Zig,利用 LLVM 后端,以 wasm32-wasi 为目标生成的二进制文件。 为了保证足够小,这里面只保留了 C 后端,这样就得到了一个小到可以放到代码仓库中的 Zig 编译器。这篇文章就是证明这个文件没有被私自篡改过!

细节可以参考:

项目/工具

Builds (Zig) - GoReleaser
版本发布工具 GoReleaser 支持了 Zig

FOLLGAD/zig-ai: OpenAI SDK with streaming support

A bunch of links to blog posts, articles, videos, etc for learning Zig

Super-ZIG/cli: Easy command line interface in ZIG.

deckarep/zigualizer
Zigualizer: A music visualizer built with Zig, powered by the FFT algorithm.

freref/fancy-cat
PDF reader for terminal emulators using the Kitty image protocol

Dr-Nekoma/lyceum
An MMO game written in Erlang (+ PostgreSQL) + Zig (+ Raylib)

Zig 语言更新

202410 | 向 Zig 软件基金会认捐 30 万美元