programmatūra · 6 min · 20.07.2026

Bun pārrakstīts no Zig uz Rust 11 dienās ar 50 Claude aģentiem — Zig radītājs to sauc par nerecenzētu blēņu kaudzi

Bun veidotājs Džareds Samners (Jarred Sumner) 8. jūlijā publicēja, ka pārrakstījis visu JavaScript izpildvidi Bun no Zig valodas uz Rust. Darbu no 3. līdz 14. maijam paveica aptuveni 50 paralēli strādājošu Claude aģentu, kas izdarīja 6502 commit un ģenerēja vairāk nekā miljonu rindu Rust koda. Dienu pēc raksta Zig valodas radītājs Endrū Kellijs (Andrew Kelley) atbildēja ar savu rakstu, kurā pārrakstījumu nosauca par nerecenzētu koda kaudzi.

Bun ir alternatīva Node.js un Deno — izpildvide un pakotņu pārvaldnieks, kas cenšas darboties ātrāk par abiem. Anthropic uzņēmumu iegādājās 2025. gada decembrī, un Samners tagad strādā tur. Pārrakstījumam viņš izmantoja Claude Code kopā ar tolaik vēl neizlaisto Claude Fable 5 modeli.

Miljons rindu 11 dienās

Samners aprakstīja procesu detalizēti. Aģenti neģenerēja kodu vienā piegājienā — Bun jau bija liels TypeScript testu komplekts ar aptuveni miljonu apgalvojumu, un tieši šis komplekts kalpoja par mērauklu. Aģenti pārrakstīja moduli, palaida testus, izlasīja kļūdas un laboja kodu ģenerēšanas cilpā, nevis ar rokām. Pirms sapludināšanas cits aģents kodu kritiski pārskatīja.

Skaitļi ir lieli. Palaišana patērēja 5,9 miljardus nekešotu ievades žetonu, 690 miljonus izvades žetonu un 72 miljardus kešoto lasījumu — pēc API cenrāža aptuveni 165 000 dolāru. Vienā brīdī vienlaikus strādāja līdz 64 aģentiem, un maksimālais ātrums sasniedza 695 commit stundā. Rezultāts iztur Bun testu komplektu uz visām platformām, izlabo vairākas atmiņas noplūdes un dažus nestabilus testus. Binārā faila izmērs saruka par 3–8 MB, un palaišana uz Linux paātrinājās par aptuveni 10 %. Pārrakstītā versija Claude Code lietotājiem darbojas kopš v2.1.181 laidiena 17. jūnijā.

Orķestrāciju vadīja aptuveni 50 dinamiskas darbplūsmas, kas pašas sadalīja darbu mazākos uzdevumos un palaida jaunus aģentus. Lielāko daļu koda uzrakstīja tolaik neizlaistais Claude Fable 5, kas Samneram bija pieejams pirms publiskā laidiena. Bun lietotājiem pāreja notika klusi — izpildvide saglabāja to pašu API, tāpēc esošie projekti turpina darboties bez izmaiņām, un mērījumi svārstās no neitrāliem līdz nedaudz ātrākiem.

Kāpēc vispār pamest Zig

Galvenais iemesls, ko min Samners, ir atmiņas drošība. Zig prasa manuālu atmiņas pārvaldību, un Bun kodā uzkrājās kļūdas, kur atmiņa tika atbrīvota divreiz, izmantota pēc atbrīvošanas vai vispār netika atbrīvota kļūdu apstrādes ceļos.

Liela daļa kļūdu ir use-after-free, double-free un «aizmirsu atbrīvot» kļūdu apstrādes ceļā, — raksta Samners.

Rust šo problēmu klasi novērš kompilēšanas laikā ar īpašumtiesību modeli. Samners arī norādīja, ka Zig trūkst iebūvēta atbalsta jauktai atkritumu savākšanai un manuālai atmiņas pārvaldībai vienā programmā, kas Bun gadījumā ir svarīgi, jo izpildvide vienlaikus vada gan JavaScript objektus, gan sistēmas resursus.

«Rakstīja blēņas jau pirms LLM»

Kellijs, kurš Zig izstrādā jau vairāk nekā desmit gadu, savu atbildi publicēja 9. jūlijā. Viņa iebildums nav par valodas izvēli, bet par koda kvalitāti un par to, ka miljons rindu nonāca produkcijā, cilvēkam tās neizlasot.

Kellijs raksta, ka Samners «rakstīja blēņas jau labu laiku pirms viņam bija pieejami LLM», un ka Bun kodā jau pirms Anthropic iegādes bija «sakrājušās kļūdas, slikta kļūdu apstrāde un tehniskais parāds». Viņa asākais arguments vēršas pret domu, ka testi vien pietiekami pasargā:

Arguments par visu miljonu nerecenzēto rindu izlaišanu ir tāds, ka testu komplekts ir pietiekami labs, lai noķertu visu. Tas nav pietiekams, lai noķertu kļūdas Zig kodā, bet ir pietiekams, lai noķertu kļūdas miljonā rindu nerecenzētu blēņu?

Kellijs neslēpj, ka Zig Software Foundation Bun uztvēra kā slogu un atviegloti uzņēma ziņu par Anthropic iegādi. Par sevi viņš raksta, ka metaforiski dzer tēju no krūzes ar uzrakstu «It Tastes Like It’s Not My Problem Anymore» — «garšo pēc tā, ka tā vairs nav mana problēma». Viņš arī iebilst pret to, ka Bun rakstā uzsvars likts uz binārā faila samazināšanu: pēc Kellija domām, šis inženierdarbs ar pašu pārrakstīšanu nav saistīts un to varēja izdarīt jau Zig kodā.

Strīds, kas nav tikai par Bun

Diskusija Hacker News un Zig kopienas forumā Ziggit izvērtās plaša, jo aiz konkrētā projekta stāv lielāks jautājums. Bun pārrakstījums ir viens no pirmajiem gadījumiem, kad tik apjomīgs koda daudzums nonāk plaši lietotā rīkā, cilvēkam to pilnībā neizlasot. Aizstāvji norāda, ka testu komplekts ar miljonu apgalvojumu un neitrāli līdz labāki mērījumi ir taustāms pierādījums. Kritiķi atbild, ka testi rāda tikai to uzvedību, kuru kāds ir iedomājies pārbaudīt, un ka nerecenzēts kods vēlāk kļūst grūti uzturams.

Samners uz Kellija rakstu publiski nav sīki atbildējis. Bun raksta pēdējais uzsvars ir vienkāršs: versija darbojas produkcijā gandrīz mēnesi ar minimālām lietotāju problēmām, un «garlaicīgi ir labi». Izmaiņas sapludināja pieprasījumā oven-sh/bun #30412, un vecais Zig kods repozitorija vēsturē paliek pieejams.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie