An implementation in Rust of the Starlark language
Disclaimer: This is not an officially supported Google product. This project is supported on a best-effort basis and welcome contributions.
Starlark, formerly codenamed Skylark, is a non-Turing complete language based on Python that was made for the Bazel build system to define compilation plugin.
Starlark has at least 3 implementations: a Java one for Bazel, a go one and this one.
This interpreter was made using the specification from the go version and the Python 3 documentation when things were unclear.
This interpreter does not support most of the go extensions (e.g. bitwise
operator or floating point). It does not include the set()
type either (the
Java implementation use a custom type, depset
, instead). It uses signed 64-bit
integer.
You can depend on this crate starlark
, it is documented using docs.rs.
A command line interpreter is also provided by this project, it can interpret files passed at the command line and also start a REPL (Read-Eval-Print Loop). The usage of this program is:
```sh $ starlark --help [Starlark in Rust interpretor]
Usage: ./target/release/starlark [options] [file1..filen]
Options: -b, --build_file Parse the build file format instead of full Starlark. -h, --help Show the usage of this program. -r, --repl Run a REPL after files have been parsed. ```
This project build with Cargo. Simply
run cargo test
to test it, cargo build --release
to build a release version
and cargo run
to run the command-line interpreter.