Page cover
githubEdit

1.0.0-RC.2

March 4th, 2025

🚀 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!

Feel the Need for Speed 🚀🔥

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.

Adobe ColdFusion / Lucee Drop-In Replacement

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. 🔥

Ray Camden BoxLang Evangelist

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. 🚀

Read Morearrow-up-right

Premium Modules Have Landed

We have now our first premium module for BoxLang +/++ subscribers: BX-REDIS. Our bx-redismodule 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 (https://forgebox.io/view/bx-redisarrow-up-right)

Licenses Available!

www.boxlang.io/plans

Remember that our support license subscriptions (https://www.boxlang.io/plansarrow-up-right) 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.

Production Tips

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 trusted cache settings, your applications will fly and be highly performant.


Release Notes

Improvements

BL-1021arrow-up-right Explore speed improvements to parser

BL-1084arrow-up-right Support CF syntax of space inside elvis operator

BL-1089arrow-up-right allow getSystemSetting() to default to a non-simple value

BL-1090arrow-up-right bx-compat - Client Scope Listener should not start up or look for cache if client management is disabled

BL-1093arrow-up-right Make miniserver bind to 0.0.0.0 by default

BL-1143arrow-up-right Change order of app shutdown

BL-1147arrow-up-right boxAnnounce() and boxAnnounceAsync() get a poolname so you can announce globally or to the request pools

BL-1148arrow-up-right missing bif: BoxRegisterInterceptionPoints() to register interception points for global or request pools

BL-1149arrow-up-right In BL files, only default output=false in tag-based UDFs

BL-1153arrow-up-right Setup the hikari defaults for connection pooling to modern standards

BL-1155arrow-up-right Update query object to return array of structs into a consolidated method: toArrayOfStructs()

BL-1158arrow-up-right Attempts needed remail of left over isSimplevalue evaluations

BL-1159arrow-up-right Rename bx:module to be bx:component

Bugs

BL-1018arrow-up-right esapiEncode does not allow an zero length input string

BL-1024arrow-up-right BX-ORM: Datasource with name [defaultDatasource] not found in the application or globally

BL-1026arrow-up-right `try`/`finally` doesn't always run `finally`

BL-1036arrow-up-right ASM regression - break exiting out of more than just the loop

BL-1056arrow-up-right LinkedHashMap right-hand assignments are always null.

BL-1063arrow-up-right ReEscape result doesn't match ACF

BL-1064arrow-up-right Classes getting cleared in debug mode

BL-1077arrow-up-right Simplify CLI to install modules

BL-1078arrow-up-right cgi items not being found until you access them

BL-1079arrow-up-right encrypt not working with AES and UU

BL-1080arrow-up-right Encrypt Fails when salt is below 16 bytes in length

BL-1082arrow-up-right bx-mail not reading mail configurations

BL-1085arrow-up-right HTTP - Ensure all exceptions are caught and handled

BL-1086arrow-up-right Mail Module not Loading root-level boxlang.json Mail Server Settings

BL-1087arrow-up-right StructUtil.deepMerge wraps arrays in nested array if left hand side contains the same array

BL-1088arrow-up-right Can't set cookies using a struct

BL-1092arrow-up-right Mail: Classloader issues when sending MultiPart email in Servlet Context

BL-1094arrow-up-right `.duplicate()` Member Method Not Available on Struct,DateTime objects, Queries and Arrays

BL-1095arrow-up-right DirectoryCopy Does not Allow Closure for Filter Arg

BL-1096arrow-up-right QueryNew Does not accept array of Columns as only first arg

BL-1097arrow-up-right Compat: CachePut does not allow numeric decimal number of days for timeSpan or idleTime

BL-1099arrow-up-right String Hash Result Different Between Text and Byte Array

BL-1100arrow-up-right Compat: HTTP result.statusCode Does not Include the status text.

BL-1101arrow-up-right HTTP Request for Binary Object casts fileContent to String

BL-1102arrow-up-right Integer caster not always consistent

BL-1103arrow-up-right HTTP Component getAsBinary attribute does not support `true` and `false` boolean arguments

BL-1104arrow-up-right HTTP Component throws an error when `Host` is explicitly passed as a header

BL-1105arrow-up-right HTTP Component Throws Error when sending Binary Content

BL-1106arrow-up-right HTTP getAsBinary should be treated as an explicit request for binary content unless `never` is passed.

BL-1109arrow-up-right HTTP: Query Params Are Being Double Encoded Even When Encode=false

BL-1110arrow-up-right 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.

BL-1111arrow-up-right When a form is submitted but none of the inputs have names and the form scope is dumped, an error is thrown

BL-1112arrow-up-right Type coercion of an numeric argument passed to java constructor is not being done

BL-1113arrow-up-right Function NOT not found

BL-1114arrow-up-right bx-orm - 'Datasource with name [defaultDatasource] not found ...'

BL-1115arrow-up-right bx-orm - Unable to call generated methods from within class

BL-1116arrow-up-right bx-orm - Generated method hasX() is missing support for value comparison

BL-1117arrow-up-right bx-orm - AddX() method fails on many-to-many relationship properties with "bag is null" error

BL-1118arrow-up-right HMAC Method not supporting binary keys

BL-1120arrow-up-right HTTP `file` attribute not implemented

BL-1121arrow-up-right Math Operations Leave trailing zeros after operation when result is whole number

BL-1122arrow-up-right HTTP ACF and Lucee Treat all Unknown or malformed `Content-Type` Headers as a string response

BL-1124arrow-up-right Compat: Default throw error not a type of `Application`

BL-1125arrow-up-right Error compiling - 'in' was unexpected expecting one of ...

BL-1126arrow-up-right this.customtagpaths not respected - Could not find custom tag

BL-1128arrow-up-right Common Text Cert/Key extensions are being read as Binary data

BL-1129arrow-up-right for loop using var and in throws parsing error

BL-1130arrow-up-right Custom Error Thrown Is Being Wrapped in "Error invoking Supplier" exception

BL-1132arrow-up-right FileRead should only ever return strings

BL-1133arrow-up-right DateTime Comparison equals/isEqual discrepancies

BL-1134arrow-up-right DateCompare Issues when Time units are specified

BL-1135arrow-up-right DateAdd No Longer Allowing Decimals

BL-1137arrow-up-right Allow customTagPaths to be relative

BL-1138arrow-up-right EqualsEquals operator should use `equalTo` method of DateTime in compat mode

BL-1139arrow-up-right Cannot pass BoxLang Functions into ScheduledTask

BL-1140arrow-up-right Nested config values for modules do not get replaced by environment variables

BL-1142arrow-up-right thread safety issue in feature audit

BL-1144arrow-up-right Custom setter that assigns to this scope causes stack overflow with implicit accessor invocation

BL-1146arrow-up-right return type of function not always parsing

BL-1150arrow-up-right Invalid stack height when using a ternary in a context that doesn't expect a return value

BL-1151arrow-up-right semicolon not allowed after pre annotation

BL-1152arrow-up-right `variablename` is not supported as a type

BL-1156arrow-up-right Compat: Date Comparisons in Compat should only be precise to the second

BL-1157arrow-up-right len() BIF needs to treat byte arrays as an array, not a string

BL-1160arrow-up-right return not expr parsing error

Tasks

BL-814arrow-up-right CBSecurity Certification

BL-1076arrow-up-right isWDDX BIF missing from wddx module

Last updated

Was this helpful?