š 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. š
Premium Modules Have Landed
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:
# 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)
{% embed url="https://forgebox.io/view/bx-redis" %}
Licenses Available!
{% embed url="https://www.boxlang.io/plans" %} www.boxlang.io/plans {% endembed %}
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: https://www.youtube.com/playlist?list=PLNE-ZbNnndB-40LvAbeSeT2Oi3V2gm_B8
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