0.5.0

On this page

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 .bxm template support with a pluggable transpiler that converts markup into high-speed VM bytecode.
  • Web Scopes: Automatic injection of url, form, cookie, session, and cgi scopes for web requests.
  • Integrated Web CLI: New CLI flags: --serve, --port, --host, and --webroot for 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.toml and --module CLI flags; new ModuleInfo struct encapsulating module metadata.
  • Native Module Support: Load native Rust .so modules 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: ArrayIterJitFn for 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: httpRequest supporting GET, POST, PUT, and DELETE methods.
  • JSON BIFs: jsonSerialize and jsonDeserialize for encoding and decoding JSON data.
  • Cryptography BIF: hash for SHA-256 hashing.
  • String BIFs: trim, listToArray, indexOf, and chr.
  • ESP32 Firmware Support: New matchbox-esp32-runner crate; CLI flags --flash, --full-flash, and --chip for 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.
  • while Loop: Full while loop support in the parser and compiler.
  • switch Statement: switch/case statement with break support.

Changed

  • Weakly Typed Math: The ADD opcode 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 Chunk and VM to use a flat, string-keyed function model instead of nested chunks; CallFrame now 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 in bxm templates by implementing ## escaping.
  • ESP32 binary production logic and serial port handling in watch mode.
  • ESP32 Docker image tagging and Reflect.set index usage.
  • Set RUSTUP_HOME and CARGO_HOME correctly in ESP32 build environment.
  • Regression in LOCAL_JUMP_IF_NE_CONST optimization and return propagation.
Edit this page Download Markdown Last updated Oct 27, 2026, 1:45:34 PM Report an issue