È stata rilasciata silenziosamente una nuova versione stabile Bun – 1.1.30.
Bun è un ambiente di esecuzione ECMAScript / JavaScript, simile a molti aspetti 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 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 prestazioni più rapide in diversi scenari (partendo direttamente dall'avvio dell'applicazione) e quasi totale supporto per le API disponibili in nodejs, Bun offre ampie possibilità per le applicazioni server-side – dalla gestione dei file alla trasformazione dell'albero HTML (HTMLRewriter), un modulo di transpiling per typescript (Bun.Transpiler), un supporto integrato per i database sqlite, moduli per l'interazione con librerie native della piattaforma tramite API del linguaggio C – ffi, un set di strumenti per il testing e molte altre funzionalità.
Inoltre, in modalità esperimentale, Bun supporta l'integrazione con codice C tramite 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 release, tra le altre cose, è stato aggiunto un parser CSS basato su LightningCSS che è stato riscritto appositamente da tecnologie legacy come rust in zig, il che ha permesso di integrare trasparentemente css e typescript, e ora è possibile importare direttamente un file css in un modulo typescript:
index.ts: import "./style.css"; import Component from "./MyComponent.tsx"; // … il resto della tua app style.css: /* risultato della build: */ /* style.css */ .hello { background: red; } /* MyComponent.css */ .MyComponent { color: green; }
Bun permette creare di unire l'intera applicazione con tutte le risorse in un unico file eseguibile.
Fonte: linux.org.ru
