oso 0.5.0

Major news

Node.js support

Oso now supports applications written in Node.js, using our Node.js library. Download here.

Breaking changes

WARNING: This release contains breaking changes. Be sure to follow migration steps before upgrading.

Method/Attribute syntax

Previously, x.foo and x.foo() in an Oso policy could either be performing an attribute lookup or invoking a zero-arity method on x. If looking up the foo property returned a method, the host language libraries would transparently invoke it and return the result.

As of this release, parentheses are required for invocation. x.foo performs a lookup, and x.foo() invokes a zero-arity method.

New features

Debug Mode

Oso can be run in debug mode by setting an environment variable POLAR_LOG=1 This prints debug output when polar queries are evaluated to show what’s happening.

Other bugs & improvements

  • Improved performance of policies with many rules having ground (constant) parameters.

  • Improved performance of in operator (list membership) with many ground elements.

  • Stack traces return the original policy source instead of the internal version.

  • New FFI methods for passing print and warning messages from the core runtime to the language libraries.

Community

Many thanks to Dan Callahan for the documentation suggestion!