> For the complete documentation index, see [llms.txt](https://boxlang.ortusbooks.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://boxlang.ortusbooks.com/readme/release-history/1.16.0.md).

# 1.16.0

**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**](https://ortussolutions.atlassian.net/browse/BL-2559) caches HTTP/SOAP clients through Box caches to avoid uncontrolled client creation and improve timeout behavior.
* [**BL-2558**](https://ortussolutions.atlassian.net/browse/BL-2558) adds a new `onHTTPError` event for client-level error interception and handling.
* [**BL-2562**](https://ortussolutions.atlassian.net/browse/BL-2562) exposes HTTP client configuration and request target metadata in BoxLang statistics.
* [**BL-2565**](https://ortussolutions.atlassian.net/browse/BL-2565) introduces maximum stream-content length controls to prevent unbounded response buffering.
* [**BL-2566**](https://ortussolutions.atlassian.net/browse/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**](https://ortussolutions.atlassian.net/browse/BL-2580) transpiles `listAppend()` member-method usage in addition to BIF usage.
* [**BL-2591**](https://ortussolutions.atlassian.net/browse/BL-2591) aligns `extract()` argument transpilation from `target` to `destination`.
* [**BL-2609**](https://ortussolutions.atlassian.net/browse/BL-2609) improves `query.findColumn()` compatibility behavior.
* [**BL-2610**](https://ortussolutions.atlassian.net/browse/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**](https://ortussolutions.atlassian.net/browse/BL-2588) implements `javasettings.reloadOnChange`.
* [**BL-2589**](https://ortussolutions.atlassian.net/browse/BL-2589) loosens default `output` annotation behavior in classes.
* [**BL-2590**](https://ortussolutions.atlassian.net/browse/BL-2590) adds struct stream APIs: `stream()`, `keyStream()`, and `valueStream()`.
* [**BL-2598**](https://ortussolutions.atlassian.net/browse/BL-2598) introduces `useProxyHeaders` for reverse-proxy aware deployments.

## ✨ New Features

### HTTP and Runtime Telemetry

* [**BL-2558**](https://ortussolutions.atlassian.net/browse/BL-2558): Added `onHTTPError` event for HTTP clients.
* [**BL-2562**](https://ortussolutions.atlassian.net/browse/BL-2562): Exposed HTTP client configuration and request target metadata in runtime statistics.
* [**BL-2598**](https://ortussolutions.atlassian.net/browse/BL-2598): Added `useProxyHeaders` setting for proxy-aware request handling.

### Language and Type-System Surface

* [**BL-2590**](https://ortussolutions.atlassian.net/browse/BL-2590): Added struct streaming capabilities: `stream()`, `keyStream()`, `valueStream()`.
* [**BL-2609**](https://ortussolutions.atlassian.net/browse/BL-2609): Added compatibility behavior for `query.findColumn()`.
* [**BL-2610**](https://ortussolutions.atlassian.net/browse/BL-2610): Added compatibility support allowing CFC/BX files to be included.

```js
users = queryNew(
	"id,name,email",
	"integer,varchar,varchar",
	[
		[ 1, "Ana", "ana@example.com" ],
		[ 2, "Luis", "luis@example.com" ]
	]
)

nameColumnIndex = users.findColumn( "name" )
emailColumnIndex = users.findColumn( "email" )
```

```js
myStruct = { foo : "bar", baz : "bum" }

// Stream values
valueCount = myStruct.valueStream().count()

// Stream keys
keyCount = myStruct.keyStream().count()
```

### Classloading and Output Pipeline

* [**BL-2577**](https://ortussolutions.atlassian.net/browse/BL-2577): Added support for setting `disposition` on write-to-browser interception.
* [**BL-2585**](https://ortussolutions.atlassian.net/browse/BL-2585): `dynamicClassLoader.addPaths()` now accepts a single JAR or class-file path.

```js
getRequestClassLoader().addPaths( "/opt/app/lib/acme-utils.jar" )
```

## 🔧 Improvements

### HTTP Client Management

* [**BL-2559**](https://ortussolutions.atlassian.net/browse/BL-2559): Updated HTTPService to cache HTTP/SOAP clients for better timeout behavior and reduced client churn.
* [**BL-2565**](https://ortussolutions.atlassian.net/browse/BL-2565): Added max stream content length controls to protect against unbounded streaming into buffers.
* [**BL-2566**](https://ortussolutions.atlassian.net/browse/BL-2566): Added observed-host tracking to `BoxHTTPClient` for better observability.

### Language, Transpiler, and Compatibility

* [**BL-2561**](https://ortussolutions.atlassian.net/browse/BL-2561): Extended bitwise BIF support to `long` values.
* [**BL-2580**](https://ortussolutions.atlassian.net/browse/BL-2580): Added transpilation support for `listAppend()` member syntax.
* [**BL-2586**](https://ortussolutions.atlassian.net/browse/BL-2586): Improved compatibility so `e.extendedInfo` can be set in CF scenarios.
* [**BL-2589**](https://ortussolutions.atlassian.net/browse/BL-2589): Loosened default class `output` annotation behavior.
* [**BL-2591**](https://ortussolutions.atlassian.net/browse/BL-2591): Updated transpilation mapping for `extract()` (`target` to `destination`).
* [**BL-2592**](https://ortussolutions.atlassian.net/browse/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`

```js
// Compress directory to a tar.gz archive
compress(
	source = "/tmp/project",
	destination = "/tmp/project.tar.gz",
	format = "tar.gz"
)

// Extract a tbz2 archive
extract(
	source = "/tmp/project.tbz2",
	destination = "/tmp/project-out",
	format = "tbz2"
)
```

### Runtime and Execution Behavior

* [**BL-2588**](https://ortussolutions.atlassian.net/browse/BL-2588): Implemented `javasettings.reloadOnChange`.
* [**BL-2601**](https://ortussolutions.atlassian.net/browse/BL-2601): Allowed mixed positional and indexed `procresult` usage.
* [**BL-2613**](https://ortussolutions.atlassian.net/browse/BL-2613): MiniServer now defaults form-field charset encoding to UTF-8.

```js
bx:application
	name = "reloadOnChangeApp"
	javaSettings = {
		loadPaths : [ "/path/to/libs/helloworld.jar" ],
		reloadOnChange : true
	}
```

## 🐛 Bug Fixes

### Closures, Interfaces, and Proxy Semantics

* [**BL-2381**](https://ortussolutions.atlassian.net/browse/BL-2381): Closures proxied to functional interfaces now respect default methods.
* [**BL-2552**](https://ortussolutions.atlassian.net/browse/BL-2552): Fixed closure binding to non-lexical variables in calling UDFs.
* [**BL-2608**](https://ortussolutions.atlassian.net/browse/BL-2608): Fixed overriding default interface methods with generic proxy.

### HTTP, MiniServer, and Web Runtime

* [**BL-2556**](https://ortussolutions.atlassian.net/browse/BL-2556): Fixed missing `fileContent` in HTTP results on low-level connection failures.
* [**BL-2567**](https://ortussolutions.atlassian.net/browse/BL-2567): Fixed Basic Auth charset assignment during security protocol negotiation.
* [**BL-2572**](https://ortussolutions.atlassian.net/browse/BL-2572): Fixed MiniServer rewriting `/ws` requests due to trailing slash handling.
* [**BL-2578**](https://ortussolutions.atlassian.net/browse/BL-2578): Fixed whitespace management behavior that broke JavaScript output.
* [**BL-2581**](https://ortussolutions.atlassian.net/browse/BL-2581): Fixed whitespace management not removing leading spaces.

### Query, QoQ, and Data Handling

* [**BL-2563**](https://ortussolutions.atlassian.net/browse/BL-2563): Fixed `query.filter` handling for null column values.
* [**BL-2575**](https://ortussolutions.atlassian.net/browse/BL-2575): Fixed QoQ errors with empty list parameters.
* [**BL-2603**](https://ortussolutions.atlassian.net/browse/BL-2603): Fixed Oracle null refcursor out params defaulting to empty string in compat mode.
* [**BL-2606**](https://ortussolutions.atlassian.net/browse/BL-2606): Fixed casting errors when setting defaults in non-string query columns.
* [**BL-2611**](https://ortussolutions.atlassian.net/browse/BL-2611): Fixed compound operators on query columns.

### File, Zip, and Loop Semantics

* [**BL-2573**](https://ortussolutions.atlassian.net/browse/BL-2573): Fixed zipping a directory into a file inside itself.
* [**BL-2596**](https://ortussolutions.atlassian.net/browse/BL-2596): Fixed file-loop `index` and `item` handling.
* [**BL-2597**](https://ortussolutions.atlassian.net/browse/BL-2597): Added character support in file-loop operations.
* [**BL-2604**](https://ortussolutions.atlassian.net/browse/BL-2604): Fixed file-loop validation requiring either `item` or `index`.

### Casting, Parsing, and Compatibility Edge Cases

* [**BL-2553**](https://ortussolutions.atlassian.net/browse/BL-2553): Fixed `urlDecode( 0 )` ClassCastException.
* [**BL-2554**](https://ortussolutions.atlassian.net/browse/BL-2554): Fixed missing implementation path for `cfloop` struct attributes.
* [**BL-2570**](https://ortussolutions.atlassian.net/browse/BL-2570): Fixed `structKeySet()` forcing keys to strings.
* [**BL-2571**](https://ortussolutions.atlassian.net/browse/BL-2571): Fixed `formatBaseN()` for `Long` inputs.
* [**BL-2579**](https://ortussolutions.atlassian.net/browse/BL-2579): Fixed list append/prepend `includeEmptyFields` behavior on incoming values.
* [**BL-2582**](https://ortussolutions.atlassian.net/browse/BL-2582): Fixed relative class resolution to include base template path lookup.
* [**BL-2583**](https://ortussolutions.atlassian.net/browse/BL-2583): Added DateTime caster compatibility for `M/d/yyyy hh:mm:ss.SSS`.
* [**BL-2584**](https://ortussolutions.atlassian.net/browse/BL-2584): Fixed parser issue with `rethrow` and nested `switch`.
* [**BL-2587**](https://ortussolutions.atlassian.net/browse/BL-2587): Fixed `createObject()` errors when classloader is wrapped in `DynamicObject`.
* [**BL-2602**](https://ortussolutions.atlassian.net/browse/BL-2602): Fixed cookie `expires="never"` casting failure.
* [**BL-2605**](https://ortussolutions.atlassian.net/browse/BL-2605): Fixed parser issues involving `null` in `assert` statements.

### Runtime Stability and Performance

* [**BL-2560**](https://ortussolutions.atlassian.net/browse/BL-2560): Fixed performance regression in compare operator.
* [**BL-2564**](https://ortussolutions.atlassian.net/browse/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

{% hint style="success" %}
BoxLang 1.16.0 is the recommended update for teams that rely heavily on HTTP integrations, MiniServer deployments behind proxies, and CFML compatibility edge-case behavior.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://boxlang.ortusbooks.com/readme/release-history/1.16.0.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
