🚀 BoxLang Release Candidate 1 is Here! 🚀
After nearly a year of relentless iteration, rigorous testing, blood, sweat, setbacks, lots of praying, tears, and over 1,000 resolved tickets, we proudly announce the first Release Candidate (RC1) of BoxLang! With 27 beta versions behind us, we are now on the final stretch toward the official 1.0 release.
This milestone ensures that most of our libraries are fully compatible and certified for BoxLang, making it production-ready. RC1 delivers significant bug fixes, performance optimizations, and stability enhancements, enabling teams to deploy and fine-tune their applications in real-world environments confidently. We strongly encourage the community to start running production workloads now—your feedback will be instrumental in refining BoxLang ahead of the final release.
It has been a true test of faith to get to this point. We are a family/faith based company trying to make an impact on this software world. We are not big tech, we don't have VC cash to burn, we have passion that burns. Please enjoy and give us your feedback.
Licenses Available TODAY!
Additionally, we are thrilled to open up support license subscriptions (https://www.boxlang.io/plans) for BoxLang +/++, offering enterprise-grade support, priority fixes, and exclusive benefits. As an introductory offer, all licenses are available at 50% off for February. In March, with the release of RC2, discounts will adjust to 25% off—scaling down progressively until our official launch at Into The Box 2025 (www.intothebox.org).
These subscriptions are super important for the continued development and vision of BoxLang. The majority of what we do is open-source. We plant in you and your companies. Please consider supporting us in this collective vision.
Let me also remind you that our Visionary Licenses will cease to be offered by the end of this month. Visionary licenses are unique for 10 years and 5 years of support. If you are interested in securing a visionary license, please email us at sales@ortussolutions.com.
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.1
🚀 New Features
BL-1065 Make sure execution exceptions are propagated to an `exception.log` for all runtimes
BL-1070 Create getHTTPTimeString
bif in the CFML Compat Module
BL-1071 Missing bif: createTime()
🔧 Improvements
BL-1020 returns 500 status code when hitting the default error page
BL-1027 Allow annotation values of unquoted strings
BL-1028 allow RHS of castas operator to omit quotes
BL-1029 default output to true in Application classes
BL-1034 Disable external DTD validation
BL-1050 Migrate usage of LoggerFactory.getLogger to the internal BoxLang logger classes in the core
BL-1052 BIF and Component abstract objects now have a logger that maps to a `runtime` logger for ease of use
BL-1054 Favor native java methods on a struct if there is a key of that name, but it's not a function
BL-1062 Improve boxpiler selection by using the interface not classes or direct implementations
🐛 Bug Fixes
BL-816 Abort should not fire the `onRequestEnd` method ( or it should fail quietly )
BL-1008 Struct.put Usage Throws Error
BL-1023 BX-ORM: When First Request to Application is a CFC, the application scope is undefined when starting ORMApp attempts to instantiate
BL-1025 numeric key access of struct failing for BigDecimal keys
BL-1030 directoryList does not sort by name
BL-1031 Too many pattern letters: m
BL-1032 Trivial: Typo in error message
BL-1033 thread attribute scope needs to be headlessly accessible
BL-1035 structget() incorrectly returning true with cfml-compat installed
BL-1037 String caster doesn't work on char[] and produces incorrect results for Character[]
BL-1038 class dump template doesn't work with compat module
BL-1039 Access and mutation of native Java unboxed arrays doesn't work
BL-1040 Query objects do not allow complex data when adding columns via `queryAddColumn()` with no data type.
BL-1041 Can't use EMail as a returntype from EMail object
BL-1043 shebang detection not working and skipping execution to the REPL
BL-1044 isValid uuid returns false
BL-1045 Error executing dump template
BL-1047 default string representation of exception object
BL-1048 Dereferencing property on Java class not calling getter
BL-1049 Jakarta servlet removed response.setStatus( int, String ) from API
BL-1051 Typo in exception string for parseDateTime
BL-1053 getDirectoryFromPath breaks when passed a null value
BL-1055 Durations created by `createTimespan` can't be casted to strings
BL-1058 `this` scope can no longer be mutated
BL-1059 final access modifier with explicit static scope on assignment not working
BL-1060 static method access on non-imported identifer not working
BL-1061 boxpiler was defaulting to javaboxpiler internally, remove it, it should be null and seeded later
BL-1066 isSimpleValue returns true on Exception in Compat Mode
BL-1068 QueryParam: SQL Server Unknown Column Type `datetime`
BL-1069 ParseDateTime failure with `hh:nn a` mask - e.g. `03:00 PM`
BL-1075 onRequestEnd() not firing for on class requests
Add Your Comment