Blog

Luis Majano

November 04, 2025

Spread the word


Share your thoughts

The BoxLang team is thrilled to announce the release of BoxLang 1.7.0, a landmark update that brings powerful new capabilities for modern web development, distributed systems, and AI-powered applications. This release introduces Server-Sent Events (SSE) for real-time streaming, a JDBC Cache Store for distributed caching, AST generation tools for code analysis, bytecode compatibility versioning, and significant performance improvements across the runtime.

Plus, we're excited to announce several new BoxLang+ modules for our subscribers, expanding BoxLang's ecosystem with Redis, CSV processing, LDAP, spreadsheet operations, and PDF generation capabilities.

🚀 What's New in 1.7.0

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

Real-Time Streaming with Server-Sent Events (SSE)

BoxLang 1.7.0 introduces first-class support for Server-Sent Events, enabling you to build real-time applications, AI agents with streaming responses, live dashboards, and progressive loading experiences with ease.

AI Response Streaming:

// Stream AI responses in real-time
SSE(
    callback : ( emitter ) => {
        var response = callAIService();
        while ( !emitter.isClosed() && response.hasMoreTokens() ) {
            emitter.send( response.getNextToken(), "token" );
        }
        emitter.send( { complete : true }, "done" );
    },
    async : true,
    keepAliveInterval : 30000,
    timeout : 300000
);

Live Dashboard Updates:

// Stream real-time analytics data
SSE(
    callback : ( emitter ) => {
        var startTime = now();
        var updateInterval = 5000; // Update every 5 seconds
        
        while ( !emitter.isClosed() && dateDiff( "s", startTime, now() ) < 300 ) {
            var metrics = {
                activeUsers : getActiveUserCount(),
                requestsPerSecond : getCurrentRPS(),
                avgResponseTime : getAvgResponseTime(),
                timestamp : now()
            };
            
            emitter.send( metrics, "metrics" );
            sleep( updateInterval );
        }
        
        emitter.close();
    },
    async : true,
    keepAliveInterval : 15000
);

Progress Updates for Long-Running Tasks:

// Stream progress updates for file processing
SSE(
    callback : ( emitter ) => {
        var files = directoryList( uploadPath );
        var total = arrayLen( files );
        
        files.each( ( file, index ) => {
            if ( emitter.isClosed() ) {
                return; // Client disconnected
            }
            
            // Process the file
            processFile( file );
            
            // Send progress update
            emitter.send(
                {
                    processed : index,
                    total : total,
                    percentage : round( ( index / total ) * 100 ),
                    currentFile : getFileFromPath( file )
                },
                "progress",
                index
            );
        } );
        
        emitter.send( { status : "complete", total : total }, "done" );
    },
    async : true,
    timeout : 600000 // 10 minute timeout
);

The SSE implementation includes:

  • Async execution for non-blocking streaming
  • Automatic keep-alive to maintain connections
  • CORS support for cross-origin requests
  • Client disconnect detection with graceful cleanup
  • Large data chunking (automatically splits >32KB messages)

Perfect for building AI chatbots, live notifications, progressive content loading, and real-time analytics dashboards.

Distributed Caching with JDBC Cache Store

Scale your applications horizontally with the new JDBC Cache Store, enabling cache sharing across multiple BoxLang instances backed by your existing database infrastructure.

// Configure in boxlang.json
{
    "caches" : {
        "distributedCache" : {
            "provider" : "BoxCache",
            "properties" : {
                "objectStore" : "JDBCStore",
                "datasource" : "myDatasource",
                "table" : "boxlang_cache",
                "autoCreate" : true,
                "maxObjects" : 1000,
                "evictionPolicy" : "LRU"
            }
        }
    }
}

The JDBC Cache Store supports all major databases (Oracle, MySQL, PostgreSQL, SQL Server, Derby, HSQLDB, SQLite) with automatic schema management, vendor-optimized SQL generation, and full eviction policy support. All cache stores now expose an isDistributed() method for ecosystem tools to detect distribution capabilities.

Code Analysis with BoxAST()

Build powerful code analysis tools, linters, formatters, and migration utilities with the new BoxAST() BIF, providing programmatic access to BoxLang's Abstract Syntax Tree.

// Parse BoxLang code
ast = BoxAST( source : "x = 1 + 2; y = x * 3;" );

// Or use the convenient member method
ast = "function hello() { return 'world'; }".toAST();

// Parse from files
ast = BoxAST( filepath : "myScript.bx" );

// Return as JSON for external tools
astJson = BoxAST(
    source : "function hello() { return 'world'; }",
    returnType : "json"
);

// Parse CFML code for migration tools
cfAst = BoxAST(
    source : "<cfset x = 1><cfoutput>#x#</cfoutput>",
    sourceType : "cftemplate"
);

Perfect for building custom linters, code generators, refactoring tools, documentation generators, and CFML-to-BoxLang migration utilities.

