Show HN: Fleet – Experimental build tool for Rust that’s up to 5x faster

63 points by VarunPotti ↗ HN
Fleet is an experimental fast, lightweight, open-source, build tool for Rust.

Builds with Fleet enabled are up-to 5x faster!

For a production repository (infinyon/fluvio) which we tested, we were able to cut down our incremental build times from 29 seconds down to 9 seconds, boosted by Fleet. We saw even better results on dimensionhq/volt, with our build times cut down from 3 minutes to just 1 minute - a 3x speed improvement!

How does fleet work?

Fleet works by optimizing your builds using existing tooling available in the Rust ecosystem, including seamlessly integrating sccache, lld, zld, ramdisks (for those using WSL or HDD's) et al.

You can get fleet at the official website.

Check out fleet over at https://github.com/dimensionhq/fleet and our website at https://fleet.rs

Looking forward to your feedback and thoughts!

27 comments

[ 0.27 ms ] story [ 83.3 ms ] thread
Nice, faster rust builds are always welcome.

I wonder if in the future some service might even offer prebuilt crates for the various architectures. I think that idea was brought up at some point.

The site and repo readme are quite light on details on how this works.

Does it do anything else besides using sccache and lld/zld? I'd expect so, since these tools don't require rust nightly, whereas fleet does.

---

Edit:

After a quick look over the code, it also sets codegen units to 256, but doesn't seem to do anything else.

I see the same improvements adding manually sccache and mold to ~/.cargo/config.toml when building volt, without touching the repo's Cargo.toml.

standard rust config: 1m20s

sccache + mold: 30s

I ran the tests with Rust 1.60.0, on Linux, on an AMD 5850U (6 core, mobile).

It also uses ramdisk on WSL or for those who use hard-drives for builds.

Also great question about using nightly, we're using a shared-generics flag that requires nightly (and speeds up build times).

We're working on making this more configurable to enable / disable what features you want.

> It also uses ramdisk on WSL or for those who use hard-drives for builds.

Yeah, I skipped over this, considering that most people doing rust dev will likely have some kind of SSD.

I didn't look into how you went about doing this, but one thing that I'd like is to be able to move the target/ directory on a ram disk, or, generally, out of the source root [0]. If Fleet were able to do this transparently, it would be really great.

---

[0] I know it's possible to define an external directory, but it applies to all projects, and it's not what I want, because shared crates would go overwrite each other.

This is exactly what we do, move the target/ directory on a ramdisk.
Yep we also create a unique id for each project so that you can run 2 different rust apps during the same session, or else 1 rust projects build files would be mixed with the others how we go about this is we create a directory /dev/shm/<uuid> and symlinking this created directory into the rust projects target dir
Do you think this could be somehow integrated with Cargo to be run with `cargo build`?

The reason I'm asking is that I use the IntelliJ plugin for Rust dev which is kind of clunky and only understands a few commands as being "build", so it doesn't show the build window.

Our main goal building fleet was to make it really easy to have an optimized CI/CD pipeline and local development process for faster builds.

Our go-to linker was actually mold until we realized that their license is not compatible with ours.

We also use shared-generics to try to speed up builds, along with the ramdisk that I previously mentioned.

The 5850U is the 8 core part. Maybe you mean 5650U?
I’m excited to see this! Given that sccache integrates with cloud storage, this looks fairly straightforward to integrate in a CI/CD workflow, did I get that right?
(comment deleted)
Yep, we also made sure that we include examples so that you can easily use this with github workflows, it configures & caches all the installed apps so that you would get really fast builds . https://fleet.rs/docs/ci/linux
> For a production repository (infinyon/fluvio) which we tested, we were able to cut down our incremental build times from 29 seconds down to 9 seconds, boosted by Fleet. We saw even better results on dimensionhq/volt, with our build times cut down from 3 minutes to just 1 minute - a 3x speed improvement!

Not sure your maths are correct here.

Top line: > Fleet is the blazing fast build tool

My primate pattern-matching brain says this is functionality-poor compared to its alternatives, or the alternatives it compares to are poor examples.

As noted by another HN user, it's clear that this doesn't do anything interesting on Linux. Also, higher codegen units will produce slower code at times. Overall, on Linux I do not notice any significant improvement in build times (we already use sccache)
(comment deleted)