Hacker News new | past | comments | ask | show | jobs | submit login

What was/is the motivation for this build system that an existing one doesn't satisfy?



We wanted something like Blaze (Google's system); at the time we were using Buck which didn't satisfy us (e.g. only one output per genrule, no directories; and it was more or less impossible to write first-class support for a new language without modifying the core system). Subsequently Bazel got released but we still find that a bit lacking in some areas; e.g. the CLI, the JVM reliance and some of Starlark (e.g. it maintains Python 2 syntax compatibility so can't have type annotations).

We'd also tried Gradle previously but that was pretty awful for anything non-Java which made it a non-starter.

To be clear, I'm one of the original implementors, although I imagine that was obvious already...


fyi, Starlark dropped compatibility with Python 2 two years ago (https://github.com/bazelbuild/starlark/issues/27)

People interested in type annotations can check this discussion: https://github.com/bazelbuild/starlark/issues/106

For most purposes, Bazel dependency on Java is an implementation detail (users don't need to install a JVM), although you might notice it if you need to bootstrap Bazel.

(I co-designed Starlark and I used to work on Bazel)


I’m not sure if the feature was added after you started building Please but Buck does support multiple outputs from a genrule now. It’s kind of hacky though; you write a genrule that produces a directory containing said multiple outputs, and then you can write rules to extract the subcomponents. (I don’t know why I feel compelled to point this out. I worked on Buck for about a year, several years back. )


At first this wasn't a singular clear answer I was hoping for, but the many points being made here make it clear that it's a complex area and there's room for another advanced/high-perf build system to cover a broader range of usage.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: