v1.3.1
Patch release replacing the mbedTLS crypto backend with OpenSSL 3, fixing the
print built-in to match OPA semantics, and adding vcpkg packaging support.
Breaking Changes
- Removed the
mbedtlscrypto backend. The defaultREGOCPP_CRYPTO_BACKENDis
nowopenssl3(previouslymbedtls). Builds on Linux/macOS require
OpenSSL 3.0+ development headers (e.g.libssl-dev,openssl@3).
Thebcryptbackend for Windows is unchanged.
Bug Fixes
- Fixed the
printbuilt-in (internal.print) to match OPA semantics:
arguments are now wrapped in set comprehensions, undefined arguments
print as<undefined>instead of aborting, and multi-valued arguments
produce the cross-product of output lines. - Fixed
regocppConfig.cmake.into use@PACKAGE_INIT@and
CMakeFindDependencyMacroinstead of re-fetching Trieste from git.
Corrected the typoREGOCPP_lIBRARIES→REGOCPP_LIBRARIES.
Build System / Packaging
- Added
REGOCPP_USE_FETCH_CONTENToption (defaultON). WhenOFF, Trieste
and its parsers are located viafind_packageinstead ofFetchContent,
enabling vcpkg and other package-manager workflows. - Added vcpkg port files (
ports/rego-cpp/):vcpkg.jsonmanifest with
openssl3andtoolsfeatures,portfile.cmake, and usage instructions. - Header install rules now use
CONFIGURATIONS Release RelWithDebInfo MinSizeRelto prevent duplicate headers underdebug/includein
multi-config builds (vcpkg compatibility). - The fuzzer (
rego_fuzzer) is no longer installed unless tests are also
enabled, avoiding stray binaries in vcpkg'sbin/directory. - Install targets (
trieste,json,yaml,snmalloc) are only exported
whenREGOCPP_USE_FETCH_CONTENT=ON. - Added a minimal vcpkg consumer test project (
tests/vcpkg-consumer/) that
verifiesfind_package(regocpp)and a simple query.
CI
- Added
vcpkg-integrationandvcpkg-integration-minimalCI jobs testing
vcpkg install on Ubuntu, macOS, and Windows. - Added version consistency check between
VERSIONand
ports/rego-cpp/vcpkg.json. - All CI jobs now install OpenSSL development headers where needed.
- Python wheel builds (
build_wheels.yml) updated to install OpenSSL on
macOS (Homebrew), manylinux (yum), and musllinux (apk).
Wrappers
- Python, Rust, and .NET wrappers updated to use
openssl3instead of
mbedtlsas the default crypto backend. - Rust
build.rsnow selectsbcrypton Windows andopenssl3elsewhere,
linking against the appropriate system libraries.
Test Infrastructure
- Added
want_outputfield to YAML test cases, enabling validation of
printoutput via stdout capture. - Added 10 new
printtest cases covering basic output, multiple arguments,
undefined arguments, collections, variables, null/false, empty calls,
and multiple print calls.