Skip to content

v1.3.1#213

Merged
matajoh merged 1 commit intomicrosoft:mainfrom
matajoh:v1.4.0
Apr 7, 2026
Merged

v1.3.1#213
matajoh merged 1 commit intomicrosoft:mainfrom
matajoh:v1.4.0

Conversation

@matajoh
Copy link
Copy Markdown
Member

@matajoh matajoh commented Apr 2, 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_lIBRARIESREGOCPP_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.

Fixes #209
Fixes #183

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>
Copy link
Copy Markdown
Member

@achamayou achamayou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@matajoh matajoh merged commit e63e92c into microsoft:main Apr 7, 2026
49 checks passed
@matajoh matajoh deleted the v1.4.0 branch April 7, 2026 12:59
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

internal.print — match OPA's set-comprehension wrapping and cross-product semantics Provide a vcpkg port for rego-cpp

2 participants