Starlark Programming Language

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB high-performance time series database
Collect, organize, and act on massive volumes of high-resolution data to power real-time intelligent systems.
influxdata.com
featured
CodeRabbit: AI Code Reviews for Developers
Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
coderabbit.ai
featured
  1. Mill

    Mill is a fast JVM build tool that supports Java, Scala, Kotlin and many other languages. 2-4x faster than Gradle and 4-10x faster than Maven for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible

    Starlark is definitely a mixed experience IMO.

    On one hand, having a "hermetic" subset of Python is nice. You can be sure your starlark codebase isn't going to be making network calls or reading files or shelling out to subprocesses and all that. The fact that it is hermetic does help make things reproducible and deterministic, and enables paralleization and caching and other things

    On the other hand, a large Starlark codebase is a large Python codebase, and large Python codebases are imperative, untyped, and can get messy even without all the things mentioned above. Even though your Starlark is pure and deterministic, it still easily ends up a rats nest of sphagetti.

    For https://mill-build.org we went the opposite route: not enforcing purity, but using a language with strong types and a strong functional bent to it. So far it's been working out OK, but it remains to be seen how well it scales to ever larger and more complex build setups

  2. InfluxDB

    InfluxDB high-performance time series database. Collect, organize, and act on massive volumes of high-resolution data to power real-time intelligent systems.

    InfluxDB logo
  3. cue

    The home of the CUE language! Validate and define text-based and dynamic configuration

    The primitive-recursive property of Cue (https://cuelang.org) is a big draw for me, and may be an alternative worth checking out. The authors have spent a great amount of attention to the type system (they learned a lot of lessons from previous config language designs that did not take lattice theory and unification into account).

  4. starlarky

    VGS edition of Google's safe and hermetically sealed Starlark language - a non-Turing complete subset of Python 3.

    I love Starlark. I was a major implementor of it at VGS (the repo is open: https://github.com/verygoodsecurity/starlarky). It had unique distinct features that made it much easier to control and sandbox than many other languages out there.

    I even built a codemod library that does a very basic python -> starlark so that one can develop using python ecosystem libraries and just copy & paste into a secure execution environment. It was a huge success at my last company.

    I'm very thankful to Laurent Le-brun and Alan Donovan -- both of whom are exceptional engineers that I learned so much from. I thought I was skilled but both of those individuals are just on another level.

  5. clace

    App deployment simplified. GitOps without the hassles. Application server for deploying internal tools for teams.

    I have been building an internal tools development and deployment platform [1]. It is built in Go, using Starlark for configuration and API business logic.

    Starlark has been great to build with. You get the readability of having a simple subset of python, without python's dependency management challenges. It is easily extensible with plugin APIs. Concurrent API performance is great without the python async challenges.

    One challenge wrt using Starlark as an general purpose embedded scripting language is that it does not support usual error handling features. There are no exceptions and no multi value return for error values, all errors result in an abort. This works for a config language, where a fail-fast behavior is good. But for a general purpose script, you need more fine grained error handling. Since I am using Starlark for API logic only, I came up with a user definable error handling behavior. This uses thread locals to keep track of error state [2], which might not work for more general purpose scripting use cases.

    [1] https://github.com/claceio/clace

    [2] https://clace.io/docs/plugins/overview/#automatic-error-hand...

  6. BUSY

    BUSY is a lean, statically typed, cross-platform, easily bootstrappable build system for GCC, CLANG and MSVC inspired by Google GN

    > a large Starlark codebase is a large Python codebase, and large Python codebases are imperative, untyped, and can get messy even without all the things mentioned above. Even though your Starlark is pure and deterministic, it still easily ends up a rats nest of sphagetti

    This brings it to the point. I'm still wondering why the achievements of software engineering of the past fifty years, like modularization, structured and object-oriented programming, and static type checking had apparently so little influence on build systems. I implemented https://github.com/rochus-keller/BUSY for this reason, but it seems to require a greater cultural shift than most developers are already willing to make.

  7. tilt

    Define your dev environment as code. For microservice apps on Kubernetes.

  8. py2star

    Converts python files to starlark (or Larky) compatible scripts.

  9. CodeRabbit

    CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.

    CodeRabbit logo
  10. buck2

    Build system, successor to Buck

    Allegedly it has an LSP and vscode support but I also have never used either.

    https://github.com/facebook/buck2/tree/main/starlark-rust/vs...

  11. python-starlark-go

    🐍 Python bindings for starlark-go 🐍

  12. starlark-pyo3

    A Python wrapper for starlark-rust

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Bazel 8.0 Released

    3 projects | news.ycombinator.com | 9 Dec 2024
  • Indigo: A game engine for functional programmers, in Scala

    2 projects | news.ycombinator.com | 22 Apr 2023
  • Host Multiple Services in EKS with One LoadBalancer: A Cost-Effective Approach

    1 project | dev.to | 23 Apr 2025
  • Vagrant on Apple Silicon M4: KVM vs QEMU vs Libvirt – What Works Best?

    2 projects | dev.to | 23 Apr 2025
  • Talos Linux: a new standard for on-premises Kubernetes clusters?

    3 projects | dev.to | 22 Apr 2025

Did you know that Go is
the 4th most popular programming language
based on number of references?