Blog

Luis Majano

September 01, 2025

Spread the word


Share your thoughts

BoxLang 1.5.0 has landed, and it's packed with features that will transform how you build modern applications. This isn't just another incremental update—we've reimagined performance from the ground up, making BoxLang faster, smarter, and more scalable than ever before.

From lightning-fast serverless deployments to breakthrough parallel processing capabilities, BoxLang 1.5.0 represents weeks of engineering focused on one goal: making your applications perform better while keeping your code simple and maintainable.

You can find our full release notes here: https://boxlang.ortusbooks.com/readme/release-history/1.5.0

🚀 What's New at a Glance

  • 🏗️ AWS Lambda Runtime Revolution - Class caching, connection pooling, and convention-based URL to Class routing
  • ⚡ Virtual Threads for Parallel Operations - Leverage Java's virtual threads across all parallel BIF operations
  • 📊 Enhanced Database Operations - Multiple SQL statements, better parameter handling, and metadata capture
  • 🔗 Improved Java Interoperability - Better method resolution and primitive type handling
  • 🛡️ Security & Reliability - Enhanced file upload security and memory leak prevention

🏗️ AWS Lambda Gets a Major Performance Boost

If you're running BoxLang on AWS Lambda, this release is a game-changer. We've completely reimagined how BoxLang performs in serverless environments.

Lightning-Fast Cold Starts with Class Caching

BoxLang now caches compiled lambda classes, eliminating expensive recompilations on subsequent invocations. In our tests, this reduced cold start times by up to 70% for complex applications.

// Your existing lambda handlers automatically benefit from class caching
function handler( event, context ) {
    // Compiled classes are cached automatically - no code changes needed!
    return {
        "statusCode" : 200,
        "body" : serializeJSON( processEvent( event ) )
    };
}

Convention-Based Multi-Function Lambdas

Building multi-endpoint APIs just got incredibly simple with our new convention-based routing:

// URL: /products -> Products.bx
// URL: /home-savings -> HomeSavings.bx  
// URL: /user-profile -> UserProfile.bx

// Products.bx - handles /products automatically
function handler( event, context ) {
    return {
        "statusCode" : 200,
        "body" : getProductCatalog()
    };
}

Configurable Connection Pooling

Fine-tune your Lambda performance with the new BOXLANG_LAMBDA_CONNECTION_POOL_SIZE environment variable. Perfect for applications with varying database load patterns.

⚡ Virtual Threads: The Future of Parallel Processing

Java's virtual threads are here, and BoxLang makes them incredibly easy to use. Every parallel BIF now supports virtual threads, giving you massive scalability improvements with zero complexity. Over 27 different BIFs now support virtual threads.

Before and After: A Real-World Example

Let's say you're processing a large dataset with API calls:

// Before: Limited by platform threads
results = arrayMap( largeDataset, ( item ) => {
    return callExternalAPI( item ); // I/O bound operation
}, 10 ); // Limited to 10 platform threads

// After: Virtually unlimited concurrency
results = arrayMap( largeDataset, ( item ) => {
    return callExternalAPI( item ); // Same operation
}, true, true ); // Auto threads + virtual = thousands of concurrent operations!

Performance That Scales

Virtual threads use significantly less memory than traditional platform threads and can handle thousands of concurrent operations without thread pool exhaustion. Perfect for:

  • API integrations processing hundreds of endpoints
  • Data transformations on large datasets
  • I/O-heavy operations like file processing or database calls

All parallel BIFs support virtual threads: arrayMap(), listFilter(), queryEach(), structEvery(), and many more!


📊 Database Operations Get Smarter

Multiple SQL Statements in One Call

No more juggling multiple queryExecute() calls. Execute complex database operations atomically:

// Execute multiple statements together
result = queryExecute( "
    UPDATE users SET last_login = NOW() WHERE id = :userID;
    INSERT INTO login_log (user_id, login_time) VALUES (:userID, NOW());
    SELECT * FROM users WHERE id = :userID;
", {
    "userID" : { value: 123, cfsqltype: "numeric" }
} );

Enhanced Metadata Capture

Track generated keys and update counts automatically:

