ColdBox HMVC Documentation
DocsSourceSupportTraining
7.x
7.x
  • Introduction
    • Contributing Guide
    • Release History
      • What's New With 7.4.0
      • What's New With 7.3.x
      • What's New With 7.2.0
      • What's New With 7.1.0
      • What's New With 7.0.0
        • Release Notes
    • Upgrading to ColdBox 7
    • What is ColdBox
    • What is MVC
    • About This Book
      • Author
  • For Newbies
    • 60 Minute Quick Start
      • Installing ColdBox
      • My First ColdBox Application
      • My First Handler & View
      • Linking Events Together
      • Working with Events
      • Adding A Layout
      • Adding A Model
      • RESTFul Data
      • Next Steps
    • Getting Started Guide
  • Getting Started
    • Installation
    • Application Templates
    • Conventions
    • Configuration
      • ColdBox.cfc
        • Configuration Directives
          • CacheBox
          • ColdBox
          • Conventions
          • Environments
          • Flash
          • InterceptorSettings
          • Interceptors
          • Layouts
          • LayoutSettings
          • LogBox
          • Modules
          • ModuleSettings
          • Settings
          • WireBox
        • System Settings (Java Properties and Environment Variables)
      • Using Settings
      • Bootstrapper - Application.cfc
  • The Basics
    • Request Context
    • Routing
      • Requirements
        • Rewrite Rules
      • Application Router
      • Routing DSL
        • Routing By Convention
        • Pattern Placeholders
        • Routing Methods
        • Resourceful Routes
        • Named Routes
        • Routing Groups
        • Routing Namespaces
      • Building Routable Links
      • RESTFul Extension Detection
      • HTTP Method Spoofing
      • HTML Base Tag
      • Pathinfo Providers
    • Event Handlers
      • How are events called?
      • Getting & Setting Values
      • Setting Views
      • Relocating
      • Rendering Data
      • Sending Files
      • Interception Methods
        • Pre Advices
        • Post Advices
        • Around Advices
      • Model Integration
        • Model Data Binding
      • HTTP Method Security
      • Implicit Methods
      • Executing Events
      • Executing Routes
      • Viewlets - Reusable Events
      • Event Caching
      • Validation
    • Layouts & Views
      • Views
        • Rendering Views
        • Rendering External Views
        • Rendering With Local Variables
        • Rendering Collections
        • View Caching
        • View Helpers
        • View Events
      • Layouts
        • Basic Layouts
        • Default Layout
        • Nested Layouts
        • Overriding Layouts
        • Layouts From A Module
        • Layout Helpers
        • Layout Events
      • Implicit Layout-View Declarations
      • Helpers UDF's
      • ColdBox Elixir
    • Models
      • Domain Modeling
        • Service Layer
        • Data Layers
        • Book
      • Conventions Location
      • WireBox Binder
      • Super Type Usage Methods
      • Injection DSL
        • ColdBox Namespace
        • CacheBox Namespace
        • EntityService Namespace
        • Executor Namespace
        • Java Namespace
        • LogBox Namespace
        • Models Namespace
        • Provider Namespace
        • WireBox Namespace
      • Object Scopes
      • Coding: Solo Style
        • Datasource
        • Contact.cfc
        • ContactDAO.cfc
        • ContactService.cfc
        • Contacts Handler
      • Coding: ActiveEntity Style
        • ORM
        • Contact.cfc
        • Contacts Handler
        • Views
      • Coding: Virtual Service Layer
        • ORM
        • Contacts.cfc
        • Contacts Handler
        • Views
      • Coding: ORM Scaffolding
        • ORM
        • Contacts.cfc
        • Scaffold
    • Interceptors
      • How do they work?
        • Conventions
      • Interceptor Declaration
      • Interceptor Registration
      • Dynamic Registration
      • Core Interception Points
        • Application Life Cycle Events
        • Object Creating Events
        • Layout-View Events
        • Module Events
        • CacheBox Events
      • Restricting Execution
      • Interceptor Output Buffer
      • Custom Events
        • Configuration Registration
        • Programmatic Registration
        • Listening
        • Announcing Interceptions
      • Unregistering Interceptors
      • Reporting Methods
      • Interceptor Asynchronicity
        • Async Announcements
        • Async Listeners With Join
        • Async Listeners No Join
        • Asynchronous Annotations
  • HMVC
    • Modules
      • Core Modules
      • Locations
      • Parent Configuration
      • Module Layout
        • Changing The Module Layout
      • Module Service
        • Module Lifecycle
        • Module Registration
        • Module Activation
        • Module Unloading
        • Common Methods
        • Loading New Modules
        • Loading A-la-carte Modules
        • Module Events
      • ModuleConfig
        • Public Module Properties
        • The Decorated Variables
        • The configure() Method
        • Module Settings
        • Environment Control
        • Interceptor Events
      • Module Event Executions
      • URL Routing
        • Default Route Execution
        • Module Routes Files
      • Module Async Scheduling
      • Request Context Module Methods
      • Layout and View Renderings
        • Layout/View Discovery
        • Overriding Views
        • Overriding Layouts
        • Default Module Layout
        • Explicit Module Renderings
      • Models
      • Module CF Mappings
      • Module Dependencies
      • Module Helpers
      • Module Bundles
      • Module Inception
  • Testing
    • Testing Quick Start
    • Testing ColdBox Applications
      • Test Harness
      • ColdBox Testing Classes
      • Testing Methods
      • Integration Testing
        • Test Annotations
        • Life-Cycle Events
        • Request Setup()
        • The execute() Method
        • HTTP Testing Methods
        • Testing Without Virtual Application
      • Interceptor Testing
      • Model Object Testing
      • Tips & Tricks
  • Digging Deeper
    • Async Programming
      • Async Pipelines & Futures
      • Parallel Computations
      • Executors
      • Scheduled Tasks
    • ColdBox Proxy
      • Getting Started
      • The Base Proxy Object
      • The Event Handlers
        • Distinguishing Request Types
        • RenderData()
      • Proxy Events
      • Standard Return Types
      • Caveats & Gotchas
    • Controller Decorator
    • ColdBox Scheduled Tasks
    • Flash RAM
      • Flash Storage
      • Using Flash RAM
      • Creating Your Own Flash Scope
    • HTML Helper
    • REST Handler
    • Request Context Decorator
    • Recipes
      • Building REST APIs
      • ColdBox Exception Handling
      • Debugging ColdBox Apps
      • Clearing the View Cache
      • Basic HTTP Authentication Interceptor
  • Architecture Concepts
    • How ColdBox Works
