bext-lite : binaire unique

Une appli PRISM, empaquetée dans un seul exécutable autonome (~7 Mo) qui s'exécute nativement sur QuickJS — sans Node, sans Electron, sans dossier dist externe. Le même source vise le natif, le desktop, l'edge, le WASM, le mobile et l'embarqué.

Astuce
Vérifié de bout en bout : sites/lite exporté → empaqueté en /tmp/myapp (7,1 Mo) → lancé sans argument de dossier → / et /targets répondent 200, rendu QuickJS en 12 ms. Hôte 6,27 Mo → empaqueté 7,1 Mo. Le format de charge utile est identique au repli « trailer » de Bun ; une variante section-ELF/Mach-O (boot zéro-I/O + signature) est prévue.

Empaqueter & exécuter

shellCode
# 1) export a PRISM app to a portable bundle (HTML + JS + assets)
bext-lite-build sites/my-app -o dist-lite

# 2) pack it INTO a copy of the bext-lite host binary (EOF trailer)
bext-lite pack dist-lite --out myapp
#  packed dist-lite -> myapp (7.1 MB, self-contained)

# 3) run the single binary — NO dist dir, NO Node, NO Electron
./myapp --port 8799
#  bext-lite: serving embedded app
#   12ms  GET / -> 200   (QuickJS render)

Comment ça marche

layoutCode
// Bun `--compile`'s EOF-trailer scheme: a content archive of dist-lite is
// appended to the running host exe, followed by [u64 len][16-byte magic].
// On boot the host detects the trailer, extracts to a content-addressed
// temp dir (path-traversal-guarded), and serves it on QuickJS in-process.
[ host bytes … ][ dist-lite archive ][ u64 LE len ][ \n--BEXTLITE1--\n ]