Tags: microsoft/rego-cpp
Tags
Fixing Ubuntu 22.04 builds (#194) The v1.0.0 change introduced an unintentional breaking change on Ubuntu 22.04. This commit fixes that and adds an Ubuntu 22.04 build to the workflow to protect against regression. Signed-off-by: Matthew A Johnson <[email protected]>
**New Features** (#169) - dotnet wrapper - The C API has changed slightly (added a `regoOutputJSON` method, as well as `regoVersion` and `regoBuildInfo` methods) - Python and Rust wrapper implementations have been changed to use the new `regoOutputJSON` method, which should aid in stability on some platforms - The Python wrapper no longer reads its version from the repository, allowing it to be built independently - The Python wrapper will not use a manual tzdata install by default, but will use the system tzdata if available - Added a `rego_shared` target which builds rego-cpp as a shared library **Bug Fixes** - The Python wrapper has been broken since 0.4.0 on Windows due to a bug with DLL calling conventions. The whole wrapper has been rearchitected to use `ctypes` and the same rego-shared library as the dotnet wrapper **Warning** - The macos python wrapper is broken as of this build. This is under active investigation and will be fixed in a future release. Signed-off-by: Matthew A Johnson <[email protected]>
Addressing some issues in the Python and Rust wrappers. (#164) **New Features** - The Python wrapper now packages the tzdata database inside the wheel to ensure consistent performance across platforms. - The Rust wrapper now has the ability to download a fresh copy of the tzdata database if needed - Added a `regoSetTZDataPath` method to the C API and exposed it for the Python and Rust wrappers. - The `regoNew` C API method now supports the `v1_compatible` flag for interpreter creation - The library embeds the `windowsZones.xml` mapping file so it can provide it where needed - The Python wrapper provides a more natural interface for sets and objects - The CMake system will now look for a `REGOCPP_TZDATA_PATH` environment variable to use for setting the default path **Bug Fix** - Fixed a bug where builtins would not be available if an interpreter was re-used - Fixed a bug with the Rust wrapper where it was aggressively trimming strings Signed-off-by: Matthew Johnson <[email protected]>
Point release adding the `uuid`, `time`, and `walk` builtins. (#163) In order to add support for the `time` built-ins that worked cross-platform and with the widest range of C++ compilers, we had to introduce a dependency on the [`date`](https://github.com/HowardHinnant/date) library. This contains a full implementations of the `std::chrono` functionality which will eventually be supported across most c++ compilers as part of the STL. In particular, it provides the crucial Time Zone lookup functionalities required by the Rego `time` built-ins. The Time Zone lookup requires a valid [`tzdata`](https://www.iana.org/time-zones) database from the IANA. This can either be configured to use the local system TZ data (default for Linux variants) or a manual database (default for Windows). If the `REGOCPP_USE_MANUAL_TZDATA` flag is set, then the project will download the latest database and install it as part of its build process. **New Features** - Added the `uuid` built-ins - Added the `time` built-ins - Added the `walk` built-in - It is now possible for `BuiltInDef` implementations to cache values or otherwise maintain state. To facilitate this, a new virtual `clear()` method has been added which will be called at the start of each query evaluation. **Bug Fixes** - Fixed a bug with adding zero to negative integers. Signed-off-by: Matthew Johnson <[email protected]>
Point release updating to Rego v0.68.0 (#162) Point release updating to Rego v0.68.0 **New Features** - Updated the support version of Rego to v0.68.0 - Updated to the latest build of Trieste. - Added a `v1-compatible` flag to the test driver and interpreter which forces rego-v1 compliance - Added code to run both the v0 and v1 OPA test suites - Added the new `strings.count` built-in - Improved the tool messaging around debug options **Bug Fixes** - Fixed an issue with recursion errors being swallowed by `not` - Fixed issues where undefined values were not handled correctly during unification - Fixed issue with whitespace after package definitions - Fixed issue where internal values were lingering in rule evaluations Signed-off-by: Matthew Johnson <[email protected]>
Doc updates and bug fixes. (#153) Point release containing doc updates and bug fixes. - Updated the docs to reflect the new interfaces and outputs **Bug Fixes** - Fixed an issue with actions attached to an `In` statement for some builds/environments - Fixed a bug with modules that start with comments - Fixed a bug with comprehension contexts when an assigned variable is shadowed in the body of the comprehension - Bumping Trieste and adding the cheriot tests --------- Signed-off-by: Matthew A Johnson <[email protected]>
Fixes for regressions in local variable behavior. (#98) As a result of the optimization passes, some incorrect behavior was introduced for local variables. This commit restores correct functionality. It also fixes a crash when accessing certain nodes with an undefined key. Signed-off-by: Matthew Johnson <[email protected]>
PreviousNext