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.org. 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

WARNING: This release contains breaking changes.

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


  • in

  • 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.