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!

Set up a 1x1 with an Oso Engineer

Our team is happy to help you get started with Oso. If you'd like to learn more about using Oso in your app or have any questions about this guide, schedule a 1x1 with an Oso engineer.