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


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.


Many thanks to Dan Callahan for the documentation suggestion!

Connect with us on Slack

If you have any questions, or just want to talk something through, jump into Slack. An Oso engineer or one of the thousands of developers in the growing community will be happy to help.