InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now. Learn more →
Top 23 Starlark Bazel Projects
-
Project mention: Optimizing React Frontend Deployment: Security and Performance Analysis of Docker Base Images | dev.to | 2025-05-20
-
InfluxDB
InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
-
Here you go!
https://github.com/bazelbuild/examples/tree/main/rust-exampl...
I wrote all of those examples and contributed them back to Bazel because I've been there...
Personally, I prefer the Bazel ecosystem by a wide margin over buck2. By technology alone, buck2 is better, but as my requirements were growing, I needed a lot more mature rule sets such as rules OCI to build and publish container images without Docker and buck2 simply doesn't have the ecosystem available to support complex builds beyond a certain level. It may get there one day.
-
-
Project mention: Static search trees: 40x faster than binary search | news.ycombinator.com | 2024-12-31
If you're embedding, say, a C library inside of Rust, you can do so via a so-called "build.rs" script [1]. These run at build time so you can do pretty much whatever you want. They're not necessarily pretty, but given that Cargo isn't going to support other languages natively, it's often a less-evil option.
Then there are build systems that natively support Rust in addition to other languages and know how to plug them together [2] [3] [4]. If you're already using one of these existing tools, then you don't need to roll your own, you can plug it into your existing project.
Of course if you really are using Makefiles in C you're already living in the wild west, so it's on you to figure out how to add Rust to your projects in that case (or switch to a better build system).
[1]: https://doc.rust-lang.org/cargo/reference/build-scripts.html
[2]: https://bazelbuild.github.io/rules_rust/
[3]: https://buck.build/rule/rust_library.html
[4]: https://mesonbuild.com/Rust.html
-
rules_foreign_cc
Build rules for interfacing with "foreign" (non-Bazel) build systems (CMake, configure-make, GNU Make, boost, ninja, Meson)
-
-
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
-
-
-
-
-
-
In my previous position, we accomplished this using a "dev docker" (which I covered generally in a previous post: https://blog.fahhem.com/2023/12/dev-onboarding-then-now/) that's based around a specific version of Ubuntu (20.04) so the glibc is tied to that.
In another project, I used a hermetic C++ toolchain (you can use gcc with https://github.com/f0rmiga/gcc-toolchain/ or clang/llvm with https://github.com/bazel-contrib/toolchains_llvm) that pulled in its own (locked) version of glibc and lld, etc.
-
-
rules_proto_grpc
Bazel rules for building Protobuf and gRPC code and libraries from proto_library targets
Project mention: How to Use Unreleased Features in Bazel Rule Sets with git_override | dev.to | 2024-12-30bazel_dep(name = "rules_proto_grpc", version = "5.0.1") git_override( module_name = "rules_proto_grpc", remote = "https://github.com/rules-proto-grpc/rules_proto_grpc.git", commit = "d17b5b16c8b12143c6f1b78dabd6bbc228e89b58", strip_prefix = "modules/core", ) bazel_dep(name = "rules_proto_grpc_python", version = "5.0.1") git_override( module_name = "rules_proto_grpc_python", remote = "https://github.com/rules-proto-grpc/rules_proto_grpc.git", commit = "d17b5b16c8b12143c6f1b78dabd6bbc228e89b58", strip_prefix = "modules/python", )
-
-
-
-
-
In my previous position, we accomplished this using a "dev docker" (which I covered generally in a previous post: https://blog.fahhem.com/2023/12/dev-onboarding-then-now/) that's based around a specific version of Ubuntu (20.04) so the glibc is tied to that.
In another project, I used a hermetic C++ toolchain (you can use gcc with https://github.com/f0rmiga/gcc-toolchain/ or clang/llvm with https://github.com/bazel-contrib/toolchains_llvm) that pulled in its own (locked) version of glibc and lld, etc.
-
-
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Starlark Bazel discussion
Starlark Bazel related posts
-
Base Images: The Secret to Smaller Docker Images
-
Using Bazel to build a new Rust project
-
Distroless: Language focused Docker images, minus the operating system
-
An Overview of the Starlark Language
-
Cargo Was a Mistake
-
Chainguard Images now available on Docker Hub
-
Language focused Docker images, minus the operating system
-
A note from our sponsor - InfluxDB
www.influxdata.com | 24 May 2025
Index
What are some of the best open-source Bazel projects in Starlark? This list will help you:
# | Project | Stars |
---|---|---|
1 | distroless | 20,501 |
2 | examples | 879 |
3 | rules_nodejs | 745 |
4 | rules_rust | 725 |
5 | rules_foreign_cc | 704 |
6 | rules_python | 599 |
7 | rules_apple | 547 |
8 | bazel-skylib | 412 |
9 | rules_scala | 375 |
10 | rules_jvm_external | 347 |
11 | rules_js | 334 |
12 | rules_nixpkgs | 330 |
13 | rules_swift | 320 |
14 | toolchains_llvm | 318 |
15 | bazel-coverage-report-renderer | 269 |
16 | rules_proto_grpc | 266 |
17 | rules_cc | 209 |
18 | rules_gitops | 183 |
19 | rules_ts | 120 |
20 | platforms | 114 |
21 | gcc-toolchain | 114 |
22 | bazel-embedded | 109 |
23 | rules_py | 108 |