![]()
去年年底,Claude 背后的 Anthropic 收購(gòu)了明星開(kāi)源項(xiàng)目 Bun。當(dāng)時(shí)外界普遍認(rèn)為,這家 AI 公司看中的不僅是一個(gè)每月下載量超過(guò) 700 萬(wàn)次、GitHub 星標(biāo)超過(guò) 9.2 萬(wàn)的 JavaScript 運(yùn)行時(shí),更是一塊驗(yàn)證 AI 編程能力的最佳試驗(yàn)田。
幾個(gè)月后,Bun 交出了一份足以震動(dòng)整個(gè)開(kāi)發(fā)者社區(qū)的成績(jī)單:超過(guò) 100 萬(wàn)行 Rust 代碼、6755 次提交,幾乎全部由 Claude Code 智能體在短短 9 天內(nèi)完成。團(tuán)隊(duì)宣稱,新版本通過(guò)了 99.8% 的測(cè)試,并將多年來(lái)使用的 Zig 實(shí)現(xiàn)整體遷移到了 Rust。
這場(chǎng)“AI 重寫基礎(chǔ)設(shè)施”的壯舉迅速刷屏 Hacker News,也被不少人視為 AI 編程進(jìn)入新階段的重要標(biāo)志。
然而,測(cè)試通過(guò)率接近滿分,是否就意味著代碼真的更安全了?當(dāng)一個(gè)號(hào)稱為了解決內(nèi)存安全問(wèn)題而進(jìn)行的 Rust 重寫項(xiàng)目,最終留下超過(guò)一萬(wàn)個(gè) unsafe 代碼塊時(shí),人們究竟應(yīng)該如何評(píng)價(jià)這次遷移?
近日,開(kāi)發(fā)者 dreamreal 發(fā)表長(zhǎng)文《Bun Has Been Converted to Rust. Now What?》(Bun 全面遷移至 Rust,接下來(lái)會(huì)發(fā)生什么?),從另一個(gè)角度重新審視這場(chǎng)備受追捧的 AI 重構(gòu)實(shí)驗(yàn)。
dreamreal 的這篇文章也沖上了 Hacker News 熱榜,而眾人爭(zhēng)論的焦點(diǎn)早已不再是“AI 能不能寫代碼”,而是一個(gè)更棘手的問(wèn)題:當(dāng) AI 生成代碼的速度遠(yuǎn)遠(yuǎn)超過(guò)人類審查代碼的速度時(shí),我們?cè)撊绾巫C明這些代碼真的值得信任?
來(lái)源:https://bytecode.news/posts/2026/06/bun-has-been-converted-to-rust-now-what
作者 | dreamreal 責(zé)編 | 蘇宓
出品 | CSDN(ID:CSDNnews)
5 月 14 日,一條 PR 被合并進(jìn)運(yùn)行時(shí) Bun 的主分支:超過(guò) 100 萬(wàn)行用 Rust 重寫的代碼、6755 次提交,幾乎全部由 Claude Code 智能體在九天內(nèi)生成完成。
![]()
提供這些智能體的是 Bun 的新東家——Anthropic,它在去年 12 月收購(gòu) Bun。起初,Bun 基于 Zig 語(yǔ)言開(kāi)發(fā)而成。隨著時(shí)間迭代,支撐 Bun 多年的 Zig 語(yǔ)言實(shí)現(xiàn)如今已經(jīng)消失。
Bun 的創(chuàng)建者 Jarred Sumner 分享的一句話——“我們已經(jīng)好幾個(gè)月沒(méi)有親手敲代碼了”,讓原本一次普通的代碼合并,演變成 Hacker News 上一個(gè)獲得 708 分熱度的討論帖,而 PR 本身的點(diǎn)贊和點(diǎn)踩數(shù)量也幾乎各占一半。
![]()
這次 Rust 重寫版本通過(guò)了現(xiàn)有測(cè)試套件 99.8% 的測(cè)試。
現(xiàn)實(shí)來(lái)看,這個(gè)數(shù)字非常驚人,意義也確實(shí)重大,但我們需要準(zhǔn)確理解它究竟說(shuō)明了什么:它只能說(shuō)明,新實(shí)現(xiàn)與舊實(shí)現(xiàn)相比,在運(yùn)行時(shí)對(duì)外暴露的接口行為基本一致,僅此而已。它并不能說(shuō)明新實(shí)現(xiàn)是安全的、更好的,甚至不能說(shuō)明它是優(yōu)秀的。這些都是完全不同的命題。
從基準(zhǔn)測(cè)試來(lái)看,新版本與舊版本相比性能持平甚至略有提升,二進(jìn)制文件體積也縮小了幾兆字節(jié)(例如 Linux x64 平臺(tái)上,原本約為 93MB)。如果故事到這里結(jié)束,那其實(shí)沒(méi)什么可討論的——我想這可以算是一次“成功的合并”,畢竟在不損失測(cè)試驗(yàn)證結(jié)果的前提下,“更小”和“更快”顯然都是優(yōu)點(diǎn)。
但問(wèn)題在于,Bun 團(tuán)隊(duì)公開(kāi)給出的重寫理由并不是這些。這意味著,事情可能比大家想象得更復(fù)雜。
許多人被 Rust 本身,以及“LLM 是否真的能完成這種規(guī)模重寫”的話題所吸引,從而忽略了更值得思考的問(wèn)題。
![]()
重寫百萬(wàn)行代碼,官方給出的理由是為了“安全性”
Jarred Sumner 一直強(qiáng)調(diào),這次遷移的動(dòng)機(jī)并不是為了提升性能。
過(guò)去這些年里,Zig 代碼庫(kù)讓團(tuán)隊(duì)花費(fèi)了大量時(shí)間去調(diào)試內(nèi)存相關(guān)問(wèn)題,比如釋放后使用、重復(fù)釋放,以及各種常見(jiàn)的內(nèi)存管理錯(cuò)誤。而遷移到 Rust 的核心理由,是借助編譯器提供的內(nèi)存安全保障。
換句話說(shuō),把 Zig、C、C++ 等語(yǔ)言需要程序員自行保證正確性的那類問(wèn)題,在編譯階段就直接發(fā)現(xiàn)并阻止。
這是一個(gè)合理且值得尊重的遷移動(dòng)機(jī)。事實(shí)上,這也是許多大型系統(tǒng)項(xiàng)目轉(zhuǎn)向 Rust 時(shí)最常提到的原因。
但是,這次重寫后的代碼中,我們發(fā)現(xiàn)分布在 700 多個(gè)文件里的 unsafe 代碼塊超過(guò)了一萬(wàn)個(gè)。
這是一個(gè)什么樣的概念?簡(jiǎn)單說(shuō)明一下,同樣來(lái)自這一生態(tài)領(lǐng)域、體量也大致相當(dāng)?shù)?Rust 項(xiàng)目 uv,整個(gè)項(xiàng)目中只有 73 個(gè) unsafe 塊。所以這并不是數(shù)量級(jí)上的小差異,而是整整相差兩個(gè)數(shù)量級(jí)。而這一結(jié)果,恰恰來(lái)自 Bun 團(tuán)隊(duì)所采用的遷移策略。
Bun 團(tuán)隊(duì)發(fā)布的遷移指南明確要求 Agent 盡可能忠實(shí)地移植 Zig 代碼——保持相同的架構(gòu)、相同的數(shù)據(jù)結(jié)構(gòu),逐文件進(jìn)行轉(zhuǎn)換。
但一個(gè)依賴手動(dòng)內(nèi)存管理的實(shí)現(xiàn),在被“忠實(shí)移植”之后,并不會(huì)自動(dòng)變成內(nèi)存安全的代碼。它只是變成了一份披著 Rust 外衣的手動(dòng)內(nèi)存管理實(shí)現(xiàn)。
每當(dāng)原始 Zig 代碼中的邏輯無(wú)法通過(guò) Rust 借用檢查器驗(yàn)證時(shí),遷移過(guò)程就會(huì)使用 unsafe 來(lái)繞過(guò)限制。而借用檢查器恰恰會(huì)在這些地方失去作用——也正是在這些地方,它原本最應(yīng)該發(fā)揮價(jià)值。
開(kāi)發(fā)者 Todd Smith 曾向我指出,其實(shí)事情未必一定會(huì)發(fā)展成這樣。他們完全可以提前設(shè)置約束,例如明確規(guī)定“禁止使用 unsafe”,甚至通過(guò) Git 的 pre-commit hook 在提交前強(qiáng)制檢查。
在這樣的限制下,一個(gè)足夠優(yōu)秀的大語(yǔ)言模型理論上會(huì)尋找其他實(shí)現(xiàn)方式,在遷移過(guò)程中逐步引入真正的內(nèi)存安全機(jī)制。當(dāng)然,即便如此,也仍然需要大量人工審查。而正如 Todd 所說(shuō)的那樣,這本身就已經(jīng)構(gòu)成了一個(gè)充分理由:不要輕易嘗試這種遷移方式。
因此,99.8% 的測(cè)試通過(guò)率與超過(guò) 1 萬(wàn)個(gè) unsafe 引用之間,其實(shí)并不存在任何矛盾。它們本質(zhì)上是在描述同一件事。
測(cè)試通過(guò)率如此之高,是因?yàn)檫@次遷移足夠忠實(shí);unsafe 數(shù)量如此之多,同樣也是因?yàn)檫@次遷移足夠忠實(shí)。“忠實(shí)還原”是目標(biāo),而這個(gè)目標(biāo)確實(shí)實(shí)現(xiàn)了。
但沒(méi)有實(shí)現(xiàn)(也是這種“忠實(shí)遷移”本身無(wú)法實(shí)現(xiàn))的是,那項(xiàng)原本被用來(lái)作為遷移動(dòng)機(jī)的安全性承諾。
你可以得到一個(gè)忠實(shí)的移植版本,也可以得到一份符合 Rust 慣用寫法、真正安全的 Rust 代碼。前者是逐文件翻譯的 LLM 最容易生成的結(jié)果;后者才是“內(nèi)存安全”這一論點(diǎn)所承諾的東西。
這兩者并不是同一個(gè)產(chǎn)物。而測(cè)試套件無(wú)法區(qū)分它們,因?yàn)閺耐獠拷涌谛袨閬?lái)看,兩者完全等價(jià);至于底層實(shí)現(xiàn)是否真正安全、內(nèi)存是否得到可靠保障,僅靠行為測(cè)試是無(wú)法判斷的。
CSDN 6 月寵粉福利|開(kāi)發(fā)者“神裝”補(bǔ)給站
200 小時(shí) GPU 算力免費(fèi)領(lǐng)
瑞幸咖啡/肯德基早餐/下午茶等能量套餐任選其一
入群還可每月定期抽取旗艦顯卡、AI PC 等極客神裝
領(lǐng)取地址:https://s.csdn.cn/4nPsOp
![]()
這并不是一個(gè)“后續(xù)清理”就能解決的問(wèn)題
最自然的辯護(hù)理由是:現(xiàn)在還只是早期階段。這個(gè)版本目前只在 Canary 渠道發(fā)布,后續(xù)還有更多 PR。隨著 Bun 團(tuán)隊(duì)逐步重構(gòu)成符合 Rust 慣用寫法的代碼,unsafe 的數(shù)量自然會(huì)下降。
也許確實(shí)如此。但問(wèn)題在于,我們需要誠(chéng)實(shí)地面對(duì)一個(gè)事實(shí):所謂“逐步消除 unsafe”,并不是簡(jiǎn)單的代碼清理工作,而是一個(gè)尚未被徹底解決的研究難題。
驗(yàn)證 Rust 中一段 unsafe 代碼是否真正安全,本身就是一件極其困難的事情。困難到什么程度呢?Amazon 曾聯(lián)合 Rust 基金會(huì)發(fā)起專門的社區(qū)項(xiàng)目,目的就是驗(yàn)證 Rust 標(biāo)準(zhǔn)庫(kù)中的 unsafe 代碼。這部分代碼遠(yuǎn)比數(shù)百萬(wàn)行由智能體生成的運(yùn)行時(shí)代碼規(guī)模小得多,也經(jīng)過(guò)了更嚴(yán)格的審查,而且是由人工編寫的。
之所以需要專門成立這樣的項(xiàng)目,是因?yàn)?unsafe 代碼重新打開(kāi)了通往未定義行為的大門。只要某個(gè) unsafe 代碼塊中存在一個(gè)錯(cuò)誤,就可能讓周圍所有依賴 Rust 類型系統(tǒng)保護(hù)的代碼失去保障。這一點(diǎn),Todd Smith 很久以前就曾向我強(qiáng)調(diào)過(guò)。而對(duì)于任何使用 Rust 的開(kāi)發(fā)者來(lái)說(shuō),這都是一個(gè)值得認(rèn)真記住的警告。
事實(shí)上,即便是 Rust 標(biāo)準(zhǔn)庫(kù)本身,在過(guò)去這些年里也出現(xiàn)過(guò)二十多個(gè)可以追溯到 unsafe 代碼的 CVE 漏洞。盡管這些代碼已經(jīng)接受了數(shù)十年專家級(jí)別的審查,問(wèn)題依然存在。
當(dāng)前學(xué)術(shù)界在驗(yàn)證 unsafe Rust 方面最先進(jìn)的方法,也不過(guò)是半自動(dòng)化分析工具,以及需要人工編寫形式化規(guī)范的實(shí)驗(yàn)性驗(yàn)證器。
不存在一個(gè)按下按鈕就能完成的“讓這段 unsafe 代碼變得安全”的工具,而且在可預(yù)見(jiàn)的未來(lái),也看不到這種工具出現(xiàn)的可能。
Todd 基于他長(zhǎng)期研究類似問(wèn)題而給出的建議是:“根本不要自動(dòng)遷移內(nèi)存不安全的代碼。應(yīng)該先為產(chǎn)品的外部可觀察行為編寫詳細(xì)規(guī)范,然后告訴 Agent:現(xiàn)有代碼只能作為參考資料,用來(lái)補(bǔ)充實(shí)現(xiàn)細(xì)節(jié),而真正的主要依據(jù)應(yīng)該是規(guī)范本身。”
當(dāng)然,這又帶來(lái)了另一個(gè)問(wèn)題:你首先必須擁有一份完整、準(zhǔn)確、足夠詳細(xì)的規(guī)范文檔。
這意味著,從超過(guò)一萬(wàn)個(gè) unsafe 代碼塊走向一個(gè)真正站得住腳、能夠被證明安全的系統(tǒng),并不是靠幾個(gè)后續(xù) PR 就能完成的事情。
那將是一場(chǎng)持續(xù)數(shù)年的審計(jì)工程。
更麻煩的是,這場(chǎng)審計(jì)面對(duì)的目標(biāo),是一個(gè)生成速度遠(yuǎn)遠(yuǎn)超過(guò)人類閱讀速度的代碼庫(kù)。代碼生成能力正在指數(shù)級(jí)擴(kuò)張,而代碼驗(yàn)證能力卻沒(méi)有。
這種不對(duì)稱,才是真正值得關(guān)注的新聞。而且,這并不僅僅是 Bun 的問(wèn)題。Bun 可能只是迄今為止規(guī)模最大、曝光度最高的案例而已。
![]()
誰(shuí)來(lái)審查這些代碼?
在 Hacker News 的討論中,最激烈的問(wèn)題最終并不是 Bun 使用“Rust 還是 Zig”開(kāi)發(fā)的,也不是“AI 是否應(yīng)該編寫運(yùn)行時(shí)系統(tǒng)”。
大家最終聚焦的問(wèn)題更加具體,也更難回避:一個(gè)智能體在九天內(nèi)生成的一百萬(wàn)行代碼,到底是誰(shuí)審核的?
坦率地說(shuō),看起來(lái)并沒(méi)有人以審查這種關(guān)鍵基礎(chǔ)設(shè)施代碼應(yīng)有的方式去完整閱讀它。
原因也很簡(jiǎn)單:按照代碼生成的速度去閱讀這些代碼,本來(lái)就不是人類能夠做到的事情。
Bun 團(tuán)隊(duì)目前的信心主要來(lái)自測(cè)試套件。
但這又回到了文章開(kāi)頭提到的問(wèn)題:測(cè)試套件從來(lái)沒(méi)有驗(yàn)證過(guò)這次遷移最核心的目標(biāo)。
![]()
這件事對(duì)你意味著什么?
這一切并不意味著 Bun 一定會(huì)出問(wèn)題、崩潰。它完全有可能在未來(lái)很多年里穩(wěn)定運(yùn)行。事實(shí)上,能夠忠實(shí)移植一套已經(jīng)正常工作的代碼,本來(lái)就是“忠實(shí)移植”存在的意義。
那 0.2% 未通過(guò)測(cè)試的部分,大多是邊緣場(chǎng)景和平臺(tái)特定行為。而未定義行為從來(lái)不會(huì)通過(guò)測(cè)試失敗主動(dòng)暴露自己。
它更可能以另一種方式出現(xiàn):比如 18 個(gè)月后,在某個(gè) CI 環(huán)境里從未運(yùn)行過(guò)的 libc 實(shí)現(xiàn)上,被發(fā)現(xiàn)并登記成一個(gè) CVE 漏洞。又或者,是某家路由器廠商恰好選用了某個(gè)行為古怪的 musl 版本,然后問(wèn)題才第一次浮出水面。
從明顯可見(jiàn)的層面來(lái)看,這次重寫并沒(méi)有讓 Bun 的風(fēng)險(xiǎn)狀況比 Zig 版本更糟。但它也沒(méi)有按照宣傳時(shí)所承諾的那樣,在“內(nèi)存安全”這一特定維度上變得更好。
如今,一個(gè)擁有大量 unsafe 代碼塊的系統(tǒng),已經(jīng)成為支撐整個(gè)運(yùn)行時(shí)的基礎(chǔ)設(shè)施。而根據(jù) Anthropic 自己的描述,這個(gè)運(yùn)行時(shí)最終會(huì)被集成進(jìn) Claude Code,并服務(wù)數(shù)百萬(wàn)用戶。
這個(gè)遷移得出的結(jié)論并不是:“AI 不行”。也不是:“Rust 不行”。
事實(shí)上,Rust 是優(yōu)秀的語(yǔ)言。AI 也是優(yōu)秀的工具——前提是像使用其他工具一樣,以負(fù)責(zé)任的方式使用它。
真正值得吸取的,是一種評(píng)估和驗(yàn)證的思維方式。當(dāng)有人拿測(cè)試通過(guò)率來(lái)證明某種安全屬性時(shí),你首先應(yīng)該確認(rèn):
這個(gè)測(cè)試套件真的在測(cè)量那個(gè)屬性嗎?
行為一致性和內(nèi)存安全性,是兩個(gè)完全不同的維度。
一個(gè)全部通過(guò)的測(cè)試套件,只能說(shuō)明:新實(shí)現(xiàn)的行為與舊實(shí)現(xiàn)一致。
如果舊實(shí)現(xiàn)本身是一套依賴手動(dòng)內(nèi)存管理的系統(tǒng),而新實(shí)現(xiàn)只是對(duì)它進(jìn)行了忠實(shí)翻譯,那么測(cè)試全部變綠所證明的,僅僅是:遷移工作完成得很好。
除此之外,它完全無(wú)法告訴你:這套系統(tǒng)是否真正安全。
真正能夠回答這個(gè)問(wèn)題的指標(biāo),其實(shí)是大家最想看到、卻至今沒(méi)人能夠給出的那個(gè)指標(biāo)。
原因很簡(jiǎn)單:如何可靠地證明這一點(diǎn),直到今天依然是一個(gè)尚未解決的難題。
而這,才是整個(gè)事件真正值得關(guān)注的地方。
開(kāi)發(fā)者“神裝”補(bǔ)給站|CSDN 6 月寵粉福利
不論你是想跑通最新的本地 LLM,還是想實(shí)測(cè)一套 Agent 自動(dòng)化工作流,算力與補(bǔ)給,我們都為你備齊了!
立領(lǐng)三重進(jìn)階大禮:
200 小時(shí)云端算力券免費(fèi)領(lǐng)
瑞幸咖啡/肯德基早餐/下午茶任選其一
掃碼即刻領(lǐng)取,今日額度有限,手慢無(wú)!
領(lǐng)取地址:https://s.csdn.cn/4nPsOp
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.