Jarred Sumner, skaber og hovedudvikler af server-platformen JavaScript Bun, har oprettet en Git-gren, hvor han er i gang med at omskrive Bun fra Zig til Rust. Omskrivningen foregår med hjælp fra AI-assistenten Claude, for hvilken der er udarbejdet en særskilt guide til portering. Ifølge Jarred er dette kun et eksperiment og ikke en officiel port, og der er stor sandsynlighed for, at det ikke går længere end eksperimentet, og den omskrevne kode ikke vil blive brugt.
Porteringen er endnu ikke færdig, og på nuværende tidspunkt er al interesse for projektet fokuseret på at vurdere, hvor brugbar porten vil blive, om den vil bestå testen for hovedprojektet, og hvor svært det vil være at vedligeholde den nye kode. I sidste ende er det planlagt at gennemføre sammenlignende test mellem versionerne af Bun på Zig og Rust.
I december sidste år blev Bun-projektet opkøbt af Anthropic, så Jarred har nu ressourcer til at involvere førende AI-modeller som Claude i porteringen. Bun-platformen anvendes i produkterne Claude Code og Claude Agent SDK, og Anthropic er interesseret i at forbedre dens kvalitet og udvikling. Bun er et af de mest succesfulde projekter på Zig, men udviklerne af Zig og Bun har delte meninger om brugen af AI i udviklingsprocessen. I Zig-projektet er der indgået et strengt forbud mod brug af store sprogmodeller i forbindelse med oprettelse af pull-requests, issue og kommentarer (det er endda forbudt at oversætte ikke-engelske kommentarer via AI).
Indførelsen af sådanne begrænsninger forklares af Zig-udviklerne med negative erfaringer fra gennemgangen af AI-genererede pull-requests, som spilder ressourcer og tid (f.eks. rapporteres der om meningsløse ændringer, AI-hallucinationer og oppustede commits på 10.000 linjer). Desuden positionerer Zig-projektet sig som deltagerorienteret, snarere end at fokusere på bidrag til udviklingen — hovedmålet med godkendelsen af pull-requests er ikke at tilføje ny kode, men at hjælpe med at udvikle nye deltagere.
Forfatteren Bun er uenig i forbuddet mod AI i Zig og mener, at AI-æraen vil forblive et nostalgisk minde fra 2025 og 2026, mens udviklingen af open source-software vil udvikle sig til et forbud mod at modtage kode fra mennesker. Mennesker vil diskutere problemer, sætte opgaver og prioriteter, mens koding og indsendelse af ændringer til repository vil blive en opgave for AI. Et af formålene med eksperimenterne med at omskrive i Rust er også ønsket om at løse problemerne i Bun, forårsaget af hukommelseslækager, og den uacceptable politik i Zig vedrørende modtagelse af ændringer, der bryder kompatibiliteten.
På grund af forbuddet mod at anvende AI er udviklerne af Bun tvunget til at støtte deres egen fork af Zig-værktøjerne, hvor det ved hjælp af AI er lykkedes at fire-doble kompileringstiden gennem parallelisering af semantisk analyse og kodegenerering. Ifølge en kommentar fra en af udviklerne af Zig ligger årsagen til afvisning af patches ikke i AI, men i at paralleliseringen af den semantiske analyse berører ikke kun compileren, men også selve sproget — for at implementere den foreslåede funktionalitet uden fejl og inkompatibiliteter kræver det ændringer i Zig-sproget. I stedet for parallelisering udvikler udviklerne af Zig inkrementel kompilering, som efter deres formodning vil forbedre kompileringens hastighed betydeligt.
JavaScript-platformen Bun udvikler sig til et højtydende alternativ til Node.js og Deno platforme. Projektet udvikles med fokus på at sikre kompatibilitet med serverapplikationer til Node.js og understøtter størstedelen af Node.js API'er. Platformen indeholder et sæt værktøjer til at oprette og køre applikationer med JavaScript og TypeScript, samt en runtime til at køre JavaScript-applikationer uden en browser, en package manager (kompatibel med NPM), værktøjer til at udføre tests, et system til at bygge selvstændige pakker og en lag til integration af håndterere skrevet i C. Med hensyn til ydeevne overgår Bun tydeligt Deno og Node.js (i tests baseret på React-rammen overgår Bun platformen Deno med det dobbelte og næsten 5 gange Node.js). For at udføre JavaScript anvendes JavaScript-motoren JavaScriptCore og komponenterne fra WebKit-projektet med yderligere patches.
Kilde: opennet.ru
