Awesome
Awesome Starlark
A list of awesome things related to the Starlark language.
This page started as a fork of https://github.com/bazelbuild/starlark/blob/master/users.md with the goal of having a page that's easier to maintain, iterate on, and promote. The repository above is dedicated to the specification, so it has different requirements.
Starlark Implementations
There are 3 known implementations of the Starlark language:
- in Go: https://github.com/google/starlark-go/
- in Java: https://github.com/bazelbuild/bazel/tree/master/src/main/java/net/starlark/java
- in Rust: https://github.com/facebookexperimental/starlark-rust
The language specification can be found here: https://github.com/bazelbuild/starlark/blob/master/spec.md.
Tools
- Buildifier: Code formatter & linter. It can also apply automated fixes (e.g. remove unused loads).
- Stardoc: Documentation generator.
- Starlark Online Playground: A web playground for Starlark.
- Starlark Playground: Starlark Playground is a web-based starlark editor. It uses the golang implementation of starlark running on a server to present a monaco editor set to python syntax.
- Moonlark: Starlark parser in C with Lua bindings.
Libraries and extensions
- Skycfg is a library for Starlark to generate Protocol Buffer messages.
- starlark-go-nethttp is a wrapper
around a minimal subset of
net/http package
for use within starlark-go. - starlark-re is an implementation
of Python's
re
module for Starlark in Go. - Starlet is a Go wrapper for the Starlark in Go that simplifies script execution, provides data conversion, and offers useful Starlark libraries and extensions.
- Starlib is Qri's standard library for Starlark in Go that includes packages for regular expressions, reading XLSX documents, parsing ZIP archive, and other functionality.
- Starlight is a wrapper around the Starlark interpreter in Go.
- starstruct is a library for converting
between Starlark in Go's
StringDict
type and Go structs. - Startype is a library that implements two-way conversion between Starlark in Go API types and regular Go types.
Bindings
Python
- python-starlark-go: Python bindings for Starlark in Go.
- starlark-pyo3: Python bindings for Starlark in Rust.
IDEs
Some IDEs have a plugin for Bazel. Otherwise, consider using a Python mode.
- Starpls is a language server for Starlark.
Users
List of projects that use Starlark.
- AsCode is a tool to define infrastructure as code using the Starlark language on top of Terraform.
- AutoKitteh is a developer platform for workflow automation and orchestration. It is a code-based alternative to no/low-code platforms. Workflows can be defined using Starlark.
- Bazel is a fast, scalable, multi-language and extensible build system. Starlark has been designed for Bazel.
- Buck2 is a build system from Meta, using Starlark in a similar way as Bazel.
- bramble is a purely functional build system and package manager, using Starlark as the configuration language.
- Copybara is a tool for transforming and moving code between repositories. It embeds Starlark to configure the workflow.
- clace is web app development and deployment platform for internal tools. It allows easy and secure hosting of multiple web apps, in any language/framework, on a single machine.
- Delve is a debugger for the Go programming language, aiming to provide a simple, full featured debugging tool for Go. Delve uses Starlark as a a scripting language.
- Drone is a self-service Continuous Delivery platform. It supports Starlark scripting as an alternate to yaml configurations.
- envd is a CLI to build the docker images for machine learning development and production environments.
- FizzBee is a system design language for verifying distributed systems in cloud, micro-services, and event-driven applications. It uses Starlark to offer an intuitive, Python-like syntax, making it accessible for everyday software developers.
- Isopod created by Cruise Automation is a DSL framework for Kubernetes configuration. It renders Kubernetes objects as Protocol Buffers.
- Kurtosis is a developer tool for engineers to package and run environments of containerized services for development, testing, and production. Starlark is used as the DSL for defining those environments in a deterministic, portable, and readable way, without compromising usability for complex cases.
- lucicfg from Chromium CI is a tool for generating low-level configuration files from Starlark.
- Pixlet is a runtime and UX toolkit for generating animations for small LED displays, such as Tidbyt. Starlark is used to write applets whose outputs are WebP animations.
- gnetlark is a web server with handlers written in Starlark.
- qri is versioned, scriptable, exportable, collaborative datasets. It uses Starlark to describe transformations.
- realm is an Adversary Emulation Framework with a focus on scalability, reliability, and automation. It is highly performant and is designed for engagements of any size. See how they use Starlark.
- recur is a command-line tool that retries a command with exponential backoff plus jitter to mitigate the thundering herd problem. The success condition is written as a Starlark expression.
- Tilt manages local development instances for teams that deploy to Kubernetes. Tilt files are written in Starlark.
- Vela is a continuous integration and delivery platform. It supports Starlark scripting as an alternative to YAML.
- ytt is a templating tool, built on top of Starlark, that understands YAML structure allowing you to focus on your data instead of how to properly escape it. Read also IBM's blog post about it.