1.0.0-RC.2
March 4th, 2025
Last updated
Was this helpful?
March 4th, 2025
Last updated
Was this helpful?
🚀 BoxLang Release Candidate 2 is Here! 🚀
We’re entering the final stretch of our pre-releases, and we couldn’t be more excited to introduce RC2! 🚀 This release marks a major leap in performance and compatibility, the result of over six months of intensive development. Beyond enhanced stability and seamless integration, RC2 delivers game-changing performance optimizations that push the boundaries of efficiency. Get ready for our fastest, most refined release yet!
RC2 is blazing fast! 🚀 Our latest release delivers unmatched performance in both parsing and runtime execution, outperforming Adobe ColdFusion 2021 and 2023 by 25-37% in many scenarios. These results are backed by rigorous certification testing across TestBox, ColdBox, and over 35 modules, ensuring real-world speed and reliability. You can now check all of our repos and see the performance for yourself.
This means you can seamlessly migrate your Adobe ColdFusion or Lucee applications to BoxLang with no code changes—and they’ll run faster, smoother, and across multiple runtimes! 🚀
But that’s not all—our subscription-based licensing can save you over 70% compared to Adobe ColdFusion, with no restrictions on cores or limitations on SaaS and multi-tenant applications. No restrictions. Just pure freedom to scale. 🔥
We’re excited to welcome Raymond Camden, a renowned leader in the CFML community, as a BoxLang Advocate! 🎉
Raymond, currently collaborating with us as a contractor, brings deep expertise in web development and a passion for making complex technologies more accessible. His insights and experience make him the perfect advocate to explore and champion BoxLang—our modern, CFML-compatible programming language. 🚀
We have now our first premium module for BoxLang +/++ subscribers: BX-REDIS. Our bx-redis
module is now available for you to use if you have a subscription. You can also try it out free of charge by installing it today:
Giving you great capabilities for caching, distributed sessions, pub-subscribe and much more. You can find out about this initial release here ()
Remember that our support license subscriptions () for BoxLang +/++ are available now. Offering enterprise-grade support, priority fixes, premium modules, and exclusive benefits. As an introductory offer, all licenses are available at 25% off for March.
We encourage you to pre-compile your applications using our BoxLang compiler for incredibly safe and high-performance deployments since no parsing is involved. Combined with our new , your applications will fly and be highly performant.
Explore speed improvements to parser
Support CF syntax of space inside elvis operator
allow getSystemSetting() to default to a non-simple value
bx-compat - Client Scope Listener should not start up or look for cache if client management is disabled
Make miniserver bind to 0.0.0.0 by default
Change order of app shutdown
boxAnnounce() and boxAnnounceAsync() get a poolname so you can announce globally or to the request pools
missing bif: BoxRegisterInterceptionPoints() to register interception points for global or request pools
In BL files, only default output=false in tag-based UDFs
Setup the hikari defaults for connection pooling to modern standards
Update query object to return array of structs into a consolidated method: toArrayOfStructs()
Attempts needed remail of left over isSimplevalue evaluations
Rename bx:module to be bx:component
esapiEncode does not allow an zero length input string
BX-ORM: Datasource with name [defaultDatasource] not found in the application or globally
`try`/`finally` doesn't always run `finally`
ASM regression - break exiting out of more than just the loop
LinkedHashMap right-hand assignments are always null.
ReEscape result doesn't match ACF
Classes getting cleared in debug mode
Simplify CLI to install modules
cgi items not being found until you access them
encrypt not working with AES and UU
Encrypt Fails when salt is below 16 bytes in length
bx-mail not reading mail configurations
HTTP - Ensure all exceptions are caught and handled
Mail Module not Loading root-level boxlang.json Mail Server Settings
StructUtil.deepMerge wraps arrays in nested array if left hand side contains the same array
Can't set cookies using a struct
Mail: Classloader issues when sending MultiPart email in Servlet Context
`.duplicate()` Member Method Not Available on Struct,DateTime objects, Queries and Arrays
DirectoryCopy Does not Allow Closure for Filter Arg
QueryNew Does not accept array of Columns as only first arg
Compat: CachePut does not allow numeric decimal number of days for timeSpan or idleTime
String Hash Result Different Between Text and Byte Array
Compat: HTTP result.statusCode Does not Include the status text.
HTTP Request for Binary Object casts fileContent to String
Integer caster not always consistent
HTTP Component getAsBinary attribute does not support `true` and `false` boolean arguments
HTTP Component throws an error when `Host` is explicitly passed as a header
HTTP Component Throws Error when sending Binary Content
HTTP getAsBinary should be treated as an explicit request for binary content unless `never` is passed.
HTTP: Query Params Are Being Double Encoded Even When Encode=false
Within a cfmodule, the variables scope is not available within a .each() loop if the .each loop is called in a function within the module.
When a form is submitted but none of the inputs have names and the form scope is dumped, an error is thrown
Type coercion of an numeric argument passed to java constructor is not being done
Function NOT not found
bx-orm - 'Datasource with name [defaultDatasource] not found ...'
bx-orm - Unable to call generated methods from within class
bx-orm - Generated method hasX() is missing support for value comparison
bx-orm - AddX() method fails on many-to-many relationship properties with "bag is null" error
HMAC Method not supporting binary keys
HTTP `file` attribute not implemented
Math Operations Leave trailing zeros after operation when result is whole number
HTTP ACF and Lucee Treat all Unknown or malformed `Content-Type` Headers as a string response
Compat: Default throw error not a type of `Application`
Error compiling - 'in' was unexpected expecting one of ...
this.customtagpaths not respected - Could not find custom tag
Common Text Cert/Key extensions are being read as Binary data
for loop using var and in throws parsing error
Custom Error Thrown Is Being Wrapped in "Error invoking Supplier" exception
FileRead should only ever return strings
DateTime Comparison equals/isEqual discrepancies
DateCompare Issues when Time units are specified
DateAdd No Longer Allowing Decimals
Allow customTagPaths to be relative
EqualsEquals operator should use `equalTo` method of DateTime in compat mode
Cannot pass BoxLang Functions into ScheduledTask
Nested config values for modules do not get replaced by environment variables
thread safety issue in feature audit
Custom setter that assigns to this scope causes stack overflow with implicit accessor invocation
return type of function not always parsing
Invalid stack height when using a ternary in a context that doesn't expect a return value
semicolon not allowed after pre annotation
`variablename` is not supported as a type
Compat: Date Comparisons in Compat should only be precise to the second
len() BIF needs to treat byte arrays as an array, not a string
return not expr parsing error
CBSecurity Certification
isWDDX BIF missing from wddx module