What's New With 7.4.0

April 27, 2025

Welcome to ColdBox 7.4.0, our last planned release for the 7.x series before our 8.x series starts. Let's review the major updates of these release.

ColdBox Updates

www.boxlang.io

BoxLang Support

With the latest updates, ColdBox extends its capabilities to support the development of entire applications using BoxLang exclusively. This enhancement allows developers to leverage the full power and modern syntax of BoxLang, streamlining the development process and adopting current best practices.

For those who prefer a gradual transition, ColdBox offers the flexibility to integrate BoxLang within existing ColdFusion Markup Language (CFML) applications. Consequently, developers can choose to write components, handlers, views, and models using either BoxLang, CFML, or a combination of both. This dual-support approach not only facilitates a seamless transition for applications migrating from CFML to BoxLang but also enables new projects to be crafted entirely in the more modern and robust BoxLang environment.

There is nothing you do in terms of settings or configuration. ColdBox will detect if your handlers, interceptors, models and views are in BoxLang or CFML and act accordingly and seamlessly.

BoxLang Template

You also now have a bx-default application template you can use to build your applications with. You can find it here: https://github.com/coldbox-templates/bx-default. You can use the coldbox-cli to get started with pure BoxLang apps with a simple command:

coldbox create app skeleton=boxlang

More templates are coming soon.

ColdBox CLI

The entire ColdBox CLI has been updated and all commands now have a new boxlang boolean argument. You can either pass it or it will try to detect if your server of choice is BoxLang or if you have a language: "BoxLang" key in your box.json. If so, then it will treat your project as a BoxLang language and all generations will be BoxLang classes or templates.

coldbox create handler main --boxlang

You can also tell the ColdBox and TestBox CLI that your application is a pure BoxLang application by using the new language setting in your box.json.

{
    
    "language" : "boxlang"

}

CacheBox Updates

DiskStore Rewrite

The entire DiskStore has been rewritten to include better performance but more importantly to be able to be used concurrently and on distributed network drives. It no longer relies on in-memory indexes and each store on each cluster node can rebuild itself.

BoxLang Providers

If you are migrating your ColdBox applications then you will need to update your Lucee/CF Providers to use the BoxLang ones:

Lucee
Adobe
BoxLang Equivalent

LuceeProvider

CFProvider

BoxLangProvider

LuceeColdboxProvider

CFColdBoxProvider

BoxLangColdBoxProvider

Memory Indexers

Memory indexers have also been rewritten to improve stability on clustered servers and to avoid null issues and double map tracking.

LogBox Upates

Rollling file threads had an bad setting and they would be running on a 1 millisecond timer. This not only has been mitigated, but also made it configurable via the rotatorSchedulerMinutes property on the appender.

WireBox Updates

WireBox now completely talks BoxLang and CMFL. Giving it the ability to inject, build and compose objects of either language.

Release Notes

Improvement

COLDBOX-1286 Make sure global scheduler is loaded after modules load.

COLDBOX-1287 If running scheduled tasks manually with a `force` then do not set the next run since this is a forced run.

COLDBOX-1288 Allow Disabling of PrettyJson in Log Output

COLDBOX-1294 Call `reset()` when testing and unloadColdbox is true in the `afterTests()` to make sure the reset procedures are done, not only the shutdown.

COLDBOX-1305 Improvement: Update Config Seeding to Include Original Module Settings

New Feature

COLDBOX-1285 BoxLang Support so you can write your ColdBox apps in BoxLang

COLDBOX-1296 New flow peek() method to do fluent peeks in objects

COLDBOX-1297 Schedulers now have a startupTask( task ) to dynamically startup a task by name or task object

COLDBOX-1306 Better tracking of status code and text on the request context so integration tests are not corrupted by response commitment: getStatusCode(), getStatusText() accessors

Bug

COLDBOX-1280 coldbox.system.cache.policies.LRU cleanup errors

COLDBOX-1281 DateTimeHelper.validateTime Regression

COLDBOX-1282 ScheduledTasks Bug - java.util.concurrent.TimeUnit type error

COLDBOX-1289 Directory Helper Logic in Renderer.cfc is Incorrect and Generates Bad Path On Windows

COLDBOX-1295 Dumps in BugReport.cfm need top attributes

COLDBOX-1304 thisLocationToken is not var scoped

COLDBOX-1311 Remove direct calls to the servlet response.setStatus( int, String ) methods due to jakarta removing statusText

COLDBOX-1317 ACF 2025 has removed htmlEditFormat

COLDBOX-1326 populator discover entity name not accouting for missing entityname

COLDBOX-1327 `layoutLocations` variable error when using event.noLayout()

Last updated

Was this helpful?