Zig 禁止 AI 貢獻:貢獻者撲克框架與開源維護的理性計算
kristoff.it(Loris Cro, Zig Software Foundation)· 2026-04-29
Zig 語言核心貢獻者 Loris Cro 在 2026 年 4 月以「貢獻者撲克」框架解釋 Zig 明確禁止 AI 生成程式碼貢獻的理由,以及這個決策背後的開源經濟學。
貢獻者撲克框架
Cro 將開源維護比喻為撲克牌局:「你押注的是人,而非牌。」維護者接受一個新貢獻者的 PR,表面上是審查一份程式碼,實質上是在押注這個人未來成為核心貢獻者的潛力。即使自己直接實作某個功能比審查 PR 更快,接受外部 PR 仍可能是理性的——因為在此過程中建立了關係與信任,為後續更大規模的合作奠基。
Zig 的歷史佐證了這個理論:對 Ryan Liptak(Windows 資源指令碼)和 Frank Denis(密碼學)等人的早期投資,帶來了後續無法替代的深度貢獻。
AI 貢獻破壞模型的三個機制
- 幻覺與無效提交:浪費維護者的審查週期而無相應回報,LLM 生成的 PR 往往含有不存在的 API 呼叫或錯誤的假設
- 違反漸進式信任建立的超大 PR:初次貢獻者提交 10,000+ 行的 LLM 輸出,跳過了建立信任所必需的小規模迭代互動
- 欺騙性實踐:部分貢獻者宣稱未使用 LLM,但 PR 中出現 AI 典型錯誤模式(hallucination artifacts),令維護者難以信任
理性計算結論
Cro 的核心論點:「從貢獻者撲克的角度,在有人類替代方案的情況下,押注 LLM 使用者根本不理性。」AI 貢獻者無法參與需要相互問責與共享問題空間知識的迭代關係。這個限制不是意識形態立場,而是對維護者有限資源的效用最大化。
SIMD Quad 演算法超越二元搜尋:四元插值搜尋 + SIMD 並行比較,Intel/Apple Silicon 均 2× 加速
lemire.me(Daniel Lemire)· 2026-04-27
Daniel Lemire 展示了一個稱為「SIMD Quad」的演算法,在有序 16 位整數陣列中的搜尋效能全面超越傳統二元搜尋,適用於暖快取與冷快取場景,並已在 Intel 與 Apple Silicon 上驗證。
演算法設計
SIMD Quad 採用兩階段分層搜尋:
- 四元插值搜尋(Quaternary interpolation search):對陣列 block 邊界使用插值定位目標 block,每次迭代排除 3/4 的搜尋空間(vs. 二元搜尋的 1/2)
- SIMD 並行比較:在找到目標 block(16 個 16 位整數)後,使用單條 SIMD 指令同時比較全部 16 個元素與目標值
ARM(NEON)和 x86-64(SSE2/AVX2)均支援以單條指令比較 8 個 16 位整數,使 block 掃描成為 O(1) 操作。
基準測試結果
| 硬體 | 暖快取 | 冷快取 |
|---|---|---|
| Intel Emerald Rapids + GCC | SIMD Quad > 2× 快 | SIMD Quad 輕微優勢 |
| Apple M4 + LLVM | SIMD Quad 輕微優勢 | SIMD Quad > 2× 快 |
在所有測試條件下,SIMD Quad 均優於二元搜尋。暖快取下,在 Intel 上有更顯著優勢;冷快取下,M4 上的優勢更大。
硬體層面的雙重利用
SIMD Quad 同時利用兩種處理器能力:資料並行指令(SIMD)一次比較多個值;記憶體層級並行(Memory-Level Parallelism)四元搜尋的多個 prefetch 請求可被硬體並行處理,比二元搜尋的依序存取模式更有效率。
函數式程式設計者應看看 Zig:comptime 作為型別層級程式設計,顯式配置器作為效果系統
pure-systems.org · 2026-04-29
一篇寫給 Haskell 與 ML 背景工程師的文章,論述 Zig 的 comptime 機制如何以不同的方式實現函數式語言中型別層級程式設計的類似能力。
comptime 的核心概念
Zig 沒有泛型語法(generics syntax),而是讓一般 Zig 程式碼在編譯期執行。函式可接受 comptime 參數,包括型別本身,在編譯期計算並回傳型別:
fn Stack(comptime T: type) type {
return struct {
items: []T,
// ...
};
}這在語義上等同於 Haskell 的型別類別(typeclasses)或 ML 的 functor,但沒有獨立的型別語言層次——編譯期與執行期使用同一套程式語言規則。
與 Haskell Typeclass 的差異
Haskell 的 typeclass 透過 dictionary passing 在執行期傳遞行為字典(一種隱式多型);Zig 的 comptime 在編譯期完全消解多型,不產生執行期分派成本。Haskell 的方式更具表達力但有運行時成本;Zig 的方式是零成本抽象(zero-cost abstraction)但靈活性較低。
顯式配置器作為效果系統
Zig 要求所有分配記憶體的函式接受明確的 std.mem.Allocator 參數,無隱式全域配置器。作者指出這與函數式程式設計的效果系統(effect system)有結構性相似——副作用(記憶體分配)透過型別系統明確傳遞,而非隱藏在全域狀態中,讓程式碼的資源語義對編譯器和讀者都可見。
原始來源:pure-systems.org — Functional Programmers need to take a look at Zig
Amber Lang 0.6.0:多 Shell 目標、遞迴函式、Union 型別、型別安全 HTTP fetch() 內建函式
Amber Lang · 2026-04-30
Amber 0.6.0 是一個帶有靜態型別與編譯時安全檢查的 Shell 腳本語言,此版本新增多 Shell 編譯目標與多項語言特性。
多 Shell 編譯目標
Amber 0.6.0 透過 --target 旗標支援編譯至多種 Shell:Zsh、Ksh、Bash 3.2(與 Bash 4+ 分開)、Modern Bash(預設)。這讓 Amber 腳本可以部署至不同的 Unix 環境,同時保留型別安全的開發體驗。
語言特性新增
- 遞迴函式:允許函式直接或間接呼叫自身,支援分治演算法等遞迴模式
- Union 型別:函式參數可接受多種不同型別,類似 TypeScript 的
string | number - 陣列解構賦值:支援宣告與重新賦值場景的陣列解構
- 空陣列型別推斷(
[]):根據使用上下文自動推斷型別 - 跨模組
pub變數:模組間可共享公開變數
安全改進
控制流感知的三元表達式驗證(ternary control-flow-aware validation)、嚴格的 failable 函式驗證(必須使用 ? 語法處理)、執行時陣列越界偵測、未使用變數警告。
新內建函式
HTTP fetch() 支援 GET/POST/PUT/DELETE;shellname()/shellversion();檔案 glob(file_glob()/file_glob_all());process 管理(pgrep()/pkill()/kill()/disown()/await()/lock())。