oso 0.1.0

Major news

The Oso core is now written in Rust

This release consists of mostly internal changes. The core implementation of the Polar language is now written in Rust.

New Python package

Precompiled wheels supporting Python >= 3.6 are now distributed through PyPI with pip install oso.

Ruby support

The oso-oso gem supporting Ruby >= 2.4 is now available on RubyGems. Try it out with gem install oso-oso.

Breaking changes


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

Polar language changes

Explicit class instantiation with the new operator

This release introduces the new operator. Previously, the literal value Foo{x: 1} would be implicitly constructed as a Foo instance in some cases. Instantiation is now explicit, and Foo{x: 1} is only valid as a specializer:

check_this(foo: Foo{x: 1})

Constructing a new instance of Foo from Polar requires an explicit new operator:

new Foo{x: 1}

API changes


Disambiguated load functions. oso.Oso.load() is no longer valid:

  • Load files with oso.Oso.load_file().
  • Load strings with oso.Oso.load_str().

New features

New operators: in and forall


Other bugs & improvements

  • More consistent formatting for error messages.
  • Performance improvements to the Polar virtual machine that are especially significant for policies with many rules.

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.