// Know exactly what happened in your database
result = queryExecute( "
    INSERT INTO orders (customer_id, total) 
    VALUES (:customerID, :total)
", params, { result: "insertResult" } );

// Access rich metadata
newOrderID = insertResult.generatedKey;
affectedRows = insertResult.recordCount;

🔗 Java Interop Just Got Smarter

Working with Java libraries is now more intuitive than ever. BoxLang 1.5.0 features improved method resolution for overloaded Java methods and better handling of primitive type expectations.

// Complex Java interop now "just works"
formatter = createObject( "java", "java.text.DecimalFormat" ).init( "#,##0.00" );
boxLangNumber = 1234.56;
formatted = formatter.format( boxLangNumber ); // Correctly resolves overloaded method

🛡️ Security & Reliability Improvements

Enhanced File Upload Security

The fileUpload() function now includes a blockedExtensions argument for better security:

// Secure file uploads with extension blocking
result = fileUpload( 
    destination = "/uploads/", 
    fileField = "attachment",
    blockedExtensions = [ "exe", "bat", "com" ],
    allowedExtensions = [ "jpg", "png", "pdf", "docx" ]
);

Memory Leak Prevention

Enhanced thread management prevents memory leaks in long-running applications, making BoxLang even more suitable for enterprise production environments.


🏗️ CFML Compatibility Enhancements

Script Custom Tag Support

Adobe ColdFusion developers can now use their favorite script-based custom tags:

// CustomButton.cfc (custom tag)
component {
    function onStart() {
        if ( !structKeyExists( attributes, "text" ) ) {
            attributes.text = "Click Me";
        }
        return true;
    }
    
    function onEnd() {
        writeOutput( '<button class="btn btn-primary">' & attributes.text & '</button>' );
        return true;
    }
}

// Usage in template - familiar CFML syntax
bx:customButton text="Save Changes";

Encrypted Datasource Passwords

Security-conscious teams can now use Lucee-style encrypted datasource passwords in their BoxLang configurations.


🚀 Real-World Impact

Serverless Applications

  • Simplified multi-function architectures with convention-based routing
  • Better resource utilization with configurable connection pooling

Data Processing

  • Massive parallelization with virtual threads for I/O-bound operations
  • Improved throughput for API integrations and data transformations
  • Better memory efficiency for long-running batch processes

Enterprise Applications

  • Enhanced reliability with memory leak prevention
  • Better error messages for easier debugging
  • Improved Java interop for complex integrations

🎯 Migration Made Easy

The best part? BoxLang 1.5.0 has no breaking changes. Your existing code will run unchanged while automatically benefiting from performance improvements.

  1. AWS Users: Set the BOXLANG_LAMBDA_CONNECTION_POOL_SIZE environment variable
  2. Performance-Critical Apps: Start using virtual threads in your parallel operations
  3. File Upload Apps: Add the blockedExtensions argument for better security

📥 Get BoxLang 1.5.0 Today

Ready to experience the next evolution of CFML? Download BoxLang 1.5.0 now:

Download

Please visit our download page or our quick installation guides to upgrade your installation.

Professional Open Source

BoxLang is a professional open-source product, with three different licences:

  1. Open-Source Apache2
  2. BoxLang +
  3. BoxLang ++

BoxLang is free, open-source software under the Apache 2.0 license. We encourage and support community contributions. BoxLang+ and BoxLang ++ are commercial versions offering support and enterprise features. Our licensing model is based on fairness and the golden rule: Do to others as you want them to do to you. No hidden pricing or pricing on cores, RAM, SaaS, multi-domain or ridiculous ways to get your money. Transparent and fair.

BoxLang Subscription Plans

BoxLang is more than just a language; it's a movement.

Join us and redefine development on the JVM Ready to learn more? Explore BoxLang's Features, Documentation, and Community.

Join the BoxLang Community ⚡️

Be part of the movement shaping the future of web development. Stay connected and receive the latest updates on Into the Box 2025, product launches, tool updates, and more.

Subscribe to our newsletter for exclusive content.

Follow Us on Social media and don’t miss any news and updates:

Join the BoxLang and CFML legends at Into the Box 2025. Let’s learn, share, and code together for a modern, cutting-edge web development future.

Add Your Comment

Recent Entries

Ortus & BoxLang November Recap 2025

Ortus & BoxLang November Recap 2025

November 2025 was a big month at Ortus. BoxLang 1.7.0 arrived with real-time streaming, distributed caching, and faster compiler internals. ColdBox gained a cleaner debugging experience with full Whoops support, while CBWIRE 5 launched with stronger security, smarter lifecycles, and easier uploads.

Victor Campos
Victor Campos
December 02, 2025
Thanksgiving Week Extended + Cyber Monday Deals Are Live!

Thanksgiving Week Extended + Cyber Monday Deals Are Live!

Because you asked; we’re extending the Thanksgiving Week offer and officially launching our Cyber Monday BoxLang Deals today!

To support everyone who wants to understand whether they’re running on legacy CFML or modern-ready code, and whether BoxLang is the right fit; we’ve decided to extend the dates and increase the number of companies we can support.

Maria Jose Herrera
Maria Jose Herrera
December 01, 2025
Registration Is Now Open for Your Free BoxLang Compatibility Report! 🦃

Registration Is Now Open for Your Free BoxLang Compatibility Report! 🦃

Originally set to open on the 24th, we’ve decided to release the registration early, starting November 20th, so we can begin scheduling your BoxLang Compatibility Report audits next week and make sure they’re completed before the end of the year.

Maria Jose Herrera
Maria Jose Herrera
November 20, 2025