|
1 |
| -#+TITLE: 202404 |
| 1 | +#+TITLE: 202404 | Zig 0.12.0 正式释出 |
2 | 2 | #+DATE: 2024-04-18T21:59:49+0800
|
3 |
| -#+LASTMOD: 2024-04-28T10:40:58+0800 |
4 |
| -#+DRAFT: true |
| 3 | +#+LASTMOD: 2024-05-02T22:19:23+0800 |
5 | 4 | * 重大事件
|
| 5 | +千呼万唤的 0.12.0 版本终于 2024-04-20 正式释出了!这次版本历时 8 个月,有 268 位贡献者,一共进行了 3688 次提交!社区内的一些讨论:[[https://news.ycombinator.com/item?id=40096176][Hacker News]]、[[https://lobste.rs/s/fa4svu][Lobsters]]。 |
| 6 | +这是它的 [[https://ziglang.org/download/0.12.0/release-notes.html][Release notes]]。ZigCC 对这个文档进行了翻译、整理,方便大家阅读: |
| 7 | +- [[https://course.ziglang.cc/update/upgrade-0.12.0][0.12.0 升级指南]] |
| 8 | +- [[https://course.ziglang.cc/update/0.12.0-description][0.12.0 版本说明]] |
| 9 | + |
| 10 | +并且还在 2024-04-27 举行了一次线上的 meetup 来庆祝这次发布,这是会议的总结:[[https://ziglang.cc/news/2024/04/27/release-party-review/][0.12.0 Release Party 回顾]]。 |
| 11 | + |
| 12 | +0.12.0 这个版本,对用户来说,最重大的变更就是构建系统的稳定了,这对于 Zig 生态的发展是十分关键的一步,试想一个项目用到的依赖之间版本不兼容, |
| 13 | +这是十分痛苦的事情,毫无疑问这是阻碍 Zig 生态发生的绊脚石,没有之一。好在这一切都在 0.12 这个版本解决了,用户可以基于 Step |
| 14 | +构成的有向无环图来编译自己的项目,不需要在折腾 CMake、Makefile、Vcpkg、Git submodule 等机制,所有的依赖使用 zon 来管理即可。 |
| 15 | +读者如果对 Zig 构建系统还不熟悉,可以参考: |
| 16 | +- 官方文档:[[https://ziglang.org/learn/build-system/][Zig Build System]] |
| 17 | +- Zig 升级: [[https://course.ziglang.cc/engineering/build-system][构建系统]] |
| 18 | + |
| 19 | +期待一年后 Zig 的生态! |
6 | 20 | * 观点/教程
|
7 | 21 | - [[https://github.com/zigcc/forum/issues/112][Zig 中任意精度整数用途与实现]] :: 由于 CPU 在访问内存时,一般都会有对齐的要求,对于这种非常规的数字,在内存中的地址会是怎样的呢?可以做一个简单的实验:
|
8 | 22 |
|
@@ -47,5 +61,16 @@ u3@16b196367-u2@16b196367
|
47 | 61 |
|
48 | 62 | 通过前三个输出可以知道,每个 u3 实际占用一个字节,但当用在 packed 结构中,就会变成 3 个 bit。其中的 11001 就是字段 a b 混合后的值,且 a 是三位,b 是高两位。
|
49 | 63 | - [[https://procmarco.com/blog/learnings-from-building-a-db-in-zig/][Learnings From Building a DB in Zig]] :: 作者分享了在一次 3 天的 Hackthon 中,使用 Zig 开发一个数据库的经历。
|
| 64 | +- [[https://zig.news/michalsieron/buildzigzon-dependency-hashes-47kj][build.zig.zon dependency hashes]] :: 讲解了 zon 中依赖的 hash 是怎么计算出来的 |
| 65 | +- [[https://zig.news/liyu1981/play-with-new-comptime-var-rule-of-zig-0120-333k][play with new comptime var rule of zig 0.12.0]] :: |
| 66 | +- [[https://zig.news/inspectorboat/to-simd-and-beyond-optimizing-a-simple-comparison-routine-1jkf][To SIMD and beyond: Optimizing a simple comparison routine]] :: 作者在这里循序渐进的减少了几种数字比较的技巧,从基本的方案,到 Vector,到最后利用 bit 的特点,来逐步优化,并用 godbolt 查看生成的汇编代码,是一篇不错的文章。 |
| 67 | +- [[https://www.reddit.com/r/Zig/comments/1cc1x2v/documentation_takes_another_step_backwards/][Documentation takes another step backwards : r/Zig]] :: 一个 Reddit 用户对文档的抱怨 |
50 | 68 | * 项目/工具
|
51 |
| -* [[https://github.com/ziglang/zig/pulls?page=1&q=+is%3Aclosed+is%3Apr+closed%3A2024-03-01..2024-04-01][Zig 语言更新]] |
| 69 | +- [[https://github.com/rofrol/zig-companies][rofrol/zig-companies]] :: A list of companies using Zig in production. |
| 70 | +- [[https://github.com/akarpovskii/tuile][akarpovskii/tuile]] :: A Text UI library for Zig |
| 71 | +- [[https://codeberg.org/mntnmntn/zenith][mntnmntn/zenith]] :: A very minimal text editor in Zig,支持 0.12.0 版本 |
| 72 | +- [[https://github.com/chung-leong/zigar][chung-leong/zigar]] :: Enable the use of Zig code in JavaScript project |
| 73 | +- [[https://github.com/jnordwick/zig-string][jnordwick/zig-string]] :: Zig string library that includes small string optimization on the stack |
| 74 | +- [[https://github.com/FalsePattern/ZigBrains][FalsePattern/ZigBrains]] :: Yet another zig language plugin for intellij |
| 75 | + |
| 76 | +* [[https://github.com/ziglang/zig/pulls?page=1&q=+is%3Aclosed+is%3Apr+closed%3A2024-04-01..2024-05-01][Zig 语言更新]] |
0 commit comments