Джаред Самнър (Jarred Sumner), създателят и основният разработчик на сървърната JavaScript платформа Bun, е създал Git клон, в който започна пренаписването на Bun от езика Zig на Rust. Пренаписването се извършва с помощта на AI асистента Claude, за който е изготвено отделно ръководство за портинг. Според Джаред, това все още е само експеримент, а не официален порт, и съществува висока вероятност, че проектът няма да напредне над експерименталната фаза и пренаписаният код няма да бъде използван.
Портингът все още не е завършен, и в текущия етап целият интерес към проекта е насочен към оценка на това колко работоспособен ще бъде портът, дали ще премине тестовете на основния проект и колко сложно ще бъде поддържането на новия код. В крайна сметка е планирано провеждане на сравнителни тестове на версиите на Bun на Zig и Rust.
През декември миналата година проектът Bun беше погълнат от компания Anthropic, така че Джаред разполага с ресурси за ангажиране на напреднали AI модели Claude за портинга. Платформата Bun се използва в продуктите Claude Code и Claude Agent SDK, а компания Anthropic проявява интерес за повишаване на качеството и развитието й. Bun е един от най-успешните проекти на езика Zig, като мненията на разработчиците на Zig и Bun относно приложението на AI в процеса на разработка се различават. В проекта Zig е наложена строга забрана за употреба на големи езикови модели при подготовката на pull заявки, issue и коментари (забранено е дори превеждането на неанглоезични коментари чрез AI).
Въвеждането на подобни ограничения се обяснява от разработчиците на Zig с негативния опит при рецензиране на pull заявки, създадени чрез AI, които изразходват ресурси и време (например, се отбелязват безсмислени промени, AI халюцинации и раздути комити от 10 хиляди реда). Освен това проектът Zig се позиционира като ориентирован към участниците, а не вносимия им принос в разработката — основната цел на приемането на pull заявки се определя като помощ в развитието на новите участници.
Авторът Bun не е съгласен с забраната на AI в Zig и смята, че AI-слопът ще остане носталгичен спомен от 2025 и 2026 година, а развитието на отвореното ПО ще еволюира до забрана за прием на код от хора. Хората ще обсъждат проблеми, ще поставят задачи и ще приоритизират, а написването на код и изпращането на промени в репозиториите ще стане отговорност на AI. Като причина за експериментите с пренаписването на Rust се посочва желанието да се отстранят проблеми в Bun, причинени от течовете на памет, и неприемливата за големи проекти политика на Zig относно приемането на промени в езика, които нарушават съвместимостта.
Заради забраната на използването на AI разработчиците на Bun са принудени да поддържат собствен форк на инструментариума Zig, в който благодарение на използването на AI успяха да ускорят компилацията 4 пъти чрез паралелизация на семантичния анализ и генерацията на код. При това, судя по коментара на един от разработчиците на Zig, причината за отхвърлянето на пачовете не е в AI, а в това, че паралелизацията на семантичния анализ влияе не само на компилатора, но и на самия език — за да се реализира предложената функционалност без грешки и несъвместимости, е необходимо да се внесат промени в езика Zig. Вместо паралелизация, разработчиците на Zig развиват инкременталната компилация, която по техните предположения ще позволи значително да се увеличи скоростта на компилацията.
JavaScript платформата Bun се развива като високопроизводителен аналог на платформите Node.js и Deno. Проектът се разработва с внимание към съвместимостта със сървърни приложения за Node.js и поддържа голяма част от API-ите на Node.js. Включва набор от инструменти за създаване и изпълнение на приложения на езиците JavaScript и TypeScript, както и runtime за изпълнение на JavaScript приложения без браузър, пакетен мениджър (съвместим с NPM), инструменти за изпълнение на тестове, система за сборка на самостоятелни пакети и слой за интегриране на обработчици, написани на езика Си. По производителност Bun значително изпреварва Deno и Node.js (в тестовете на базата на фреймворка React платформата Bun е два пъти по-бърза от Deno и почти пет пъти по-бърза от Node.js). За изпълнението на JavaScript се използва JavaScript движещият механизъм JavaScriptCore и компоненти на проекта WebKit с допълнителни пачове.
Източник: opennet.ru
