programmatūra · 5 min · 23.07.2026

Bun pārraksta kodolu no Zig uz Rust — miljons rindu vienā PR, kodu raksta AI

Bun no versijas 1.4.0 vairs nav rakstīts Zig valodā. Komanda pārrakstīja izpildvides kodolu Rust valodā un ievietoja to galvenajā repozitorijā ar vienu pull request, kurā bija vairāk nekā miljons rindu Rust koda. Pēdējā Zig versija bija 1.3.14. Rust versija pagaidām pieejama tikai canary kanālā ar komandu bun upgrade --canary.

Bun ir JavaScript un TypeScript izpildvide, kas konkurē ar Node.js. Vienā binārā failā tā apvieno izpildvidi, pakotņu pārvaldnieku, testu palaidēju un komplektētāju. Zig valoda ļāva Bun panākt zemu palaišanas laiku un mazu atmiņas patēriņu, tāpēc pāreja uz citu sistēmvalodu ir liels solis projektam, kas ar šo ātrumu ir reklamējies.

Apvienošana notika 2026. gada 14. maijā, piecas dienas pēc paziņojuma. Atsevišķs pull request, kas dzēsa vairāk nekā 600 000 rindu vecā Zig koda, GitHub automātiski atzīmēja kā “AI slop” un aizvēra. Bun autors Džareds Samners (Jared Sumner) atzina, ka komanda kodu pati vairs neraksta. “Mēs jau daudzus mēnešus neesam paši rakstījuši kodu,” viņš teica. Bun izstrādi kopš pārņemšanas finansē Anthropic. Pārrakstīšanu galvenokārt veica AI aģents.

Kā izskatās pārrakstīšana

Viens komits ar miljonu rindu ir netipisks jebkurai izstrādes komandai. Parastā koda apskate šādā mērogā nav iespējama, jo neviens recenzents nespēj izlasīt miljonu rindu vienā piegājienā. Samners norādīja, ka pārrakstītais kods iztur Bun testu komplektu visās platformās, uz Linux x64 glibc caurlaide ir 99,8 %. Jaunais binārais fails ir par 3 līdz 8 MB mazāks nekā Zig versija. Pārrakstīšanas gaitā izlaboja vairākus atmiņas kļūdu veidus: lietošanu pēc atbrīvošanas, dubultu atbrīvošanu un aizmirstu atbrīvošanu kļūdu ceļos.

Iemesls pārejai daļēji ir tieši šie kļūdu veidi. Zig atmiņas drošību neuzrauga kompilators, tāpēc katra tāda kļūda projektam ar Bun mērogu ir potenciāla avārija vai drošības caurums. Rust kompilators aizsargbarjeru pārbauda kompilēšanas laikā, tāpēc daļa kļūdu vairs nevar nokļūt līdz laidienam. Tā ir tā pati motivācija, kas pēdējos gados Rust valodā ir aizvedusi Linux kodola daļas un daudzus komandrindas rīkus.

Ātrums pēc pirmajām optimizācijām ir līdzvērtīgs vai nedaudz labāks. Uz 10 000 moduļu etalona Rust komplektētājs ir 1,05 reizes ātrāks par Zig versiju 1.3.14. Kopējais procesora patēriņš ir par 41 % zemāks, jo Rust versija labāk sadala darbu starp kodoliem.

Prisma palaida canary ražošanā

Datubāzu uzņēmums Prisma savā Prisma Compute platformā palaida tieši canary versiju, nevis stabilo Bun. Iemesls ir divas konkrētas kļūdas, kuras stabilā versija nespēja atrisināt.

Pirmā ir atmiņas noplūde. Testā, kas atkārtoti lasa vienu un to pašu S3 objektu ar piespiedu atkritumu savākšanu, stabilā versija pārkāpa 900 MiB robežu un konteinerā ar 1 GiB atmiņas to nogalināja operētājsistēma. Canary versija tajā pašā 4096 iterāciju testā palika plakana ap 118 MiB. Otrā kļūda skāra SQL savienojumu pūlu. Pēc virtuālās mašīnas pauzes vai tīkla pārrāvuma Bun nepamanīja mirušos dīkstāves savienojumus. Jauni vaicājumi gaidīja rindā uz vietu, kas nekad neatbrīvojās, bez kļūdas ziņojuma un bez mēģinājuma atjaunot savienojumu. Rust versijā pūls testēšanas laikā atguvās.

“Mēs nesakām, ka ir novērsta katra iespējamā pūla kļūda,” raksta Prisma inženieri, skaidrojot, kāpēc viņi izvēlējās canary, nevis privātu ielāpotu atzaru.

Zig autors sauc to par miskasti

Reakcija ārpus Bun komandas bija asa. Zig valodas autors Endrjū Kellijs (Andrew Kelley) publiski nosauca pārrakstīšanu par “neizskatītu miskasti”. The Register forumā komentētāji ironizēja par miljona rindu komitu: “Kāds jauks izskatāms komits. Esmu pārliecināts, ka tajā nebūs nevienas kļūdas.”

Zig kopiena zaudē arī tehniski. Bun bija viens no lielākajiem publiskajiem Zig projektiem. Lejupējie Zig sasaistījumi, kas balstījās uz Bun iekšējām daļām, tagad paliek bez atbalsta. Programmētājs Saimons Vilisons (Simon Willison) savā blogā aprakstīja notikumu kā pirmo lielo gadījumu, kad plaši lietotu izpildvidi pārraksta galvenokārt AI. Viņš jautāja, kā komanda uzturēs kodu, kuru neviens cilvēks pilnībā nav izlasījis.

Ko tas nozīmē lietotājiem

Stabilā Bun joprojām ir Zig versija 1.3.14. Kamēr 1.4.0 paliek canary, ražošanā to lieto tikai tie, kam vajag konkrētos labojumus, piemēram, Prisma. Samners saka, ka Rust kods stabilajā laidienā nonāks tad, kad būs pabeigta atlikusī optimizācija un tīrīšana. Datums nav nosaukts.

Atklātais jautājums ir uzturēšana. Kad kļūda parādīsies kodā, kuru neviens cilvēks pilnībā nav izlasījis, komandai būs jāsaprot loģika, ko uzrakstīja AI. Prisma pieredze rāda, ka canary versija atrisināja divas reālas kļūdas, kuras stabilā versija nespēja. Vienlaikus testu komplekts ar 99,8 % caurlaidi pagaidām ir vienīgā automātiskā pārbaude tam kodam, ko cilvēka recenzents miljonu rindu apjomā neizlasīja.

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