What's New With 7.4.0
April 27, 2025
Last updated
Was this helpful?
April 27, 2025
Last updated
Was this helpful?
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.
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.
More templates are coming soon.
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.
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
.
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.
If you are migrating your ColdBox applications then you will need to update your Lucee/CF Providers to use the BoxLang ones:
LuceeProvider
CFProvider
BoxLangProvider
LuceeColdboxProvider
CFColdBoxProvider
BoxLangColdBoxProvider
Memory indexers have also been rewritten to improve stability on clustered servers and to avoid null issues and double map tracking.
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 now completely talks BoxLang and CMFL. Giving it the ability to inject, build and compose objects of either language.
You also now have a bx-default
application template you can use to build your applications with. You can find it here: . You can use the coldbox-cli
to get started with pure BoxLang apps with a simple command:
Make sure global scheduler is loaded after modules load.
If running scheduled tasks manually with a `force` then do not set the next run since this is a forced run.
Allow Disabling of PrettyJson in Log Output
Call `reset()` when testing and unloadColdbox is true in the `afterTests()` to make sure the reset procedures are done, not only the shutdown.
Improvement: Update Config Seeding to Include Original Module Settings
BoxLang Support so you can write your ColdBox apps in BoxLang
New flow peek() method to do fluent peeks in objects
Schedulers now have a startupTask( task ) to dynamically startup a task by name or task object
Better tracking of status code and text on the request context so integration tests are not corrupted by response commitment: getStatusCode(), getStatusText() accessors
coldbox.system.cache.policies.LRU cleanup errors
DateTimeHelper.validateTime Regression
ScheduledTasks Bug - java.util.concurrent.TimeUnit type error
Directory Helper Logic in Renderer.cfc is Incorrect and Generates Bad Path On Windows
Dumps in BugReport.cfm need top attributes
thisLocationToken is not var scoped
Remove direct calls to the servlet response.setStatus( int, String ) methods due to jakarta removing statusText
ACF 2025 has removed htmlEditFormat
populator discover entity name not accouting for missing entityname
`layoutLocations` variable error when using event.noLayout()
BoxLang Providers
New approach for indexing objects on object stores to allow for concurrency and without separating indexers
JDBCStore has double now overrides when doing insert/updates on caching. Remove one of them
Rewrite CacheBox DiskStore to not rely on in-memory indexer
Make the Rolling File Appender rotator task timer configurable: rotatorSchedulerMinutes property
LogBox Rolling file threads rotator running on an insane millisecond timer instead of minutes
ExceptionBean is referenced but not shipped with Standalone install