Bazel Blog

Starlark

The stars are the limit! Bazel has evolved rapidly these past 3 years, and some of the biggest changes have been to the build language. As the language becomes more mature and the number of users grows, it becomes more and more important to continue this evolution in a principled and open way.

For this reason, we are revamping the way we design and publish changes to the build language. On the design side, it should be possible for anyone to see the list of proposals and participate in active discussions. While this is useful for any user, it is especially important to authors of tools that need to parse, analyze, or update BUILD and bzl files. On the publishing side, we want to draw a clear distinction between specification and implementation, establish a canonical suite of conformance tests, and grow the ecosystem.

At the same time, its very name must also change for trademark reasons. We all know and love the name "Skylark", but we'll grow to love the new name too. That name is: Starlark. References to the old name will be updated in documentation, but you may still see uses of the old name in source code. Like the original name "Blaze" for Bazel, this represents the project's rich history but is not canonical.

Our plan is as follows. The new Starlark repository contains a description of the language (and later of the functions needed to create rules). Changes to the specification will be done via pull requests. Non-trivial changes will follow a process that gives the community a greater opportunity to review and discuss proposals. The process is very similar to the new design process in Bazel, but using another repository and focusing on an implementation-independent specification. We hope that the greater transparency will elicit the feedback and participation we need in order to make this language stellar.