Blog

BoxLang v1.2.0 Released

Luis Majano May 29, 2025

Spread the word

Luis Majano

May 29, 2025

Spread the word


Share your thoughts

🔥 BoxLang 1.2 is Here! 🔥

We're excited to announce the release of BoxLang 1.2, a significant milestone that demonstrates our commitment to delivering both cutting-edge features and exceptional performance. This release represents how much innovation the entire BoxLang team can accomplish in just 2 weeks of focused development, bringing you powerful new capabilities while dramatically improving the runtime efficiency that makes BoxLang a compelling choice for modern applications.

What Makes 1.2 Special

BoxLang 1.2 isn't just another incremental update—it's a performance powerhouse packed with developer-friendly enhancements. We've implemented over 30 targeted optimizations across the runtime, from string operations and file handling to function invocations and memory management. These improvements mean your applications will run faster and more efficiently, often without requiring any changes to your existing code.

Headline Features

Maven Home Integration

Enhanced Java Integration: The new Maven pom.xml support for BoxLang Home opens up seamless integration with the entire Java ecosystem, making it easier than ever to leverage existing Java libraries in your BoxLang applications. You can now add any Java dependencies in your BoxLang Home's pom.xml run mvn install and your runtime will be seeded with all the Java Libraries your application needs!

mvn install

Advanced Logging Control: Take complete control of your application's logging with new encoder options (text or json) and flexible appender choices between file and console output. Your logs, your way. You can also now chose between a file or console appender in all of your configuration files.

Developer Experience: From nested grouped output support to the new BoxModuleReload() function for testing workflows, we've focused on making your development process smoother and more productive.

Performance at the Core

This release includes extensive performance optimizations that touch nearly every aspect of the runtime:

  • Optimized Hot Code Paths: Critical operations like string comparisons, numeric casting, and function invocations have been streamlined
  • Smarter Caching: From configuration lookups to file path resolution, we've added intelligent caching where it matters most
  • Reduced Overhead: Eliminated unnecessary operations in frequently-called code, including regex optimizations and stream-to-loop conversions
  • Memory Efficiency: Improved struct operations, hash encoding, and object creation patterns

Compatibility & Stability

We've strengthened BoxLang's compatibility with existing CFML codebases through numerous fixes and enhancements, including better date/time handling, improved query parameter support, and enhanced file operations. Whether you're migrating existing applications or building new ones, BoxLang 1.2 provides a more stable and predictable foundation.

Ready to Upgrade

BoxLang 1.2 includes 50+ improvements and bug fixes that enhance stability, performance, and developer experience. From small quality-of-life improvements to significant runtime optimizations, this release delivers value across the board.

The combination of new features, performance enhancements, and rock-solid stability makes BoxLang 1.2 our most compelling release yet. Whether you're building high-performance web applications, integrating with Java ecosystems, or modernizing legacy CFML code, BoxLang 1.2 provides the tools and performance you need to succeed.

Download BoxLang 1.2 today and experience the difference that thoughtful optimization and feature development can make.

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.

Release Notes

New Features

  • BL-1453 Maven pom.xml for the BoxLang Home so you can integrate with any Java library
  • BL-1464 implement nested grouped output/looping
  • BL-1474 Logger appenders in the boxlang.json can now chose their own encoder: text or json
  • BL-1476 Added ability for loggers to chose between file and console appenders
  • BL-1482 new event ON_FUNCTION_EXCEPTION
  • BL-1485 Update the error template to include a section where the user can contact us if the error is not good enough or we can improve it.

Improvements

  • BL-1393 Add executionTime to result object of bx:http
  • BL-1397 FileCopy( source, targetDirectory ) when using a target directory doesn't work on BoxLang but works on Lucee
  • BL-1400 File bifs have too many casts, do one cast for performance
  • BL-1404 Add a unique request id metadata header when making requests in http so it can track easily
  • BL-1405 Add missing contexts to data interceptors
  • BL-1406 Add a `request` struct to the bxhttp result object
  • BL-1417 Add Allow Arguments to FileCopy and FileMove for granular extension security overrides
  • BL-1419 server.java.defaultLocale, server.java.availableLocales
  • BL-1420 New bif: BoxModuleReload( [name] ) to easily reload modules for testing purposes
  • BL-1421 optimize when LocalizationUtil string casts
  • BL-1422 optimize Struct.putAll()
  • BL-1423 optimize when basescope creates lockname to on demand
  • BL-1424 optimize string compare check for unicode
  • BL-1425 optimize case insensitive instanceof check
  • BL-1426 optimize isNumeric locale parsing and casting
  • BL-1427 optimize file detection/reading from disk unless needed
  • BL-1428 optimize getConfig() by caching at request context
  • BL-1429 Improve performance of string lowercasing and key creation
  • BL-1433 Only include source lines in exceptions when in debug mode
  • BL-1434 Optimize hash base 64 encoding
  • BL-1435 Optimize regex cache key generation
  • BL-1436 Move/Copy BIFs should all default to an overwrite value of true
  • BL-1437 Update the way loggers are setup and retrieved to avoid string and key lookups and accelerate the runtime
  • BL-1438 bif invocation interceptors missing the actual bif
  • BL-1439 BIF Interceptors hot code, only create events if they are states for it
  • BL-1443 order keys in struct dump alphabetically
  • BL-1445 DateTime and Duration Math Should Represent Fractional Days in Math Operations
  • BL-1446 Compat: DateAdd Should accept numeric fractional days as date argument
  • BL-1450 Exclude javaparser and other debug libraries from final jar
  • BL-1454 Optimize FQN class by removing regex usage in hot code
  • BL-1455 optimize generated setter by caching resolved file path
  • BL-1456 Optimize dynamic object by converting stream to loop in hot code
  • BL-1457 optimize output check by caching recursive lookups
  • BL-1458 optimize isEmpty code paths
  • BL-1459 optimize getting function enclosing class by caching
  • BL-1460 optimize number caster true/false string checks
  • BL-1461 optimize BoxStructSerializer class by avoiding struct.entrySet()
  • BL-1462 optimize string compare by removing unnecessary string to lower case
  • BL-1473 Update to use StatusPrinter2 from deprecated StatusPrinter using LogBack
  • BL-1481 Speed improvements for function invocation on hot code
  • BL-1486 Better handle low level parsing errors like java.util.EmptyStackException
  • BL-1489 Improve error messages when registering interceptors using the registration bifs when sending things other than interceptors
  • BL-1490 Add function name to interceptor data for ease of use
  • BL-1493 Accelerate dynamic object method handle executions

