Een mier in een wereld van olifanten - Waarom je de Ant-runtime nader moet bekijken
Stel je voor dat je een Docker-container verpakt voor een eenvoudige cloudfunctie. Je schrijft tien regels JavaScript-code en komt uit op een image van honderden megabytes. Het merendeel van dat gewicht is Node.js. We zijn gewend geraakt aan deze "infrastructuurbelasting", maar een ontwikkelaar die bekend staat als theMackabu vond dat het tijd was voor verandering. Hun project Ant is een poging om een JavaScript-runtime te creëren die slechts 8 MB weegt, maar weet hoe te vliegen.
Wat het is en waarom je het nodig hebt
Ant is een lichtgewicht JavaScript-runtime van scratch geschreven in C. De auteur gebruikte geen bestaande engine zoals V8 (zoals in Node.js of Deno) of JavaScriptCore (zoals in Bun). In plaats daarvan schreef hij zijn eigen engine genaamd Ant Silver.
Waarom de moeite nemen als er al reuzen bestaan? Het antwoord zit in de cijfers. Node.js "out of the box" weegt ongeveer 120 MB. Ant neemt 8 MB in beslag in een standaard build en kan inkrimpen tot 4 MB als gecompileerd met grootte-optimalisatie. Dit maakt het een ideale kandidaat voor edge computing, embedded systems en CLI-hulpprogramma's waar elke megabyte en elke milliseconde telt.
Cold Start die indruk maakt
Een van de belangrijkste pijnpunten in serverless architectuur is "cold start" — de tijd die een platform nodig heeft om de runtime te starten en je code uit te voeren. Waar Node.js ongeveer 30 ms nodig heeft om te initialiseren, doet Ant het in slechts 5 ms.
De benchmarks van het project gebruiken Hono — een populair framework voor het bouwen van API's. Ant laadt Hono, registreert routes en sluit af twee keer zo snel als Bun en vijf keer sneller dan Node.js. Dit is natuurlijk een synthetische startup-en-exit test, maar het demonstreert duidelijk hoeveel minder overhead de runtime heeft tijdens initialisatie.
Technische interne werking
Een eigen JS-engine bouwen klinkt gek, maar er zijn一些 slimme oplossingen. De Ant Silver-engine gebruikt een JIT-compiler op basis van MIR. Deze lichtgewicht backend maakt het mogelijk dat JavaScript-code wordt uitgevoerd met snelheden die de vergelijking doorstaan met gecompileerde talen, zonder gigabytes aan RAM nodig te hebben voor de optimizer.
Het project richt zich op de WinterTC-standaard (Minimum Common API). Dit is een poging om code die voor één server-side JS-omgeving is geschreven ongewijzigd te laten draaien in een andere. Momenteel slaagt Ant volledig voor de compatibiliteitstests voor ES1–ES6 en volgende specificaties (15.011 tests van 15.011). Echter, in uitgebreidere tests test262 is de dekking momenteel ongeveer 64%. De auteur geeft openlijk toe dat het werk nog gaande is, met focus op de functies die ontwikkelaars daadwerkelijk nodig hebben.
Waar het kan worden gebruikt
Ik zie verschillende scenario's waar Ant nu al impact kan maken:
- Micro-CLI-hulpprogramma's. Als je een klein hulpprogramma voor collega's schrijft dat snel moet kunnen worden gedownload en uitgevoerd, ziet een binaire van 4 MB er veel aantrekkelijker uit dan het vereisen van een Node.js-installatie.
- Edge Computing. In gedistribueerde netwerken waar code zo dicht mogelijk bij de gebruiker draait, heeft de kleine voetafdruk en snelle opstart een directe impact op de latentie.
- IoT en embedded systems. Waar geheugenbronnen beperkt zijn, past regulier Node.js simpelweg niet, terwijl Ant zich prima thuis zal voelen.
Hoe het te proberen
Installatie is standaard voor tools zoals deze:
curl -fsSL https://antjs.org/install | bash
Als je een kijkje onder de motorkap wilt nemen en het zelf wilt bouwen, heb je een C-compiler nodig. Het project ontwikkelt actief en de auteur onderhoudt een interessant blog over implementatie-interne werking, waarin wordt uitgelegd hoe de mier erin slaagt 50 keer zijn eigen gewicht te dragen.
Moet je vandaag al overschakelen?
Laten we eerlijk zijn: Ant is nog steeds een ambitieus experiment. Als je werk afhankelijk is van specifieke Node.js native modules of het enorme NPM-ecosysteem dat voortbouwt op V8-interne werking, zul je problemen tegenkomen.
Als je echter een minimalistisch hulpmiddel nodig hebt voor het uitvoeren van JS onder specifieke omstandigheden, of als je gewoon moe bent van de zwaarte van moderne oplossingen — geef deze repository een ster. Dit is een zeldzaam voorbeeld van één persoon die de architecturale bloat van de industrie uitdaagt. Zelfs als Ant Node.js niet vervangt, zal het andere runtime-ontwikkelaars zeker aan het denken zetten over optimalisatie.
Gerelateerde projecten