Skip to content

CQL Execution 4.0.0-beta.1

Pre-release
Pre-release

Choose a tag to compare

@cmoesel cmoesel released this 15 Sep 22:00
· 5 commits to master since this release

CQL Execution 4.0.0-beta.1 is the first beta release of CQL 4.0. This pre-release contains breaking changes. Although CQL Execution library consumers may choose to begin CQL Execution 4.0 integration using this beta, we advise consumers to avoid using this pre-release in production software.

Breaking Changes:

  • Support for CQL Long: The CQL Long type is now supported and represented using JavaScript's bigint primtive. Previous versions of CQL Execution represented Long as a JavaScript number primitive (when possible).
  • Support for CQL Decimal: The CQL Decimal type is now supported and represented using a custom Decimal class. This class is backed by the decimal.js library, but CQL Execution consumers should use the provided custom Decimal class and its public functions rather than its internal decimal.js representation (which is subject to change). Previous versions of CQL Execution represented Decimal as a JavaScript number primitive.
  • Removal of cql4browsers.js: Previous versions of the CQL Execution package included a browserified distribution of the library called cql4browsers.js. CQL 4.0 no longer packages this file since it is preferable for library consumers to transpile the library for browser environments themselves. See examples/browser for an example of how to do this using esbuild.
  • Dropped support for Node.js 18: Node.js 18 reached end-of-life in March 2025 and no longer receives security updates. Users of CQL Execution should upgrade to a later version of Node.js.

CQL 2.0 Changes:

  • Successor/Predecessor: The Successor and Predecessor operators for Decimal now step by increments of the Decimal's precision (e.g., successor of 1.2 is now 1.3, not 1.20000001).
  • Start/End: The interval Start and End operators were updated to align w/ CQL 2.0 clarifications, particularly related to unknown boundaries being represented using uncertain ranges.
  • Round: The Round operator now rounds away from zero for half-increments (e.g., 0.5 rounds to 1 and -0.5 rounds to -1). These semantics were ambiguous in CQL 1.x, so previous versions of CQL Execution rounded toward infinity (e.g., -0.5 previously rounded to 0).
  • Other Operators: Other operators have been updated to align more closely with CQL 2.0 clarifications and many interval operators were affected by the changes/clarifications to Successor, Predecessor, Start, and End.

Other Changes:

  • Operator Implementations: Several previously unimplemented operators are now supported, including ProperContains, ProperIn, and PointFrom.
  • Retrieve:codeComparator: CQL Execution now supports retrieves using in, =, and ~ terminology semantics as specified by the codeComparator property of Retrieve.
  • Example Projects: The example projects have been converted to stand-alone sub-projects that can be built and executed independently. See examples/browser, examples/node, and examples/typescript.
  • CQL Test Server Enhancements: The CQL Test server has been updated to reflect changes and clarifications in the representation of numeric ranges as well as to support the new CQL Long and CQL Decimal support in CQL Execution.
  • Build Enhancements: Various improvements have been made to the development environment, most of which will only be noticed by developers working directly on CQL Execution.
  • Dependency Updates: Many dependencies have been updated and reported vulnerabilities have been resolved.

What's Changed

New Contributors

Full Changelog: v3.3.2...v4.0.0-beta.1