Bytecode Compatibility Versioning

BoxLang 1.7.0 implements bytecode compatibility versioning, ensuring compiled classes remain compatible across runtime versions. This enhancement improves module stability and provides better guarantees when distributing compiled BoxLang code.

With bytecode versioning, you can:

  • Deploy with confidence - Compiled modules maintain compatibility across BoxLang updates
  • Manage dependencies - Better tracking of compiled code versions in your ecosystem
  • Optimize module loading - Runtime can validate bytecode compatibility before execution
  • Improve stability - Prevent runtime errors from bytecode incompatibilities

This is especially important for BoxLang module authors and teams managing large codebases across multiple environments.

⚡ Performance Improvements

BoxLang 1.7.0 delivers significant performance gains across the board:

  • Scheduled Tasks: Major performance boost through optimized concurrent maps
  • Static Initializers: Faster class initialization
  • ASM Generation: Streamlined bytecode generation eliminating disk operations
  • Cache Operations: Performance tuning across all cache store implementations

🔧 Developer Experience Enhancements

Dynamic Object Creation with Custom Class Loaders

customLoader = createObject( "java", "java.net.URLClassLoader" )
    .init( [ url ] );

proxy = createDynamicProxy(
    listener,
    [ "com.example.Interface" ],
    customLoader
);

HTTP Client Certificate Support

http url="https://secure-api.com" {
    httpparam type="certificate" file="client-cert.p12" password="secret";
}

Improved Dumping

All built-in dump() member methods have been renamed to .bxDump() to prevent conflicts with user-defined methods, with better handling of Java types, recursive references, and restricted fields.

🎁 New BoxLang+ Modules for Subscribers

We're excited to announce several new modules available exclusively to BoxLang+ subscribers:

  • bx-redis - High-performance Redis integration
  • bx-csv - Advanced CSV processing capabilities
  • bx-ldap - LDAP directory services integration
  • bx-spreadsheet - Excel and spreadsheet operations
  • bx-pdf - PDF generation and manipulation

Coming Soon: bx-couchbase, bx-mongodb, bx-elasticsearch, and more!

Not a subscriber yet? Learn more about BoxLang+ and unlock these powerful modules.

🐛 Bug Fixes & Stability

This release includes over 40 bug fixes improving stability across:

  • Database operations and stored procedures
  • File operations and uploads
  • HTTP handling and query parameters
  • Path resolution and mappings
  • CFML compatibility
  • Windows platform support

📦 Installation & Upgrade

Quick Installer

Mac/Unix

/bin/bash -c "$(curl -fsSL https://install.boxlang.io)"

Powershell

/bin/bash -c "$(curl -fsSL https://install.boxlang.io)"

BoxLang Version Manager (BVM)

bvm install latest
bvm use latest

Maven

<dependency>
    <groupId>io.boxlang</groupId>
    <artifactId>boxlang</artifactId>
    <version>1.7.0</version>
</dependency>

Direct Download

Download from boxlang.io/download

⚠️ Migration Notes

Breaking Change: The dump() member method has been renamed to .bxDump() to avoid conflicts with user-defined methods. Update your code:

// Old
array.dump();

// New
array.bxDump();

🙏 Thank You

A huge thank you to our community for your continued feedback, bug reports, and contributions. Your input drives BoxLang forward!

📚 Resources

Ready to experience real-time streaming, distributed caching, and blazing performance? Upgrade to BoxLang 1.7.0 today!

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 Jan Recap 2026

Ortus & BoxLang Jan Recap 2026

January kicked off with strong momentum across the Ortus Solutions ecosystem, bringing key product releases, major improvements to CommandBox and BoxLang, new cloud-focused learning resources, and exciting announcements for upcoming events.

Victor Campos
Victor Campos
February 02, 2026
BoxLang AI: The Foundation for Real-World AI Systems!

BoxLang AI: The Foundation for Real-World AI Systems!

BoxLang AI: From AI Experiments to Real-World Systems!

Why we built BoxLang AI?

AI is everywhere. New models, new tools, new announcements every week. But for most teams, the real challenge isn’t choosing ...

Victor Campos
Victor Campos
January 30, 2026
Speaker Featuring - Round 1

Speaker Featuring - Round 1

Every conference is more than the talks we see on stage it’s also the story of the people who make it possible.

With the first round of Into the Box 2026 sessions and workshops now live, we’re excited to introduce some of the speakers who will be joining us this year. These community members, practitioners, and Ortus team experts bring decades of real-world experience across CFML, BoxLang, JVM modernization, testing, AI, and cloud-native development.

Victor Campos
Victor Campos
January 26, 2026
// Remove it when the Silicon theme is implemented document.querySelector('.career-job-card').addEventListener('click', function() { const details = this.querySelector('.career-job-details'); details.style.display = details.style.display === 'block' ? 'none' : 'block'; });