Starlark in Rust

GitHub link crates.io version docs.rs availability Build status

NOTE: Version 0.4.0 of this library changes maintainer from Google to Facebook.

This project provides a Rust implementation of the Starlark language. Starlark (formerly codenamed Skylark) is a deterministic language inspired by Python3, used for configuration in the build systems Bazel and Buck. This project was originally developed in this repo, which contains a more extensive history.

There are at least three implementations of Starlark, one in Java, one in Go, and this one in Rust. We mostly follow the Starlark standard.

Features

This project features:

This project also has three non-goals:

Components

There are three components:

Compatibility

In this section we outline where we don't comply with the Starlark spec.

Making a release

  1. Check the GitHub Actions are green.
  2. Update CHANGELOG.md with the changes since the last release. This link can help (update to compare against the last release).
  3. Update the version numbers of the two Cargo.toml files. Bump them by 0.0.1 if there are no incompatible changes, or 0.1.0 if there are. Bump the dependency in starlark to point at the latest starlark_module version.
  4. Copy the files CHANGELOG.md, LICENSE and README.md into each starlark and starlark_module subdirectory.
  5. Run cargo publish --dry-run --allow-dirty, then without the --dry-run, first in starlark_module and then starlark directories.
  6. Create a GitHub release with v0.X.Y, using the starlark version as the name.

License

Starlark Rust is Apache License, Version 2.0 licensed, as found in the LICENSE file.