Page cover

1.0.0-RC.1

February 18, 2025

🚀 BoxLang Release Candidate 1 is Here! 🚀

After nearly a year of relentless iteration, rigorous testing, blood, sweat, 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.

Licenses Available TODAY!

www.boxlang.io/plans

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

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 [email protected].

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

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()

Improvement

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

Bugs

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

Last updated

Was this helpful?