Powered by GitBook
On this page
  • ColdBox Updates
  • BoxLang Support
  • BoxLang Template
  • ColdBox CLI
  • CacheBox Updates
  • DiskStore Rewrite
  • BoxLang Providers
  • Memory Indexers
  • LogBox Upates
  • WireBox Updates
  • Release Notes

Was this helpful?

Edit on GitHub
Export as PDF
  1. Introduction
  2. Release History

What's New With 7.4.0

April 27, 2025

Last updated 21 days ago

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.

ColdBox Updates

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

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

New Feature

Bug

New Feature

Bug

Improvement

Bug

Bug

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

https://github.com/coldbox-templates/bx-default
COLDBOX-1286
COLDBOX-1287
COLDBOX-1288
COLDBOX-1294
COLDBOX-1305
COLDBOX-1285
COLDBOX-1296
COLDBOX-1297
COLDBOX-1306
COLDBOX-1280
COLDBOX-1281
COLDBOX-1282
COLDBOX-1289
COLDBOX-1295
COLDBOX-1304
COLDBOX-1311
COLDBOX-1317
COLDBOX-1326
COLDBOX-1327
CACHEBOX-87
CACHEBOX-88
CACHEBOX-86
CACHEBOX-42
LOGBOX-81
LOGBOX-82
WIREBOX-155
www.boxlang.io