Jarred Sumner, twórca i główny programista serwerowej platformy JavaScript Bun, uznał eksperyment z przepisaniem projektu w językach Zig i Rust przy pomocy asystenta AI Claude Code za udany i podjął decyzję o przepisaniu Bun na język Rust. Przepisana wersja w języku Rust została już przyjęta do głównego repozytorium projektu, a kod w języku Zig planowany jest do usunięcia. Autor Bun ogłosił również zatrudnienie pracowników do wsparcia Bun, posiadających ponad 5-letnie doświadczenie w programowaniu w językach C/C++ i Rust.
Obecnie w Rust zrealizowano bezpośredni port z języka Zig, który zawiera wiele bloków kodu unsafe, używa tej samej architektury, tych samych struktur danych oraz poprzednich bibliotek zewnętrznych. Zauważono, że port w Rust pomyślnie przeszedł testy przy użyciu istniejącego zestawu testów we wszystkich platformach. Równocześnie usunięto kilka wycieków pamięci i awarii w testach.
Po zbudowaniu wersji w Rust plik wykonywalny okazał się o 3-8 MB mniejszy niż w przypadku budowy wersji w Zig. W testach wydajności wersja w Rust była albo szybsza, albo na tym samym poziomie. Zdaniem Jarreda najważniejszą zaletą wersji w Rust była możliwość wychwytywania i zapobiegania błędom związanym z pamięcią, co w ostatnich latach zajmowało programistom Bun wiele czasu.
Jako powód przepisania na Rust wcześniej wskazywano chęć rozwiązania problemów w Bun, spowodowanych wyciekami pamięci, różnice w podejściu autorów Zig do zastosowania AI przy pisaniu kodu oraz nieakceptowalną dla dużych projektów politykę Zig dotyczącą zmian w języku, które naruszają kompatybilność.
Platforma Bun oparta na JavaScript rozwija się jako wysokowydajny odpowiednik platform Node.js i Deno. Projekt jest rozwijany z myślą o zapewnieniu kompatybilności z aplikacjami serwerowymi dla Node.js i wspiera większość API Node.js. W skład platformy wchodzi zestaw narzędzi do tworzenia i uruchamiania aplikacji w językach JavaScript i TypeScript, a także środowisko uruchomieniowe do wykonywania aplikacji JavaScript bez przeglądarki, menedżer pakietów (kompatybilny z NPM), narzędzia do testowania, system kompilacji samodzielnych pakietów oraz warstwa do wbudowywania obsługujących elementów napisanych w języku C. Pod względem wydajności Bun wyraźnie przewyższa Deno i Node.js (w testach opartych na frameworku React platforma Bun jest 2 razy szybsza od Deno i prawie 5 razy od Node.js). Do wykonywania JavaScript wykorzystano silnik JavaScriptCore oraz komponenty projektu WebKit z dodatkowymi patchami.
Źródło: opennet.ru
