# 1.0.0-RC.1

🚀 **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!

{% embed url="<https://www.boxlang.io/plans>" %}
[www.boxlang.io/plans](http://www.boxlang.io/plans)
{% endembed %}

Additionally, we are thrilled to open up **support license subscriptions (**[**https://www.boxlang.io/plans**](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**](http://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** [**sales@ortussolutions.com**](mailto: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](https://boxlang.ortusbooks.com/getting-started/configuration/directives), your applications will fly and be highly performant.

## Release Notes

### New Features

[BL-1065](https://ortussolutions.atlassian.net/browse/BL-1065) Make sure execution exceptions are propagated to an \`exception.log\` for all runtimes

[BL-1070](https://ortussolutions.atlassian.net/browse/BL-1070) Create `getHTTPTimeString` bif in the CFML Compat Module

[BL-1071](https://ortussolutions.atlassian.net/browse/BL-1071) Missing bif: `createTime()`

### Improvement

[BL-1020](https://ortussolutions.atlassian.net/browse/BL-1020) returns 500 status code when hitting the default error page

[BL-1027](https://ortussolutions.atlassian.net/browse/BL-1027) Allow annotation values of unquoted strings

[BL-1028](https://ortussolutions.atlassian.net/browse/BL-1028) allow RHS of castas operator to omit quotes

[BL-1029](https://ortussolutions.atlassian.net/browse/BL-1029) default output to true in Application classes

[BL-1034](https://ortussolutions.atlassian.net/browse/BL-1034) Disable external DTD validation

[BL-1050](https://ortussolutions.atlassian.net/browse/BL-1050) Migrate usage of LoggerFactory.getLogger to the internal BoxLang logger classes in the core

[BL-1052](https://ortussolutions.atlassian.net/browse/BL-1052) BIF and Component abstract objects now have a logger that maps to a \`runtime\` logger for ease of use

[BL-1054](https://ortussolutions.atlassian.net/browse/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](https://ortussolutions.atlassian.net/browse/BL-1062) Improve boxpiler selection by using the interface not classes or direct implementations

### Bugs

[BL-816](https://ortussolutions.atlassian.net/browse/BL-816) Abort should not fire the \`onRequestEnd\` method ( or it should fail quietly )

[BL-1008](https://ortussolutions.atlassian.net/browse/BL-1008) Struct.put Usage Throws Error

[BL-1023](https://ortussolutions.atlassian.net/browse/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](https://ortussolutions.atlassian.net/browse/BL-1025) numeric key access of struct failing for BigDecimal keys

[BL-1030](https://ortussolutions.atlassian.net/browse/BL-1030) directoryList does not sort by name

[BL-1031](https://ortussolutions.atlassian.net/browse/BL-1031) Too many pattern letters: m

[BL-1032](https://ortussolutions.atlassian.net/browse/BL-1032) Trivial: Typo in error message

[BL-1033](https://ortussolutions.atlassian.net/browse/BL-1033) thread attribute scope needs to be headlessly accessible

[BL-1035](https://ortussolutions.atlassian.net/browse/BL-1035) structget() incorrectly returning true with cfml-compat installed

[BL-1037](https://ortussolutions.atlassian.net/browse/BL-1037) String caster doesn't work on char\[] and produces incorrect results for Character\[]

[BL-1038](https://ortussolutions.atlassian.net/browse/BL-1038) class dump template doesn't work with compat module

[BL-1039](https://ortussolutions.atlassian.net/browse/BL-1039) Access and mutation of native Java unboxed arrays doesn't work

[BL-1040](https://ortussolutions.atlassian.net/browse/BL-1040) Query objects do not allow complex data when adding columns via \`queryAddColumn()\` with no data type.

[BL-1041](https://ortussolutions.atlassian.net/browse/BL-1041) Can't use EMail as a returntype from EMail object

[BL-1043](https://ortussolutions.atlassian.net/browse/BL-1043) shebang detection not working and skipping execution to the REPL

[BL-1044](https://ortussolutions.atlassian.net/browse/BL-1044) isValid uuid returns false

[BL-1045](https://ortussolutions.atlassian.net/browse/BL-1045) Error executing dump template

[BL-1047](https://ortussolutions.atlassian.net/browse/BL-1047) default string representation of exception object

[BL-1048](https://ortussolutions.atlassian.net/browse/BL-1048) Dereferencing property on Java class not calling getter

[BL-1049](https://ortussolutions.atlassian.net/browse/BL-1049) Jakarta servlet removed response.setStatus( int, String ) from API

[BL-1051](https://ortussolutions.atlassian.net/browse/BL-1051) Typo in exception string for parseDateTime

[BL-1053](https://ortussolutions.atlassian.net/browse/BL-1053) getDirectoryFromPath breaks when passed a null value

[BL-1055](https://ortussolutions.atlassian.net/browse/BL-1055) Durations created by \`createTimespan\` can't be casted to strings

[BL-1058](https://ortussolutions.atlassian.net/browse/BL-1058) \`this\` scope can no longer be mutated

[BL-1059](https://ortussolutions.atlassian.net/browse/BL-1059) final access modifier with explicit static scope on assignment not working

[BL-1060](https://ortussolutions.atlassian.net/browse/BL-1060) static method access on non-imported identifer not working

[BL-1061](https://ortussolutions.atlassian.net/browse/BL-1061) boxpiler was defaulting to javaboxpiler internally, remove it, it should be null and seeded later

[BL-1066](https://ortussolutions.atlassian.net/browse/BL-1066) isSimpleValue returns true on Exception in Compat Mode

[BL-1068](https://ortussolutions.atlassian.net/browse/BL-1068) QueryParam: SQL Server Unknown Column Type \`datetime\`

[BL-1069](https://ortussolutions.atlassian.net/browse/BL-1069) ParseDateTime failure with \`hh:nn a\` mask - e.g. \`03:00 PM\`

[BL-1075](https://ortussolutions.atlassian.net/browse/BL-1075) onRequestEnd() not firing for on class requests
