Starlark
Starlark is a lightweight, high-level programming language designed for embedded use in applications. It uses a subset of the Python syntax. By default, the code is deterministic and hermetic.
History
Starlark was released in 2015 as part of Bazel under the name Skylark. This first implementation was written in Java. In 2018, the language was renamed Starlark.In 2017, a new implementation of Starlark in Go was announced.
In 2021, Meta announced an implementation of Starlark written in Rust, to be used for the Buck build system.
Popularity
In addition to the Bazel and Buck build systems, Starlark is used by dozens of projects, including Isopod, skycfg, Uber's Starlark Worker, and Tilt.On GitHub, Starlark is among the top 50 languages based on the developer activity.
Syntax
Starlark syntax is a strict subset of Python syntax. Similar to Python syntax, Starlark relies on indentation to delimit blocks, using the off-side rule.Statements and control flow
Starlark's statements include:- The
=statement to assign a value to a variable - The augmented assignment statements to modify a variable
- The
ifstatement to execute conditionally a block of code - The
forstatement to iterate over an iterable object - The
defstatement to define a function - The
breakstatement to exit a loop - The
continuestatement to skip the rest of the current iteration and continues with the next - The
passstatement, serving as a NOP, syntactically needed to create an empty code block - The
returnstatement to return a value from a function. - The
loadstatement, which replaces Pythonimport, to import a value from another module. Unlike Python, the order of load statements does not affect the semantics of the code.
while, try, raise, class, with, del, assert, yield, import, match and case.