Releases

What's new in 2.0.0, and where to find the full changelog.

On this page

Releases

RuleBox follows Semantic Versioning. The full, line-by-line history lives in changelog.md at the root of the repository. Highlights below.

2.0.0

A BoxLang-only rewrite of the module, with a number of correctness fixes and additions:

  • BoxLang only - the module now targets BoxLang exclusively.
  • ColdBox 8+ integrations.
  • Rule priority - Rule.withPriority() lets a rule run earlier than others in the same chain, regardless of addRule() order. See The RuleBook DSL.
  • RULE_STATES.FAILED - a then() consumer that throws is now recorded as FAILED in the audit trail before the exception is re-thrown to the caller, instead of leaving a stale status behind. See Error Handling.
  • RuleBox.RuleNotAttachedException - calling run() on a Rule that was never added to a RuleBook via addRule() now throws this named exception instead of a cryptic null-reference error.
  • Audit trail reset on every run() - RuleBook.run() resets getRuleStatusMap()/getRuleStatus() at the start of every run, so a rule that a chain didn't reach this time around no longer reports a stale status left over from a previous run.
  • overwrite is honored - the overwrite argument on given()/ givenAll() was previously ignored (facts were always force-overwritten); it's now respected on both Rule and RuleBook.
  • Thread-safety for singleton objects (like Builder@rulebox).
  • Safe-navigation (?.) used for Rule chain traversal instead of manual isNull() guards.

See Migrating from 1.0.0 if you're upgrading from the CFML/RuleBook-era version of this module.

1.0.0

The first iteration of this module, released 2018-OCT-29. Its docs are preserved under the 1.0.0 version of this site.

Edit this page Download Markdown Last updated Sep 17, 2026, 7:29:54 PM