programmatūra · 5 min · 15.07.2026

Bun pāriet no Zig uz Rust 11 dienās ar 64 Claude aģentiem — Zig autors: “miljons rindu nerecenzēta brāķa”

Bun izstrādātājs Džareds Samners 11 dienās pārrakstīja gandrīz visu Bun izpildvidi no Zig valodas uz Rust, palaižot līdz 64 Claude aģentiem paralēli četros Git darba kokos. Darbs izmaksāja aptuveni 165 000 dolāru API cenās, un rezultāts jau mēnesi strādā ražošanā — Claude Code kopš versijas 2.1.181 (izlaista 17. jūnijā) izmanto tieši šo Rust versiju.

Skaitļi ir lieli. Pēc Bun komandas bloga ieraksta, mehāniski tika pārcelti 1448 Zig faili, radot 6778 komitus un vairāk nekā miljonu jaunu koda rindu. Pirms tam Bun bija 535 496 Zig koda rindas, neskaitot komentārus. Modeli izmantoja Claude Fable 5, kas apēda 5,9 miljardus nekešotu ievades žetonu un 690 miljonus izvades žetonu.

Kāpēc pamest Zig

Galvenais iemesls ir atmiņas drošība. Bun sajauc Zig manuālo atmiņas pārvaldību ar JavaScript vērtībām, kuras savāc atkritumu savācējs, un tā rezultātā radās noturīga kļūdu klase. Samners raksta, ka liela daļa no bugu saraksta ir use-after-free, dubultā atbrīvošana un aizmirsta atbrīvošana kļūdu apstrādes ceļā.

Drošā Rust šīs ir kompilatora kļūdas.

Zig valodā programmētājam pašam jāatceras defer katrai atmiņas atbrīvošanai. Rust aizņēmumu pārbaudītājs un automātiskais Drop šo pārbauda kompilēšanas laikā, tāpēc daļa kļūdu vairs neaizsniedz lietotāju. Zig komandai palika aptuveni piektā daļa Bun koda — C un C++ bibliotēkas, tostarp JavaScriptCore dzinis, uWebSockets, BoringSSL un SQLite.

Kā to izdarīja

Testu komplekts palika neskarts. Tas rakstīts TypeScript valodā un pārbauda, kā Bun uzvedas no ārpuses, neatkarīgi no implementācijas valodas, tāpēc kalpoja par etalonu Rust versijai. Samners apgalvo, ka izlaista vai izdzēsta netika neviena pārbaude un Rust kods iztur visus vairāk nekā miljonu apgalvojumu uz visām platformām.

Pati darbplūsma ir tikpat interesanta kā rezultāts. Aptuveni 64 Claude aģenti strādāja vienlaikus, sadalīti četros atsevišķos Git darba kokos, lai tie neuzkāptu cits citam uz papēžiem. Katrs aģents ņēma Zig failu vai failu grupu, pārcēla to uz Rust un dzina testus, līdz tie gāja cauri. No šejienes nāk 6778 komiti — nevis desmit lielu izmaiņu, bet tūkstošiem sīku soļu, ko cilvēks apstiprināja pa lielām porcijām, nevis rindu pa rindai. Modeļa izvēle Fable 5 bija apzināta: mehāniska koda pārcelšana no vienas valodas uz otru ir tieši tas uzdevums, kur svarīga cena par žetonu un caurlaidspēja, nevis dziļa spriešana.

Ieguvumi ir mēreni, bet mērāmi. Bināro failu izmērs samazinājās aptuveni par 20% uz visām platformām, ātrums pieauga 2–5% robežās (HTTP caurlaidspēja par 4,8%), un instrumentējamās atmiņas noplūdes pazuda. Uz Linux Claude Code startē par 10% ātrāk. Bun nonāca Anthropic īpašumā 2025. gada decembrī, un tieši Claude Code bija pirmais lielais projekts, kas pārsēdās uz Rust versiju.

Zig autors iebilst

Andrū Kellijs, Zig valodas autors, publiski apšaubīja visu pieeju. Viņš jautāja, vai testi, kas pietiek Zig kļūdu ķeršanai, spēj atrast problēmas miljonā rindu nerecenzēta brāķa (angliski “unreviewed slop”), domājot AI ģenerēto Rust kodu. Kellija arguments sniedzas tālāk par valodas izvēli: viņš uzskata, ka Bun kodā slikta prakse bija jau pirms AI — agresīvi funkciju laidieni, uzkrātas kļūdas, vāja kļūdu apstrāde un tehniskais parāds. Viņš to saista ar komerciālu spiedienu pēc Anthropic pirkuma.

Kellijs arī atgādināja, ka Bun mēģinājumi ar AI palīdzību uzlabot pašu Zig tika noraidīti — Zig projektam ir noteikums nepieņemt LLM ģenerētu kodu. Šo noteikumu viņš pasniedz kā nepieciešamu kvalitātes filtru. Zig kopienā daļa izstrādātāju viņu atbalstīja, citi norādīja, ka Bun jau vairs neapņemas atbalstīt Zig kā ekosistēmu un tāpēc pāreja loģiska. Diskusija ātri izgāja ārpus Bun un pārvērtās par plašāku strīdu, cik daudz koda saprātīgi ģenerēt bez cilvēka acs.

Ne visi piekrīt. HashiCorp līdzdibinātājs Mičels Hašimoto rezultātu slavēja, sakot, ka neviens inženieris ar attiecīgu algu nebūtu 11 dienās sasniedzis to, ko Claude. Programmētājs Saimons Vilisons savā pierakstā norādīja uz to pašu, kas satrauc Kelliju: neviens cilvēks nav izlasījis visu miljonu rindu, un ilgtermiņa uzturēšana paliek atklāts jautājums.

Ko no tā ņemt

Interesantākais jautājums attiecas uz pašu vārdu “pārrakstīts”. Ko tas nozīmē, kad kodu ģenerē modelis un cilvēks to nerecenzē rindu pa rindai? Bun gadījumā drošības tīkls ir TypeScript testu komplekts ar miljonu apgalvojumu — ja tests iet cauri, komanda tam uzticas. Kellija bažas ir par to, ko testi neredz: dizaina lēmumus, malas gadījumus un kodu, kas strādā šodien, bet ko neviens nesaprot pietiekami labi, lai salabotu pēc gada.

Kā ziņo The Register, Samners uzstāj, ka kods ir gan pārbaudīts, gan darbojas ražošanā jau nedēļām. Nākamais pārbaudījums ir vienkāršs: cik ātri parādīsies pirmās nopietnās kļūdas Rust versijā un cik viegli tās būs salabot.

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