Bun is een nieuwe runtime-omgeving voor JavaScript en TypeScript. Deze runtime-omgeving probeert een waardige tegenstander voor Node.js en Deno te zijn.
Krijg gratis info over software, programmeren en meer, schrijf je in voor de nieuwsbrief
Wat maakt de Bun runtimeomgeving voor Javascript en TypeScript nou uniek?
Bun streeft In tegenstelling tot Deno naar volledige compatibiliteit met Node.js. Veel Node.js-API’s worden door Bun geëmuleerd. Bovendien bevat het native ondersteuning voor npm-modules, de map node_modules en CommonJS- en ESM-indelingen. Ook kent Bun tal van moderne web-API’s uit de browser, waaronder Fetch, ReadableStream en WebSocket.
De compatibiliteit is echter in de praktijk vaak niet erg goed. Zo zijn sommige functies niet geïmplementeerd en ontbreken tal van API’s gvolledig. Het is een kwestie van geluk of een npm-module draait
Bun vs Deno vs Node.js
Bun is net als Deno een op zichzelf staand binair pakket. Naast de runtime-omgeving bevat het ook andere tools die bundels maken, npm-modules beheren en TypeScript en JSX compileren. Toch ontbreken sommige tools voor dagelijks gebruik. Denk hierbij aan tools voor debuggen, het opmaken van code en statische code-analyse. In experimentele vorm is er tenminste één geïntegreerde testloper op basis van Jest beschikbaar. Wees hierbij wel voorzichtig met de ingebouwde functies. Desondanks dat Bun bundels maken, kan het de code nog niet verkleinen. Hiervoor heb je externe tools nodig.
De TypeScript-integratie valt ook tegen. In tegenstelling tot wat de website van Bun suggereert, is het zeker niet de officiële TypeScript-compiler. Bun verwijdert in plaats daarvan elke TypeScript-specifieke code zonder deze te inspecteren.
De geïmplementeerde UI-frameworks is vergelijkbaar hiermee. Hoewel Reacts JSX standaard wordt geïnterpreteerd, is dit niet van toepassing op andere speciale formaten zoals die van Vue of Svelte. Bovendien kan dit momenteel niet achteraf worden in gebouwd. Op het moment dat je Bun gebruikt, ben je wat betreft de gebruikersinterface gebonden aan React.
Bun is een prima runtime omgeving voor Javascript maar nog niet helemaal af
Hoewel Bun veel leuke ideeën heeft, is de inspanning om ze in het dagelijks gebruik in de praktijk te brengen erg hoog. Hierbij moet wel vermeld worden dat Bun nog een heel jong project is, dus Bun kan dit alles maar in beperkte mate worden aangerekend. Een meer evenwichtige communicatie zou echter wenselijk zijn: iedereen die beweert een “runtime-omgeving voor TypeScript” te hebben ontwikkeld, mag kritiek verwachten als de TypeScript-implementatie niet volledig af blijkt te zijn.
Ook moet er opgemerkt worden dat Bun niet bijzonder stabiel is. De HTTP-server heeft de neiging om te crashen, zelfs bij een gemiddeld driecijferig aantal gelijktijdig inkomende verbindingen. Door de korte opstarttijd is Bun in dergelijke gevallen in ieder geval snel weer gebruiksklaar.
Conclusie
Bun bevat een ingebouwde SQLite-database en biedt plaats aan .env-bestanden. Beide zijn echter nauwelijks geschikt als unique selling point in vergelijking met Node.js en Deno, vooral omdat Deno en Node.js ook evolueren. Een van Deno’s grootste ambities op dit moment is betere compatibiliteit met Node.js en npm. De tooling van Deno is volwassener dan die van Bun. Deno biedt ook echte native TypeScript-integratie. Last but not least spreken de distributie, ondersteuning en compatibiliteit in het voordeel van Node.js.
Dus als Deno het al erg moeilijk vindt om te concurreren met Node.js als de tophond onder JavaScript-runtime-omgevingen, is het nauwelijks te voorzien waar Bun zich permanent en aanzienlijk zal vestigen.