BoxLang 1.16.0 closes 50 issues centered on control: HTTP and SOAP clients are now pooled via Box caches, a new onHTTPError event allows centralized error handling, and max stream content length prevents unbounded response buffering. MiniServer adds useProxyHeaders for reverse-proxy deployments, fixes WebSocket path rewriting, and defaults form fields to UTF-8. Structs gain stream(), keyStream(), and valueStream() for full Java Stream support. javasettings.reloadOnChange enables hot-reloading Java JARs without restarts, and dynamicClassLoader.addPaths() now accepts single JAR/class paths. compress()/extract() add bzip, tar, tgz and related formats, with the extract() argument renamed from target to destination (auto-mapped by the transpiler). Query enhancements include findColumn() and numerous correctness fixes, alongside a large batch of CFML/transpiler parity fixes, closure/interop fixes, and performance and stability corrections.
Table of contents
HTTP Client Lifecycle and ObservabilityMiniServer Deployments Behind a Reverse ProxyStruct StreamsHot Reloading Java LibrariesArchive Format Expansion SupportQuery EnhancementsCFML and Transpiler ParityClosures, Interfaces, and Java InteropStability and PerformanceUpgradingResourcesResourcesQuestions this post answers
What changed with HTTP and SOAP client handling in BoxLang 1.16.0?
HTTP and SOAP clients are now cached and reused through Box caches instead of being created uncontrollably on every call. This pooling gives predictable timeout behavior and reduces client construction overhead, which previously dominated request cost in high-traffic integration code. A new onHTTPError event also allows centralizing error handling, such as logging, metrics, or circuit breakers, instead of wrapping every outbound call in try/catch. Teams running high-traffic HTTP integrations can track runtime behavior changes like this on daily.dev.
How do I run BoxLang MiniServer behind a reverse proxy like nginx or an ALB?
Set useProxyHeaders to true in the MiniServer configuration, introduced in BoxLang 1.16.0. This tells the runtime to trust forwarded headers so the client IP, protocol, and host reflect the original request instead of the proxy hop. The same release also stops MiniServer from mis-rewriting /ws requests and defaults form-field charset encoding to UTF-8. Developers deploying BoxLang behind proxies can follow runtime config changes like this via daily.dev.
Did the extract() function's argument names change in BoxLang 1.16.0?
Yes, the extract() function's destination argument was renamed from target to destination in BoxLang 1.16.0. The transpiler automatically maps the old target argument name to the new one, so existing calls keep working while new code should use destination. The release also expanded compress() and extract() to support bzip, bzip2, tar, tbz, tbz2, tgz, and tar.gz formats. Anyone upgrading BoxLang code that calls extract() can check breaking argument changes like this on daily.dev.