202309 | Bun 正式发布 1.0
重大事件
Bounties Damage Open Source Projects
在 2023-09-11 号,Wasmerio CEO 创建了 Support WASIX · Issue #17115,表示想赞助 Zig 开发者,让其更好地支持 WASIX 平台。
Andrew 与 Loris 在这篇文章中主要阐述了这么做为什么是伤害社区的行为:
- 助长竞争,牺牲合作
- 在软件开发的商业管理方面,悬赏是一种极为简单的方法,这可能让开发者关注短期效益,忽视长期利益,比如维护成本。
这篇文章其实很符合 Andrew 的理念,不想让过多的热钱涌入 Zig 社区,他更想保证 Zig 的独立性,这也是他们创办 Software You Can Love 的初衷。
Bun 1.0
面包终于出炉了!Bun 毫无疑问是 Zig 的明星项目,它在 2023-09-08 正式发布了 1.0 版本,这对开发者来说可能没什么太大的区别,毕竟就只是个 tag 而已,但是对于广大的用户来说,这无疑意味着可以在生产环境中去使用了。
Bun 并不简单的是个 Node.js 替代品,而是大而全的工具链:
- Transpilers,可以直接运行
js
jsx
mjs
ts
tsx
cjs
文件 - Bundlers,可以直接替代 webpack、esbuild 等工具
- Package managers,兼容 npm,识别
package.json
格式,可以替代:npm、yarn、 - Testing libraries,内置 test runner,支持快照测试、模拟和代码覆盖,可以替代:jest、ts-test
观点/教程
- Kiesel Devlog #1: Now passing 25% of test262
- 另一个 devlog,作者写了一个 JS engine 用来学习 Zig,该作者是 SerenityOS 系统中,Ladybird 浏览器 JS 引擎 LibJS 的作者
- Talk: Introducing Ghostty and Some Useful Zig Patterns
Mitchell Hashimoto 在这篇文章里分享了开发终端 Ghostty 时用的 Zig 常用模式。计划在 2024 年发布 1.0
- Comptime Interface
- Comptime Data Table Generation
- Comptime Type Generation
- B 站视频地址
- Learning Zig
一个 Zig 教程,写的非常易懂,推荐每个 Zig 爱好者阅读。目录
- Language Overview - Part 1
- Language Overview - Part 2
- Style guide
- Pointers
- Stack Memory
- Heap Memory & Allocators
- Generics
- Coding In Zig
- Conclusion
- Debugging a Zig Test Failure
- 非常硬核的文章,作者为了调查一个文件名太长的错误,使用了 DTrace 来探测内核函数的调用,对平时的问题排查非常有帮助
- Intercepting and modifying Linux system calls with ptrace
- 用 Zig 来封装 Dtrace,用于跟踪子进程的 syscall
- Managing Zig Versions with zvm: A Technical Dive
- 另一个 Zig 版本管理工具,不过这次是用 Zig 写的了
- When Zig Outshines Rust – Memory Efficient Enum Arrays
- 一个图文并茂的文章,重点推荐。作者这里通过分析 array of struct 的内存浪费情况,介绍了 Rust/Zig 中不同的解法,Zig 由于有强大的编译期元编程能力,能够更方便的实现 SoA(struct of arrays)
项目/工具
- ZigBrains
- A multifunctional Zig Programming Language plugin for the IDEA platform.
- fulcrum-so/ziggy-pydust
- A toolkit for building Python extensions in Zig.
- zig-curl
- Zig bindings to libcurl.
- darkr4y/OffensiveZig
- Some attempts at using Zig in penetration testing.
- Announcing Zig support for Wasm Workers Server
- Wasm Workers Server 是一个用于开发 serverless 应用的框架,近期增加了对 Zig 的支持,使用文档。
- dantecatalfamo/wireguard
- Command line wireguard configuration manager.
- iacore/libredo
- Reactive signal/Dependency tracking library in Zig.
- buzz-language/buzz
- A small/lightweight statically typed scripting language
Zig 语言更新
- Aro translate
- 用 Zig 写的 Aro 来替换 clang,来实现
translate-c
的功能