CQL Execution 4.0.0-beta.1
Pre-release
Pre-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
numberprimitive (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
Decimalclass and its public functions rather than its internaldecimal.jsrepresentation (which is subject to change). Previous versions of CQL Execution represented Decimal as a JavaScriptnumberprimitive. - 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.2is now1.3, not1.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.5rounds to1and-0.5rounds to-1). These semantics were ambiguous in CQL 1.x, so previous versions of CQL Execution rounded toward infinity (e.g.,-0.5previously rounded to0). - 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 ofRetrieve. - 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
- npm audit CI change, and minor version bumps by @dehall in #368
- CQL Long by @cmoesel in #363
- Implement ProperContains/ProperIn for both List and Interval by @dehall in #369
- Implement Retrieve:codeComparator by @dehall in #370
- Implement Interval PointFrom operator by @dehall in #371
- Interval Operator Overhaul by @cmoesel in #373
- Updates to Dependencies, Build Chain, and Examples by @cmoesel in #374
- Update CQL URLs to link to CQL R2 (2.0) by @cmoesel in #375
- CQL Test Server Updates by @cmoesel in #377
- Improved support for CQL Decimal by @dehall in #376
New Contributors
Full Changelog: v3.3.2...v4.0.0-beta.1