BoxLang 1.9.0 Released: Production-Ready Stability and Enterprise-Grade Reliability
- January 12, 2026
- 340 Unique Views
- 3 min read
Houston, Texas – January 2025 – Ortus Solutions, a leading innovator in professional open-source development, today announced the release of BoxLang 1.9.0, a major stability and compatibility release focused on production-readiness. This release resolves over 50 critical bugs and introduces significant enhancements to datasource management, context lifecycle handling, and web form processing for mission-critical enterprise applications.
Production-Ready Enhancements
BoxLang 1.9.0 delivers critical improvements based on real-world client migrations and production deployments:
- Elimination of Connection Leaks: Complete datasource lifecycle management eliminates connection pool exhaustion across application restarts
- Memory Leak Prevention: Enhanced context cleanup with proper thread tracking and resource disposal
- Modern Web Standards: Automatic array-based form field parsing using contemporary naming conventions
- Enterprise Database Support: Comprehensive Oracle, MySQL, and PostgreSQL improvements including named parameters, ref cursors, and query-of-queries enhancements
- Fluent SOAP Integration: Enhanced SOAP client with automatic WSDL discovery and intelligent type conversion
Key Features and Code Examples
Array-Based Form Field Parsing
BoxLang now automatically parses query parameters and form fields as arrays using modern naming conventions:
// HTML form with multiple selections
<form method="POST">
<input type="checkbox" name="colors[]" value="red" />
<input type="checkbox" name="colors[]" value="blue" />
<input type="checkbox" name="colors[]" value="green" />
<button type="submit">Submit</button>
</form>
Then it can read them when submitted:
// BoxLang automatically parses as array selectedColors = form.colors; // Result: ["red", "blue", "green"] // Works with query parameters too // URL: /page?tags[]=boxlang&tags[]=java&tags[]=modern tags = url.tags; // Result: ["boxlang", "java", "modern"]
Datasource Lifecycle Management
Critical fixes prevent connection pool leaks and resource exhaustion:
class {
this.name = "MyApp";
this.datasources = {
"mydb" : {
driver : "mysql",
host : "localhost",
database : "appdb",
username : "user",
password : "pass"
}
};
function onApplicationEnd() {
// Datasources properly shutdown automatically
// No more connection pool leaks!
writeLog( "Datasources cleaned up automatically" );
}
}
Oracle Database Improvements
Named parameters and ref cursors now work correctly:
// Named parameters work correctly
queryExecute(
"SELECT * FROM users WHERE id = :userId AND status = :status",
{
userId : { value : 123, type : "integer" },
status : { value : "active", type : "varchar" }
},
{ datasource : "oracle_ds" }
);
// Ref cursor parameters work regardless of position
bx:storedproc procedure="getUserData" datasource="oracle_ds" {
bx:procparam type="in" value=123 type="integer";
bx:procparam type="out" variable="result" type="refcursor";
}
Enhanced SOAP Client with Fluent API
BoxLang 1.9.0 includes major enhancements to the SOAP client introduced in 1.8.0, now with full class capabilities and improved reliability:
// Create SOAP client with fluent configuration
ws = soap( "http://api.example.com/service.wsdl" )
.timeout( 60 )
.withBasicAuth( "apiuser", "apipass" )
.header( "X-API-Key", "your-key" );
// Invoke operations with automatic type conversion
result = ws.invoke( "GetCustomer", { customerId: 123 } );
// SOAP client now has full class structure
ws.setTimeout( 30 );
ws.setHeader( "Authorization", "Bearer token123" );
// Inspect available operations programmatically
operations = ws.getOperationNames();
if ( ws.hasOperation( "ProcessOrder" ) ) {
order = ws.invoke( "ProcessOrder", orderData );
}
Key SOAP Improvements:
- Automatic WSDL Discovery: Parses operations, parameters, and types automatically
- Intelligent Type Conversion: SOAP XML types automatically become BoxLang types
- Full Class Capabilities: Access underlying HTTP methods and configuration
- Operation Inspection: Programmatically discover and validate operations
- Enhanced Reliability: Improved error handling and connection management
Technical Specifications
50+ Critical Bug Fixes including:
- 15+ CFML compatibility fixes for customers migrating from CFML to Boxlang (ListDeleteAt, ListAppend, Boolean strings, Session IDs)
- Enhanced file operations and upload handling
- Date/time parsing improvements with speed improvements of over 60% of previous releases
- Session and cookie management fixes
- Core runtime optimizations
- Database and ORM enhancements
- Memory and threading improvements
- Number handling and JSON serialization enhancements
The complete engineering release notes are available at:
Availability and Licensing
BoxLang 1.9.0 is available immediately for download at with installation guides at
BoxLang operates under a transparent three-tier licensing model:
- BoxLang (Apache 2.0): Free, open-source core
- BoxLang+: Commercial features with support
- BoxLang++: Enterprise features and support
All tiers feature straightforward pricing with no hidden fees or complex calculation models.
About BoxLang
BoxLang is a modern, dynamic, multi-runtime JVM language and productivity framework. With it's multi-parser architecture it can be also used to run CFML applications. Backed by Ortus Solutions’ 20 years of professional open-source expertise, BoxLang delivers enterprise-grade reliability for mission-critical applications.
About Ortus Solutions
Ortus Solutions is a leading provider of professional open-source software with two decades of experience in enterprise application development. The company specializes in JVM languages, web frameworks, and modern development tooling for Fortune 500 companies and government agencies.
https://www.boxlang.io
https://www.ortussolutions.com
Learn More:
- Website: https://boxlang.io
- Documentation: https://boxlang.ortusbooks.com
- Try Online: https://try.boxlang.io
- Subscription Plans: https://boxlang.io/plans
Don’t Forget to Share This Post!
Comments (0)
No comments yet. Be the first.