0.5.0
Released 2026-03-18. GitHub release | Downloads
Added
- Built-in Web Server: Integrated a high-performance native web server based on Axum and Tokio directly into the CLI.
- BoxLang Markup (BXM): New
.bxmtemplate support with a pluggable transpiler that converts markup into high-speed VM bytecode. - Web Scopes: Automatic injection of
url,form,cookie,session, andcgiscopes for web requests. - Integrated Web CLI: New CLI flags:
--serve,--port,--host, and--webrootfor instant web hosting. - Output Buffering: Added request-level output buffering to the VM and a new
writeOutput()BIF. - Easy Install Scripts: One-liner installation scripts for Linux, macOS (bash), and Windows (PowerShell).
- Multiple Release Variants: CI now produces "Fat" (all-in-one), "Slim" (no stubs), and "Server" (headless runtime) binaries.
- Module System: Dynamic module discovery from
matchbox.tomland--moduleCLI flags; newModuleInfostruct encapsulating module metadata. - Native Module Support: Load native Rust
.somodules and auto-register exported BIFs without boilerplate. - Module Settings: Settings support in module lifecycle hooks for configurable modules.
- Cranelift JIT Compilation (Tier-1 & Tier-2): Initial JIT backend using Cranelift. Tier-1 eliminates dead-code in empty loops; Tier-2 translates numeric loop bodies to Cranelift SSA IR.
- JIT Type Guards and Deoptimization: Type-checked JIT paths that fall back to the interpreter on type mismatch.
- JIT Tier-3 — Array Iteration:
ArrayIterJitFnfor JIT-compiled numeric array iteration. - JIT Tier-3 — Struct Inline Caching: Per-site polymorphic shape-based caching for struct property access within JIT-compiled code, with deoptimization support.
- JIT Hot Function Compilation and OSR: Persistent profiling counters across quanta, fast-path execution for hot functions, and On-Stack Replacement (OSR) for long-running loops.
- JIT Tier-4 — Leaf Function Calls: JIT compilation for call sites targeting leaf functions.
- JIT Shape ID and Property Loading: Struct property access via JIT using shape IDs and inline caches.
- JIT String Concatenation: JIT-compiled string concatenation via
jit_concat. - JIT Enabled by Default: JIT compilation is now active by default; no extra flag required.
- File System BIFs:
directoryExists,directoryCreate,directoryDelete,directoryList,fileExists,fileDelete,fileMove,fileCopy,fileInfo,fileCreateSymlink,fileSetExecutable,fileRead,fileWrite. - HTTP BIF:
httpRequestsupporting GET, POST, PUT, and DELETE methods. - JSON BIFs:
jsonSerializeandjsonDeserializefor encoding and decoding JSON data. - Cryptography BIF:
hashfor SHA-256 hashing. - String BIFs:
trim,listToArray,indexOf, andchr. - ESP32 Firmware Support: New
matchbox-esp32-runnercrate; CLI flags--flash,--full-flash, and--chipfor building and flashing bytecode to ESP32 devices; watch mode for live updates during development. - Web WASM Target: Stub management extended to support browser/web WASM targets alongside the existing WASM container target.
- Elvis Operator (
?:): Null-coalescing Elvis operator for concise null checks. - Safe Member Access (
?.): Null-safe chained member access operator. whileLoop: Fullwhileloop support in the parser and compiler.switchStatement:switch/casestatement withbreaksupport.
Changed
- Weakly Typed Math: The
ADDopcode now automatically converts strings to numbers if possible, matching BoxLang behavior. - Escaped Quote Support: Strings now support BoxLang-style escaping using double-quotes (
""and''). - Flat Function Representation: Refactored
Chunkand VM to use a flat, string-keyed function model instead of nested chunks;CallFramenow carries a direct chunk reference for improved dispatch. - Watch Mode: Platform-specific process handling for more reliable live-reload behavior on Linux, macOS, and Windows.
Fixed
- Fixed literal hash (
#) parsing issues inbxmtemplates by implementing##escaping. - ESP32 binary production logic and serial port handling in watch mode.
- ESP32 Docker image tagging and
Reflect.setindex usage. - Set
RUSTUP_HOMEandCARGO_HOMEcorrectly in ESP32 build environment. - Regression in
LOCAL_JUMP_IF_NE_CONSToptimization and return propagation.