Python and Rust wrappers
This release marks the first versions of the Rust and Python APIs, along with their example code.
Adding new examples for Python and Rust usage.
Python API
wrappers/python/
contains a Python package,regopy
, which wraps the library
and exposes a Python API. It is published on PyPi here
Rust API
wrappers/rust/
contains a Rust crate,regorust
, which wraps the library
and exposes a Rust API. It is published on crates.io here
Bug Fixes
- Fixed a bug where
to_json()
was incorrectly sorting arrays when thesort
flag was set totrue
. - Removes a memory leak caused by a cyclic graph of Unifiers
- Fixes various use-after-free violations caused by missing
clone()
invocations.
New Features
- The C++ API is now documented using Doxygen. The documentation can be found
here. - Logging levels have been added and can be set via the API (instead of just
binary enabled/disabled) - The library can now be built to target the C++ 17 standard (for older compilers)
Breaking changes
- C API: The
regoSetLoggingEnabled
function has been replaced with
regoSetLoggingLevel
. This is also reflected in the C++ and Rust APIs.h - C API: The
regoSetExecutablePath
function has been removed due to the
Interpreter::executable()
property being removed from the C++ API. - The
to_json
method flagrego_set
has been changed toset_as_array
and
the order of its flag inverted (it is nowfalse
by default). - C API: The
regoAddInput*
functions are now namedregoSetInput*
and can
be used multiple times on the same interpreter. - C API:
regoGet/SetStrictBuiltInErrors
has been added. - The public headers have been reduced to just two files:
rego.hh
which contains the C++ APIrego_c.h
which contains the C API
- The
rego.hh
header is now a C++ header and will not compile in C. - Many definitions have been moved to the (non-public)
internal.hh
header,
and code which relied on having access to those definitions will break.