Live data from Hacker News

Bazel 1.0

opensource.googleblog.com

61–70 of 204 posts

Re: Bazel 1.0

#61
post #45

What does Bazel do exactly?

Bazel is an open-source build and test tool similar to Make, Maven, and Gradle. It uses a human-readable, high-level build language. Bazel supports projects in multiple languages and builds outputs for multiple platforms. Bazel supports large codebases across multiple repositories, and large numbers of users.

Re: Bazel 1.0

#62
post #22

Earlier quoted context omitted.

Visual Studio (used to?) come with nmake, a mostly compatible version of Make.

used to come with mostly compatible version of . Yup.

I'm not sure if MS is to blame there, in my very brief experience it was compatible enough, it was the lack of unix tools and gnu extensions that made it difficult to work with. You'd probably get the same issue trying to be posix compatible.

Re: Bazel 1.0

#63
post #6

Problem: There are N confusing build systems with arcane rules and you just want to compile your program. Solution: Design a simple, straightforward build tool. Problem: There are N+1 confusing build systems with arcane rules.

Bazel is almost a standard for build systems at this point. Did you ever use it, or at least see what a bazel build rule looks like [1] before calling it arcane? [1] https://docs.bazel.build/versions/1.0.0/tutorial/cpp.html#un...

Bazel has yet to even land in Debian, it's some years short of being the standard.

Re: Bazel 1.0

#64

I only wish Bazel had been written in a language that produced native binaries like C++ or Go instead of Java. It seems like a waste for me as a non-Java developer to install Java on my dev machine just for Bazel.

I have the same complaint about meson and python 3. You purposely use a low-level language to write dependency-free code, then your users need to install a bloated runtime just to build the damn thing.

Re: Bazel 1.0

#65
The lack of backwards compatibility between Bazel versions has been the deal-killer for me thus far. Old build instructions should work with newer releases of the same tools. It's important for the tools to remain compatible because you can't change the instructions contained in old releases.

I hope the release of 1.0 is an indication that Bazel is taking interface stability more seriously.

Re: Bazel 1.0

#66

Earlier quoted context omitted.

My experience with using the Google-internal version of Bazel is that yes, you want to give up all other tools to use this. Having a proper dependency graph makes it possible to cache maximally and accurately, and that results in fast builds. You don't need it if you only have like one go program that you're building, but you will start to see the disadvantages when you have a handful of things you build. Did you bui…

Dude, IDK if you have used bazel OUTSIDE of Google, but I've used it both inside and outside of Google and I can tell with 99.999% confidence that the experiences are dramatically different. Bazel != Blaze (internal version of Bazel). 1. Google has a well maintained monorepo. Most companies don't. That diminishes the meaning of a good build system in the very first place; even if Bazel is powerful, with separate repo…

Can you quantify what you mean by worse? What makes you feel that way?

Re: Bazel 1.0

#67
post #3

Is it worth giving up language-specific build tools (CMake, Maven, Gradle and others) for one build tool to rule them all?

My experience with using the Google-internal version of Bazel is that yes, you want to give up all other tools to use this. Having a proper dependency graph makes it possible to cache maximally and accurately, and that results in fast builds. You don't need it if you only have like one go program that you're building, but you will start to see the disadvantages when you have a handful of things you build. Did you bui…

> Having a proper dependency graph makes it possible to cache maximally and accurately, and that results in fast builds.

Pretty much every other build system (e.g., make) is rooted in having a proper dependency graph. This is not a unique property of Bazel.

Re: Bazel 1.0

#68

The lack of backwards compatibility between Bazel versions has been the deal-killer for me thus far. Old build instructions should work with newer releases of the same tools. It's important for the tools to remain compatible because you can't change the instructions contained in old releases. I hope the release of 1.0 is an indication that Bazel is taking interface stability more seriously.

Right. Every time I build tensorflow I have to build bazel first, or get the bazel version for the tf version.

I have to say, having used a number of Google's tools over the years: basel, coral sdk, maps api and perhaps others, I'm always surprised at how 'how ya doing' the experience is. Don't get me wrong, I appreciate their tools and its openness, but I wish Google spend a bit more time doing software engineering, and less throwing shit against a wall ascertaining stickiness.

Re: Bazel 1.0

#69

The lack of backwards compatibility between Bazel versions has been the deal-killer for me thus far. Old build instructions should work with newer releases of the same tools. It's important for the tools to remain compatible because you can't change the instructions contained in old releases. I hope the release of 1.0 is an indication that Bazel is taking interface stability more seriously.

Yes. 1.0 indicates the beginning of semantic versioning, which was not in place during the alpha and beta phases.

Re: Bazel 1.0

#70
post #67

Earlier quoted context omitted.

My experience with using the Google-internal version of Bazel is that yes, you want to give up all other tools to use this. Having a proper dependency graph makes it possible to cache maximally and accurately, and that results in fast builds. You don't need it if you only have like one go program that you're building, but you will start to see the disadvantages when you have a handful of things you build. Did you bui…

> Having a proper dependency graph makes it possible to cache maximally and accurately, and that results in fast builds. Pretty much every other build system (e.g., make) is rooted in having a proper dependency graph. This is not a unique property of Bazel.

That's right. However, there are distinct implications on how this dependency graph is constructed, analyzed, and evaluated. "Build Systems à la Carte" (Mokhov, Mitchell, Peyton Jones) [1] goes deeper into formalizing these differences.

[1] https://www.microsoft.com/en-us/research/uploads/prod/2018/0...

Post reply on HN