Page cover
githubEdit

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/plansarrow-up-right) 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.orgarrow-up-right).

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]envelope.

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-1065arrow-up-right Make sure execution exceptions are propagated to an `exception.log` for all runtimes

BL-1070arrow-up-right Create getHTTPTimeString bif in the CFML Compat Module

BL-1071arrow-up-right Missing bif: createTime()

Improvement

BL-1020arrow-up-right returns 500 status code when hitting the default error page

BL-1027arrow-up-right Allow annotation values of unquoted strings

BL-1028arrow-up-right allow RHS of castas operator to omit quotes

BL-1029arrow-up-right default output to true in Application classes

BL-1034arrow-up-right Disable external DTD validation

BL-1050arrow-up-right Migrate usage of LoggerFactory.getLogger to the internal BoxLang logger classes in the core

BL-1052arrow-up-right BIF and Component abstract objects now have a logger that maps to a `runtime` logger for ease of use

BL-1054arrow-up-right Favor native java methods on a struct if there is a key of that name, but it's not a function

BL-1062arrow-up-right Improve boxpiler selection by using the interface not classes or direct implementations

Bugs

BL-816arrow-up-right Abort should not fire the `onRequestEnd` method ( or it should fail quietly )

BL-1008arrow-up-right Struct.put Usage Throws Error

BL-1023arrow-up-right BX-ORM: When First Request to Application is a CFC, the application scope is undefined when starting ORMApp attempts to instantiate

BL-1025arrow-up-right numeric key access of struct failing for BigDecimal keys

BL-1030arrow-up-right directoryList does not sort by name

BL-1031arrow-up-right Too many pattern letters: m

BL-1032arrow-up-right Trivial: Typo in error message

BL-1033arrow-up-right thread attribute scope needs to be headlessly accessible

BL-1035arrow-up-right structget() incorrectly returning true with cfml-compat installed

BL-1037arrow-up-right String caster doesn't work on char[] and produces incorrect results for Character[]

BL-1038arrow-up-right class dump template doesn't work with compat module

BL-1039arrow-up-right Access and mutation of native Java unboxed arrays doesn't work

BL-1040arrow-up-right Query objects do not allow complex data when adding columns via `queryAddColumn()` with no data type.

BL-1041arrow-up-right Can't use EMail as a returntype from EMail object

BL-1043arrow-up-right shebang detection not working and skipping execution to the REPL

BL-1044arrow-up-right isValid uuid returns false

BL-1045arrow-up-right Error executing dump template

BL-1047arrow-up-right default string representation of exception object

BL-1048arrow-up-right Dereferencing property on Java class not calling getter

BL-1049arrow-up-right Jakarta servlet removed response.setStatus( int, String ) from API

BL-1051arrow-up-right Typo in exception string for parseDateTime

BL-1053arrow-up-right getDirectoryFromPath breaks when passed a null value

BL-1055arrow-up-right Durations created by `createTimespan` can't be casted to strings

BL-1058arrow-up-right `this` scope can no longer be mutated

BL-1059arrow-up-right final access modifier with explicit static scope on assignment not working

BL-1060arrow-up-right static method access on non-imported identifer not working

BL-1061arrow-up-right boxpiler was defaulting to javaboxpiler internally, remove it, it should be null and seeded later

BL-1066arrow-up-right isSimpleValue returns true on Exception in Compat Mode

BL-1068arrow-up-right QueryParam: SQL Server Unknown Column Type `datetime`

BL-1069arrow-up-right ParseDateTime failure with `hh:nn a` mask - e.g. `03:00 PM`

BL-1075arrow-up-right onRequestEnd() not firing for on class requests

Last updated

Was this helpful?