What's New With 6.2.x

ColdBox 6.2.0 is a minor release with some major improvements in many areas like:

  • Async programming

  • Logging

  • Object creations

  • WireBox Mappings and Binders

WireBox Binder & Mapping Objects Rewritten

This is a major change in the core as we have finally rewritten the WireBox Binder and object Mapping objects to script. This resulted in a 45-50% code reduction for those objects and an impressive 30% speed improvements when creating and processing mappings with the new binder processing optimizations. We analyzed every single line of code on these two objects and we are incredibly satisfied with the initial results.

That's right, we have some async goodness prepared for future versions when dealing with multiple directory mappings and much more.

Async Package Performance Upgrades

Fusion Reactor Profiler

We have done more runtime analysis on our asynchronous package and we have optimized the heck out of it using the amazing FusionReactorarrow-up-right Profilers! Especially the applyAll() and collection based parallel computing. We reached a point where all of our tests cases where running faster than even native Lucee/Adobe 2021 parallel constructs. Below you can see a snapshot of our test bed creating 1000 transient objects with dependency injections and object populations using async constructs.

Async Test Results

You can find our test bed here: https://github.com/ColdBox/coldbox-platform/blob/development/tests/suites/async/performance-parallel-tests.cfmarrow-up-right

Just a reminder that the ColdBox async capabilities are all powered by the Java concurrency packages leveraging Completable Futuresarrow-up-right, Executorsarrow-up-right and Scheduled Tasksarrow-up-right. It is not only true to the Java API but we have made tons of enhancements especially for ColdFusion and its dynamic nature. Check out our docs!

It is also available to ANY ColdFusion application that is NOT running ColdBox. This is achieved by using either of our standalone libraries: WireBox, CacheBox and LogBox.

Test Dependency Injection

This version introduces the capability for you to tag your integration tests with an autowire annotation on the component tag. By adding this annotation, your test object will be inspected and wired with dependencies just like any other WireBox object.

ColdBox Test Matchers

We have also included a new object coldbox.system.testing.CustomMatchers which will register matchers into TestBox when doing integration tests. It will give you the nice ability to expect status codes and validation exceptions on RESTFul Requests via the ColdBox Response object.

  • toHaveStatus()

  • toHaveInvalidData()

More Rendering Improvements

Thanks to Dom Watson (@dom_watsonarrow-up-right) from PresideCMS (@presidecmsarrow-up-right) for many contributions to help clean up ColdBox view rendering! This release focuses on more performance and memory utilization updates, as well as refactoring external dependencies from pre singleton rendering approaches, which has resulted in more performance gains and lower memory usages on high rendering apps.

Whoops! Keeps Getting Better

We have had tons of updates and requests from our new exception handling experience in ColdBox: Whoops! In this release we tackle CFML core engine files so they can render appropriately, AJAX rendering for exceptions and best of all a huge performance and size boost when dealing with exceptions. Even when dealing with exceptions we want the best and the fastest experience possible for our developers.

The previous approach whoops took was to read and load all the source code of all the templates that caused the exception. You could then navigate them to discover your faults. However, each template could be loaded from 1 to up to 10 times if the stack trace followed it. In this new update we provide source template caching and dynamic runtime injection and highlighting of the source code. This has granted us the following improvements in small test cases (Your improvements could be higher)

Original Size: 218.54 KB New Size: 145.22 KB :fire: About 30-40% reduction on size depending on repetition of the templates

Original Rendering Speed: 288ms New Rendering Speed: 76ms :fire: About 74-80% rendering improvements

Whoops Improvements

Release Notes

6.2.0

Bugs

New Features

  • [COLDBOX-942arrow-up-right] - Add timeout and timeUnit arguments to the allApply() method directly when using Futures

  • [COLDBOX-943arrow-up-right] - New global settings: sesBasePath and HtmlBasePath that represent the pathing with no host and protocol

  • [COLDBOX-946arrow-up-right] - new request context method getFullPath() which returns the full url with no protocol or host

  • [COLDBOX-957arrow-up-right] - New autowire annotation or `variables.autowire` on integration tests so ColdBox will autowire the test with dependencies via WireBox

  • [COLDBOX-958arrow-up-right] - Store the test case metadata on ```variables.metadata``` so it can be reused by any helper within test operations

  • [COLDBOX-959arrow-up-right] - New ColdBox CustomMatchers object found at coldbox.system.testing.CustomMatchers which is loaded on all tests

Improvements

6.2.1

Bugs

6.2.2

Bugs

Last updated

Was this helpful?