Bugs

  • BL-1356 postBIFInvocation event
  • BL-1357 Simple preFunctionInvoke interceptor throws errors due to recursing into itself
  • BL-1385 Module that defines an interceptor has to specify "too much" for the class path
  • BL-1386 ModuleService reload and reloadAll() methods to provide ability for module reloading on development
  • BL-1394 forgot to populate the `populateServerSystemScope` from the override boxlang.json
  • BL-1396 isValid Boolean Returning Incorrect Result on Struct
  • BL-1398 Move default disallowed file extensions to web support and keep CLI open
  • BL-1399 Compat: CreateTime Should Support 0 hour argument
  • BL-1401 FileSystemUtil not absoluting paths when checking existence
  • BL-1402 `replaceNoCase` does not handle `null` strings like Lucee or ACF
  • BL-1403 http not using the user agent if passed by the user
  • BL-1409 Compat: add `server.coldfusion.supportedLocales`
  • BL-1412 Add Application.bx/cfc support for overriding allowed and disallowed extensions
  • BL-1414 this.logger is null in when getting an attempt() from a box future
  • BL-1416 Compat: Support ACF/Lucee `blockedExtForFileUpload` Application Setting
  • BL-1418 parameterized QoQ with maxLength errors
  • BL-1431 function dump template doesn't work in compat
  • BL-1432 CF transpiler not turning off accessors for child classes
  • BL-1441 getPageContext().getRequest() has no getScheme()
  • BL-1442 empty file fields in forms throw error on submit
  • BL-1444 Boxlang does not pickup custom tags that are in the same folder as the file that calls them
  • BL-1447 Compat: DateDiff should support fractional days as date argument
  • BL-1449 when doing a boxlang {action} command it should break and execute
  • BL-1451 Custom tag search is case-sensitive
  • BL-1452 inline annotation errors when literal value is a negative number
  • BL-1463 parser errors on class annotation called abstract
  • BL-1466 self-closing defaultcase tag not parsing
  • BL-1467 if you use options or params that include file extensions, the runner explodes
  • BL-1468 cfqueryparam tag not allowed outside of cfquery tag
  • BL-1469 Building query fails when part of the query is build inside function that outputs directly
  • BL-1470 query escaping of single quotes only escapes the first one, not all
  • BL-1475 `this.sessionStorage` assignment with Application-defined cache throws error.
  • BL-1477 Errors within application startup leave app in unusable state
  • BL-1479 Compat: Error thrown in QueryCompat interception when null param is encountered
  • BL-1483 calling java method with invoke() and no args fails
  • BL-1484 filewrite operations on existing files were not truncating it and leaving content behind.
  • BL-1488 isSimpleValue doesn't work with Keys

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

Please provide a comment!
Invalid security code. Please try again.

Recent Entries

BX-AI 1.2 Released: Claude 4 Support, New Tooling API, CFML Compatibility & More!

BX-AI 1.2 Released: Claude 4 Support, New Tooling API, CFML Compatibility & More!

We’re excited to announce the release of BoxLang AI v1.2, a major update to the BoxLang AI module that powers intelligent applications with a unified AI abstraction layer across even more providers: OpenAI, Claude, Grok, Gemini, and more. This release packs new features for providers, tools, debugging, and customization — making it easier than ever to build multi-runtime, AI-driven BoxLang and CFML applications.

Luis Majano
Luis Majano
June 19, 2025
Ortus Solutions invited at America Digital 2025

Ortus Solutions invited at America Digital 2025

Our participation is more than a presence, it is a commitment to represent El Salvador’s growing influence in the global tech ecosystem and to inspire others to embrace modern software practices.

This invitation is a recognition of our contributions to open source and a reminder of the importance of building with purpose. Whether through BoxLang, ColdBox, or any of our other tools, our focus remains the same: to empower developers, elevate teams, and enable the future of digital transformation.

Maria Jose Herrera
Maria Jose Herrera
June 18, 2025
Introducing the BoxLang Version Manager!

Introducing the BoxLang Version Manager!

We're excited to announce the release of BVM (BoxLang Version Manager), a powerful new tool that makes managing multiple BoxLang installations effortless across Mac, Linux, and Windows Subsystem for Linux (WSL). Whether you're a BoxLang developer working on multiple projects or testing across different versions, BVM is designed to streamline your workflow.

Luis Majano
Luis Majano
June 17, 2025