Blog

BoxLang 1.0.0 RC2 Launched

Luis Majano March 14, 2025

Spread the word

Luis Majano

March 14, 2025

Spread the word


Share your thoughts

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 More

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:

# OS
install-bx-module bx-redis

# CommandBox
box install bx-redis

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-redis

Licenses Available!

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

What is BoxLang?

BoxLang is a modern dynamic JVM language that can be deployed on multiple runtimes: operating system (Windows/Mac/*nix/Embedded), web server, lambda, iOS, android, web assembly, and more. BoxLang combines many features from different programming languages, including Java, CFML, Python, Ruby, Go, and PHP, to provide developers with a modern and expressive syntax.

It is also a drop-in replacement for Adobe ColdFusion and Lucee Engines.


How to get started?

Visit our docs at https://boxlang.ortusbooks.com and get coding today. If you want to try it out on the web then go to our online REPL at https://try.boxlang.io. You can also checkout our YouTube playlist


Release Notes

Here are the latest release notes: https://boxlang.ortusbooks.com/readme/release-history/1.0.0-rc.2

🔧 Improvements

BL-1021 Explore speed improvements to parser

BL-1084 Support CF syntax of space inside elvis operator

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

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

BL-1093 Make miniserver bind to 0.0.0.0 by default

BL-1143 Change order of app shutdown

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

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

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

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

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

BL-1158 Attempts needed remail of left over isSimplevalue evaluations

BL-1159 Rename bx:module to be bx:component


🐛 Bug Fixes

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

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

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

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

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

BL-1063 ReEscape result doesn't match ACF

BL-1064 Classes getting cleared in debug mode

BL-1077 Simplify CLI to install modules

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

BL-1079 encrypt not working with AES and UU

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

BL-1082 bx-mail not reading mail configurations

BL-1085 HTTP - Ensure all exceptions are caught and handled

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

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

BL-1088 Can't set cookies using a struct

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

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

BL-1095 DirectoryCopy Does not Allow Closure for Filter Arg

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

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

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

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

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

BL-1102 Integer caster not always consistent

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

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

BL-1105 HTTP Component Throws Error when sending Binary Content

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

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

BL-1110 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-1111 When a form is submitted but none of the inputs have names and the form scope is dumped, an error is thrown

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

BL-1113 Function NOT not found

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

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

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

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

BL-1118 HMAC Method not supporting binary keys

BL-1120 HTTP `file` attribute not implemented

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

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

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

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

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

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

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

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

BL-1132 FileRead should only ever return strings

BL-1133 DateTime Comparison equals/isEqual discrepancies

BL-1134 DateCompare Issues when Time units are specified

BL-1135 DateAdd No Longer Allowing Decimals

BL-1137 Allow customTagPaths to be relative

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

BL-1139 Cannot pass BoxLang Functions into ScheduledTask

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

BL-1142 thread safety issue in feature audit

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

BL-1146 return type of function not always parsing

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

BL-1151 semicolon not allowed after pre annotation

BL-1152 `variablename` is not supported as a type

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

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

BL-1160 return not expr parsing error

Add Your Comment

Recent Entries

ColdFusion Custom Development: The Smart Alternative to One-Size-Fits-All Solutions

ColdFusion Custom Development: The Smart Alternative to One-Size-Fits-All Solutions

Is Your ColdFusion Application Keeping Up with Your Business Needs?

Many ColdFusion applications were built years ago and no longer align with modern business requirements. Companies relying on off-the-shelf solutions often find that these systems lack flexibility, scalability, and seamless integration with modern tools.

If your ColdFusion application is struggling to keep up, it may be time to consider custom development. A t...

Cristobal Escobar
Cristobal Escobar
April 11, 2025
Into the Box 2025 Virtual Tickets Are Now LIVE!

Into the Box 2025 Virtual Tickets Are Now LIVE!

The wait is over! By popular demand, Into the Box 2025 virtual tickets are officially available! Secure your spot today and take advantage of our exclusive early bird pricing before it’s gone!

We’re bringing the community together to push the boundaries of modern development—because change starts with us. We’ve taken the first step, now it’s your turn to evolve and take action!

Maria Jose Herrera
Maria Jose Herrera
April 03, 2025