Bend 語言發布 – 具備 AI 防護法則的高速 CPU/GPU 編譯器

Bend 聲稱提供的功能

Bend 承諾帶來三大核心優勢:

  1. 原生速度執行 – 編譯後的二進位檔案在單個 CPU 核心上運行速度幾乎與 C 語言相當,而在 16 核心或 GPU 上則可快達 124 倍。
  2. 即時證明檢查 – 其型別檢查器同時也是證明檢查器,能在不到一秒的時間內驗證使用者定義的法則 (laws),速度遠快於在類似程式碼庫上使用 Isabelle、Agda、Lean 或 Coq。
  3. 自動平行化 – 無需編寫顯式的執行緒或核心程式碼;執行時期會自動將工作分配到所有可用的 CPU 或 GPU 核心,並自動合併結果。

這些聲明在 Bend 網站上透過基準測試(如生命遊戲、pow2 等)以及一個簡短的演示進行了展示,該演示利用「獲勝是不可能的」這一法則成功阻擋了一個由 AI 生成的錯誤。


高速編譯與執行

Bend 可編譯為原生機器碼。在 Apple M4 Max 處理器上,報告的執行時間如下:

  • 1 核心: 7.80 s (≈1× C 語言的 6.78 s)
  • 16 核心: 0.65 s (≈12× 加速)
  • GPU: 0.06 s (≈124× 加速)

該網站將這些數據與 TypeScript (18.8 s)、Lean (13.8 s) 和 C (6.78 s) 進行了比較。GPU 基準測試在 4,096 個 GPU 核心上運行相同的二進位檔案,展示了該執行時期在無需使用者編寫核心程式碼的情況下,利用大規模平行運算的能力。


用於阻擋 AI 錯誤的基於證明的「法則」

Bend 引入了 LAWS.bend,這是一個開發者用來宣告絕不能違反的不變量 (invariants) 的檔案。當 AI 代理(例如 Claude)生成程式碼時,編譯器會根據宣告的法則檢查生成的 PROOF.bend。如果法則被破壞,編譯將失敗,AI 必須重試,直到產生出符合該法則的證明為止。

法則範例(無獲勝序列):

# LAW: no move sequence leads to victory.
law you_cant_win:
  for moves: List<Move>
    board = replay(start(), moves)
    is_won(board) == False{}

必須在 PROOF.bend 中提供相應的證明:

# PROOF: you_cant_win holds.
def Laws.you_cant_win(moves):
  # ... AI‑generated proof

系統將法則視為一種型別;任何會違反該法則的程式碼都會在編譯時被拒絕。


平行執行時期 (BendRT)

BendRT 是一個自動將純函數呼叫分配到可用核心上的執行時期。該語言不需要顯式的執行緒建立、鎖定管理或編寫 CUDA 核心。工作會被拆分、平行執行,並透明地合併結果。演示顯示 pow2.bend 程式只需一個指令即可在 4,096 個 GPU 核心上運行。


Hacker News 上的社群反應

讚賞與好奇

  • 使用者讚賞將快速原生編譯與針對 AI 生成程式碼的形式化驗證相結合的創新做法。
  • 有些人看到了在排程或合約執行等領域進行基於不變量開發的潛力。

懷疑與實際考量

  • 證明工作量: 幾位評論者指出,編寫必要的法則和證明可能非常耗時。一位使用者報告稱,為了完成一個簡單的日曆 cron 作業,需要約 60 行基本的算術引理。
  • 工具缺口: 人們質疑該系統如何與現有函式庫整合、證明是否可以在專案間重複使用,以及如何處理缺失或錯誤的法則。
  • 儲存庫透明度: GitHub 儲存庫顯示只有一個最近的提交,且沒有可見的提交歷史,這引發了對專案成熟度和可信度的懷疑。
  • 效能限制: 一些觀察者將 Bend 的 GPU 效能與 Futhark 等專業語言進行比較,並指出平衡的遞迴工作負載適合 Bend,而密集的陣列核心可能表現較差。
  • 強制保證: 使用者詢問是什麼阻止了 LLM 直接忽略法則;答案是編譯器會拒絕任何未提供有效證明的生成程式碼,但仍需引導 AI 產生此類證明。

值得注意的引言

"LAWS.bend 是由證明支援的 AGENTS.md。『不出錯』現在已經可以進行型別檢查了。" – Bend 網站

"我最想要的法則:『沒有兩個輸出計畫重疊。』我沒有說明它。它需要將 collapse 輸入的排序性作為假設……這才是衡量『原則上可證明』與『今天下午就能證明』之間差距的誠實標準。" – svachalek

"2 萬顆星,一小時前只有一個提交?到底犧牲了多少隻山羊?" – plastic041 (對儲存庫歷史表示擔憂)


如何開始

  1. 安裝(使用單一指令碼):
    curl -fsSL https://bend-lang.com/install.sh | sh
    
  2. 將指引加入 AGENTS.md,以便 AI 代理知道在提交前執行指引、使用法則並呼叫證明檢查器。
  3. 為關鍵不變量編寫法則,然後讓 AI 生成程式碼及相應的證明。
  4. 執行編譯後的二進位檔案(在 CPU 或 GPU 上);執行時期會自動進行平行化。

開放性問題與未來工作

  • 證明的可擴展性: Bend 如何處理枚舉所有移動序列不可行的極大狀態空間?
  • 互操作性: Bend 是否會提供 FFI 綁定以呼叫現有的 C/Rust 函式庫,或提供將 Bend 程式碼嵌入大型專案的方法?
  • 工具成熟度: 社群要求提供變更日誌、版本化發布以及更清晰的提交歷史以建立信任。
  • 基準測試: 獨立的效能測量(例如在 Bells 基準測試套件上)將有助於驗證所聲稱的加速效果。

參考資料

  • 指南: 儲存庫中的 GUIDE.md(完整的語言規範)。
  • BendTT 論文: 該語言底層的仿射依賴型別理論。
  • BendRT 論文: CPU 和 GPU 平行執行時期的說明。

Bend 是一個非常早期的專案;請預期會有錯誤並進行快速迭代。歡迎透過 GitHub 問題追蹤器提交貢獻和問題報告。

Sources

相關

  • Dispatch
  • Dispatch
  • 專案
  • 專案
  • Dispatch