Merged
Conversation
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 `mbedtls` crypto backend. The default `REGOCPP_CRYPTO_BACKEND` is now `openssl3` (previously `mbedtls`). Builds on Linux/macOS require OpenSSL 3.0+ development headers (e.g. `libssl-dev`, `openssl@3`). The `bcrypt` backend for Windows is unchanged. **Bug Fixes** - Fixed the `print` built-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.in` to use `@PACKAGE_INIT@` and `CMakeFindDependencyMacro` instead of re-fetching Trieste from git. Corrected the typo `REGOCPP_lIBRARIES` → `REGOCPP_LIBRARIES`. **Build System / Packaging** - Added `REGOCPP_USE_FETCH_CONTENT` option (default `ON`). When `OFF`, Trieste and its parsers are located via `find_package` instead of `FetchContent`, enabling vcpkg and other package-manager workflows. - Added vcpkg port files (`ports/rego-cpp/`): `vcpkg.json` manifest with `openssl3` and `tools` features, `portfile.cmake`, and usage instructions. - Header install rules now use `CONFIGURATIONS Release RelWithDebInfo MinSizeRel` to prevent duplicate headers under `debug/include` in multi-config builds (vcpkg compatibility). - The fuzzer (`rego_fuzzer`) is no longer installed unless tests are also enabled, avoiding stray binaries in vcpkg's `bin/` directory. - Install targets (`trieste`, `json`, `yaml`, `snmalloc`) are only exported when `REGOCPP_USE_FETCH_CONTENT=ON`. - Added a minimal vcpkg consumer test project (`tests/vcpkg-consumer/`) that verifies `find_package(regocpp)` and a simple query. **CI** - Added `vcpkg-integration` and `vcpkg-integration-minimal` CI jobs testing vcpkg install on Ubuntu, macOS, and Windows. - Added version consistency check between `VERSION` and `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 `openssl3` instead of `mbedtls` as the default crypto backend. - Rust `build.rs` now selects `bcrypt` on Windows and `openssl3` elsewhere, linking against the appropriate system libraries. **Test Infrastructure** - Added `want_output` field to YAML test cases, enabling validation of `print` output via stdout capture. - Added 10 new `print` test cases covering basic output, multiple arguments, undefined arguments, collections, variables, null/false, empty calls, and multiple print calls. Signed-off-by: Matthew A Johnson <matjoh@microsoft.com>
matajoh
added a commit
to matajoh/rego-cpp
that referenced
this pull request
Apr 7, 2026
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 `mbedtls` crypto backend. The default `REGOCPP_CRYPTO_BACKEND` is now `openssl3` (previously `mbedtls`). Builds on Linux/macOS require OpenSSL 3.0+ development headers (e.g. `libssl-dev`, `openssl@3`). The `bcrypt` backend for Windows is unchanged. **Bug Fixes** - Fixed the `print` built-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.in` to use `@PACKAGE_INIT@` and `CMakeFindDependencyMacro` instead of re-fetching Trieste from git. Corrected the typo `REGOCPP_lIBRARIES` → `REGOCPP_LIBRARIES`. **Build System / Packaging** - Added `REGOCPP_USE_FETCH_CONTENT` option (default `ON`). When `OFF`, Trieste and its parsers are located via `find_package` instead of `FetchContent`, enabling vcpkg and other package-manager workflows. - Added vcpkg port files (`ports/rego-cpp/`): `vcpkg.json` manifest with `openssl3` and `tools` features, `portfile.cmake`, and usage instructions. - Header install rules now use `CONFIGURATIONS Release RelWithDebInfo MinSizeRel` to prevent duplicate headers under `debug/include` in multi-config builds (vcpkg compatibility). - The fuzzer (`rego_fuzzer`) is no longer installed unless tests are also enabled, avoiding stray binaries in vcpkg's `bin/` directory. - Install targets (`trieste`, `json`, `yaml`, `snmalloc`) are only exported when `REGOCPP_USE_FETCH_CONTENT=ON`. - Added a minimal vcpkg consumer test project (`tests/vcpkg-consumer/`) that verifies `find_package(regocpp)` and a simple query. **CI** - Added `vcpkg-integration` and `vcpkg-integration-minimal` CI jobs testing vcpkg install on Ubuntu, macOS, and Windows. - Added version consistency check between `VERSION` and `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 `openssl3` instead of `mbedtls` as the default crypto backend. - Rust `build.rs` now selects `bcrypt` on Windows and `openssl3` elsewhere, linking against the appropriate system libraries. **Test Infrastructure** - Added `want_output` field to YAML test cases, enabling validation of `print` output via stdout capture. - Added 10 new `print` test cases covering basic output, multiple arguments, undefined arguments, collections, variables, null/false, empty calls, and multiple print calls. Signed-off-by: Matthew A Johnson <matjoh@microsoft.com>
matajoh
added a commit
to matajoh/rego-cpp
that referenced
this pull request
Apr 7, 2026
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 `mbedtls` crypto backend. The default `REGOCPP_CRYPTO_BACKEND` is now `openssl3` (previously `mbedtls`). Builds on Linux/macOS require OpenSSL 3.0+ development headers (e.g. `libssl-dev`, `openssl@3`). The `bcrypt` backend for Windows is unchanged. **Bug Fixes** - Fixed the `print` built-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.in` to use `@PACKAGE_INIT@` and `CMakeFindDependencyMacro` instead of re-fetching Trieste from git. Corrected the typo `REGOCPP_lIBRARIES` → `REGOCPP_LIBRARIES`. **Build System / Packaging** - Added `REGOCPP_USE_FETCH_CONTENT` option (default `ON`). When `OFF`, Trieste and its parsers are located via `find_package` instead of `FetchContent`, enabling vcpkg and other package-manager workflows. - Added vcpkg port files (`ports/rego-cpp/`): `vcpkg.json` manifest with `openssl3` and `tools` features, `portfile.cmake`, and usage instructions. - Header install rules now use `CONFIGURATIONS Release RelWithDebInfo MinSizeRel` to prevent duplicate headers under `debug/include` in multi-config builds (vcpkg compatibility). - The fuzzer (`rego_fuzzer`) is no longer installed unless tests are also enabled, avoiding stray binaries in vcpkg's `bin/` directory. - Install targets (`trieste`, `json`, `yaml`, `snmalloc`) are only exported when `REGOCPP_USE_FETCH_CONTENT=ON`. - Added a minimal vcpkg consumer test project (`tests/vcpkg-consumer/`) that verifies `find_package(regocpp)` and a simple query. **CI** - Added `vcpkg-integration` and `vcpkg-integration-minimal` CI jobs testing vcpkg install on Ubuntu, macOS, and Windows. - Added version consistency check between `VERSION` and `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 `openssl3` instead of `mbedtls` as the default crypto backend. - Rust `build.rs` now selects `bcrypt` on Windows and `openssl3` elsewhere, linking against the appropriate system libraries. **Test Infrastructure** - Added `want_output` field to YAML test cases, enabling validation of `print` output via stdout capture. - Added 10 new `print` test cases covering basic output, multiple arguments, undefined arguments, collections, variables, null/false, empty calls, and multiple print calls. Signed-off-by: Matthew A Johnson <matjoh@microsoft.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Patch release replacing the mbedTLS crypto backend with OpenSSL 3, fixing the
printbuilt-in to match OPA semantics, and adding vcpkg packaging support.Breaking Changes
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
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.regocppConfig.cmake.into use@PACKAGE_INIT@andCMakeFindDependencyMacroinstead of re-fetching Trieste from git. Corrected the typoREGOCPP_lIBRARIES→REGOCPP_LIBRARIES.Build System / Packaging
REGOCPP_USE_FETCH_CONTENToption (defaultON). WhenOFF, Trieste and its parsers are located viafind_packageinstead ofFetchContent, enabling vcpkg and other package-manager workflows.ports/rego-cpp/):vcpkg.jsonmanifest withopenssl3andtoolsfeatures,portfile.cmake, and usage instructions.CONFIGURATIONS Release RelWithDebInfo MinSizeRelto prevent duplicate headers underdebug/includein multi-config builds (vcpkg compatibility).rego_fuzzer) is no longer installed unless tests are also enabled, avoiding stray binaries in vcpkg'sbin/directory.trieste,json,yaml,snmalloc) are only exported whenREGOCPP_USE_FETCH_CONTENT=ON.tests/vcpkg-consumer/) that verifiesfind_package(regocpp)and a simple query.CI
vcpkg-integrationandvcpkg-integration-minimalCI jobs testing vcpkg install on Ubuntu, macOS, and Windows.VERSIONandports/rego-cpp/vcpkg.json.build_wheels.yml) updated to install OpenSSL on macOS (Homebrew), manylinux (yum), and musllinux (apk).Wrappers
openssl3instead ofmbedtlsas the default crypto backend.build.rsnow selectsbcrypton Windows andopenssl3elsewhere, linking against the appropriate system libraries.Test Infrastructure
want_outputfield to YAML test cases, enabling validation ofprintoutput via stdout capture.printtest cases covering basic output, multiple arguments, undefined arguments, collections, variables, null/false, empty calls, and multiple print calls.Fixes #209
Fixes #183