È stata pubblicata silenziosamente una nuova versione stabile Bun – 1.1.30.
Bun è un ambiente di esecuzione ECMAScript / JavaScript, simile per molti versi a nodejs. Alla base di Bun c'è JavaScriptCore di Apple, ma Bun stesso, come molti dei suoi moduli, è scritto in zig. Bun cerca di essere il più compatibile possibile con nodejs per quanto riguarda le opzioni della riga di comando, supporta i moduli ECMAScript (ESM) e CommonJS. La gestione dei pacchetti npm e il supporto typescript sono integrati direttamente nell'applicazione come codice nativo, e i programmi in typescript possono essere eseguiti direttamente dall'interprete senza configurazione preliminare.
Tuttavia, Bun non è solo una "copia" di nodejs per le sue funzionalità. Oltre a un'esecuzione più rapida in vari scenari (fin dal lancio dell'applicazione) e quasi completo supporto per l'API disponibile in nodejs, Bun offre ampie possibilità per applicazioni server-side – dalla gestione dei file alla trasformazione dell'albero HTML (HTMLRewriter), un modulo di transpilation per typescript (Bun.Transpiler), un lavoro integrato con i database sqlite, moduli per l'interazione con librerie native attraverso l'API del linguaggio C – ffi, un strumento di testing e molte altre funzionalità.
Inoltre, in modalità sperimentale, Bun supporta l'integrazione con codice C attraverso chiamate trasparenti tcc:
hello.c: int hello() { return 42; } hello.js: import { cc } from "bun:ffi"; import source from ".\/hello.c" with { type: "file" }; const { symbols: { hello }, } = cc({ source, symbols: { hello: { args: [], returns: "int", }, }, }); console.log("Qual è la risposta all'universo?", hello()); $ bun hello.js Qual è la risposta all'universo? 42
In questa versione, tra le altre cose, è stato aggiunto un parser CSS basato su LightningCSS che è stato appositamente riscritto da tecnologie legacy come rust in zig, il che ha permesso di integrare in modo trasparente css e typescript, e ora è possibile importare direttamente un file css in un modulo typescript:
index.ts: import ".\/style.css"; import Component da ".\/MyComponent.tsx"; // … resto della tua app style.css: \/* risultato della build: *\/ \/* style.css *\/ .hello { background: red; } \/* MyComponent.css *\/ .MyComponent { color: green; }
Bun consente raccogliere di racchiudere l'intera applicazione con tutte le risorse in un unico file eseguibile.
Fonte: linux.org.ru
