For the complete documentation index, see llms.txt. This page is also available as Markdown.

1.16.0

July 30, 2026

BoxLang 1.16.0 is a reliability, compatibility, and observability-focused release with major HTTP client lifecycle hardening, better runtime diagnostics, and a broad round of CFML parity fixes. The biggest theme is control: control over HTTP client reuse and timeouts, control over proxy/header behavior in real deployments, control over classpath reload behavior, and stronger alignment for edge-case language and query semantics. This release closes 50 issues across new features, improvements, and bug fixes.

🚀 Major Highlights

🌐 HTTP Client Lifecycle, Error Hooks, and Observability

This release significantly upgrades the HTTP stack with better lifecycle management and diagnostics:

  • BL-2559 caches HTTP/SOAP clients through Box caches to avoid uncontrolled client creation and improve timeout behavior.

  • BL-2558 adds a new onHTTPError event for client-level error interception and handling.

  • BL-2562 exposes HTTP client configuration and request target metadata in BoxLang statistics.

  • BL-2565 introduces maximum stream-content length controls to prevent unbounded response buffering.

  • BL-2566 tracks observed hosts for operational visibility and traffic analysis.

🔁 Compatibility and Transpiler Parity Expansion

1.16.0 continues closing edge-case behavioral gaps for CFML and transpiled code:

  • BL-2580 transpiles listAppend() member-method usage in addition to BIF usage.

  • BL-2591 aligns extract() argument transpilation from target to destination.

  • BL-2609 improves query.findColumn() compatibility behavior.

  • BL-2610 allows CFC/BX files to be included in compatibility scenarios.

🧠 Runtime Safety and Data-Model Improvements

This release also sharpens runtime correctness and developer ergonomics:

  • BL-2588 implements javasettings.reloadOnChange.

  • BL-2589 loosens default output annotation behavior in classes.

  • BL-2590 adds struct stream APIs: stream(), keyStream(), and valueStream().

  • BL-2598 introduces useProxyHeaders for reverse-proxy aware deployments.

✨ New Features

HTTP and Runtime Telemetry

  • BL-2558: Added onHTTPError event for HTTP clients.

  • BL-2562: Exposed HTTP client configuration and request target metadata in runtime statistics.

  • BL-2598: Added useProxyHeaders setting for proxy-aware request handling.

Language and Type-System Surface

  • BL-2590: Added struct streaming capabilities: stream(), keyStream(), valueStream().

  • BL-2609: Added compatibility behavior for query.findColumn().

  • BL-2610: Added compatibility support allowing CFC/BX files to be included.

Classloading and Output Pipeline

  • BL-2577: Added support for setting disposition on write-to-browser interception.

  • BL-2585: dynamicClassLoader.addPaths() now accepts a single JAR or class-file path.

🔧 Improvements

HTTP Client Management

  • BL-2559: Updated HTTPService to cache HTTP/SOAP clients for better timeout behavior and reduced client churn.

  • BL-2565: Added max stream content length controls to protect against unbounded streaming into buffers.

  • BL-2566: Added observed-host tracking to BoxHTTPClient for better observability.

Language, Transpiler, and Compatibility

  • BL-2561: Extended bitwise BIF support to long values.

  • BL-2580: Added transpilation support for listAppend() member syntax.

  • BL-2586: Improved compatibility so e.extendedInfo can be set in CF scenarios.

  • BL-2589: Loosened default class output annotation behavior.

  • BL-2591: Updated transpilation mapping for extract() (target to destination).

  • BL-2592: Added missing archive format support.

    • compress() now supports: bzip, bzip2, tar, tar.bz, tbz, tbz2, tgz, tar.gz

    • extract() now supports: bzip, bzip2, tar, tbz, tbz2, tgz, tar.gz

Runtime and Execution Behavior

  • BL-2588: Implemented javasettings.reloadOnChange.

  • BL-2601: Allowed mixed positional and indexed procresult usage.

  • BL-2613: MiniServer now defaults form-field charset encoding to UTF-8.

🐛 Bug Fixes

Closures, Interfaces, and Proxy Semantics

  • BL-2381: Closures proxied to functional interfaces now respect default methods.

  • BL-2552: Fixed closure binding to non-lexical variables in calling UDFs.

  • BL-2608: Fixed overriding default interface methods with generic proxy.

HTTP, MiniServer, and Web Runtime

  • BL-2556: Fixed missing fileContent in HTTP results on low-level connection failures.

  • BL-2567: Fixed Basic Auth charset assignment during security protocol negotiation.

  • BL-2572: Fixed MiniServer rewriting /ws requests due to trailing slash handling.

  • BL-2578: Fixed whitespace management behavior that broke JavaScript output.

  • BL-2581: Fixed whitespace management not removing leading spaces.

Query, QoQ, and Data Handling

  • BL-2563: Fixed query.filter handling for null column values.

  • BL-2575: Fixed QoQ errors with empty list parameters.

  • BL-2603: Fixed Oracle null refcursor out params defaulting to empty string in compat mode.

  • BL-2606: Fixed casting errors when setting defaults in non-string query columns.

  • BL-2611: Fixed compound operators on query columns.

File, Zip, and Loop Semantics

  • BL-2573: Fixed zipping a directory into a file inside itself.

  • BL-2596: Fixed file-loop index and item handling.

  • BL-2597: Added character support in file-loop operations.

  • BL-2604: Fixed file-loop validation requiring either item or index.

Casting, Parsing, and Compatibility Edge Cases

  • BL-2553: Fixed urlDecode( 0 ) ClassCastException.

  • BL-2554: Fixed missing implementation path for cfloop struct attributes.

  • BL-2570: Fixed structKeySet() forcing keys to strings.

  • BL-2571: Fixed formatBaseN() for Long inputs.

  • BL-2579: Fixed list append/prepend includeEmptyFields behavior on incoming values.

  • BL-2582: Fixed relative class resolution to include base template path lookup.

  • BL-2583: Added DateTime caster compatibility for M/d/yyyy hh:mm:ss.SSS.

  • BL-2584: Fixed parser issue with rethrow and nested switch.

  • BL-2587: Fixed createObject() errors when classloader is wrapped in DynamicObject.

  • BL-2602: Fixed cookie expires="never" casting failure.

  • BL-2605: Fixed parser issues involving null in assert statements.

Runtime Stability and Performance

  • BL-2560: Fixed performance regression in compare operator.

  • BL-2564: Fixed NullPointerException in getClassMetadata.

📊 Release Snapshot

  • Release Date: July 30, 2026

  • Status: Released

  • Total Issues: 50

  • Distribution: 30 Bugs, 12 Improvements, 8 New Features

  • Primary Focus: HTTP client lifecycle hardening, observability, CFML/transpiler compatibility, parser/runtime stability

Last updated

Was this helpful?