Jarred Sumner, der Schöpfer und Hauptentwickler der serverseitigen JavaScript-Plattform Bun, hat das erfolgreiche Experiment zur Umschreibung des Projekts von Zig und Rust mithilfe des KI-Assistenten Claude Code anerkannt und beschlossen, Bun auf Rust umzustellen. Der umgeschriebene Rust-Code wurde bereits im Haupt-Repository des Projekts akzeptiert, während der Zig-Code zur Entfernung ansteht. Außerdem hat der Autor von Bun die Einstellung von Mitarbeitern mit mehr als 5 Jahren Erfahrung in der Entwicklung mit C/C++ und Rust angekündigt.
Aktuell ist ein direkter Port von Zig auf Rust umgesetzt, der zahlreiche unsichere Codeblöcke enthält, die gleiche Architektur, dieselben Datenstrukturen und die bisherigen externen Bibliotheken verwendet. Es wird berichtet, dass der Rust-Port erfolgreich durch den bestehenden Testzyklus auf allen Plattformen geprüft wurde. Dabei wurden gleichzeitig mehrere Speicherlecks und Testabstürze behoben.
Nach dem Build der Version in Rust ist die ausführbare Datei um 3-8 MB kleiner als beim Build der Version in Zig. In den Leistungstests erwies sich die Rust-Version als entweder schneller oder auf dem gleichen Niveau. Laut Jarred war das wichtigste Merkmal der Rust-Variante die Fähigkeit, Speicherfehler zu erkennen und zu verhindern, deren Diagnose in den letzten Jahren den Bun-Entwicklern viel Zeit gekostet hat.
Als Grund für die Neuschreibung in Rust wurde zuvor der Wunsch genannt, Probleme in Bun zu beheben, die durch Speicherlecks verursacht wurden, sowie die Meinungsverschiedenheiten mit den Zig-Autoren bezüglich der Anwendung von KI zur Codeerstellung und die für Großprojekte inakzeptable Politik von Zig hinsichtlich der Annahme von Änderungen, die die Kompatibilität beeinträchtigen.
Die JavaScript-Plattform Bun entwickelt sich zu einer leistungsstarken Alternative zu den Plattformen Node.js und Deno. Das Projekt wird mit Blick auf die Kompatibilität zu Serveranwendungen für Node.js entwickelt und unterstützt den Großteil der Node.js-APIs. Die Plattform beinhaltet eine Sammlung von Werkzeugen zur Erstellung und Ausführung von Anwendungen in JavaScript und TypeScript sowie eine Laufzeitumgebung zur Ausführung von JavaScript-Anwendungen ohne Browser, einen Paketmanager (kompatibel mit NPM), ein Testwerkzeug, ein Build-System für eigenständige Pakete und eine Schicht zum Einbetten von in C geschriebenen Handlern. In Bezug auf die Leistung übertrifft Bun Deno und Node.js deutlich (in Tests mit dem React-Framework übertrifft die Bun-Plattform Deno um das Zweifache und Node.js fast um das Fünffache). Zum Ausführen von JavaScript wird der JavaScript-Engine JavaScriptCore und Komponenten des WebKit-Projekts mit zusätzlichen Patches eingesetzt.
Quelle: opennet.ru
