πŸš€ Fleet is the blazing fast build tool for Rust

Overview

image


Fleet is the blazing fast build tool for Rust. Compiling with Fleet is up-to 5x faster than with cargo.

Note: Since fleet is in the beta phase, it might not be completely stable yet. Feel free to open any issues or bug reports at issues.

Note: As of now fleet only supports rustc nightly

⚑ Installation

On MacOS & Linux:

curl -L get.fleet.rs | sh

On Windows:

iwr -useb windows.fleet.rs | iex

Building from source

Prerequisites: Rust

cargo install --git https://github.com/dimensionhq/fleet fleet-rs

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.

πŸ‘ Supporters

Stargazers repo roster for @dimensionhq/fleet

Forkers repo roster for @dimensionhq/fleet


Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the Apache 2.0 License - see the LICENSE.md file for details.

Comments
  • Fleet doesn't work if rustup is installed via scoop

    Fleet doesn't work if rustup is installed via scoop

    Describe the bug A clear and concise description of what the bug is.

    It cannot find sccache because it is in a custom directory. A good environment variable to look for is $CARGO_HOME.

    To Reproduce Steps to reproduce the behavior:

    1. Run fleet run
    2. Sccache is installed but it warns about not being installed

    Expected behavior A clear and concise description of what you expected to happen.

    It should find sccache in the custom cargo directory.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: Windows
    • Version: 11

    Additional context Add any other context about the problem here.

    opened by Milo123459 14
  • builds of `fleet` are broken on linux

    builds of `fleet` are broken on linux

    Building the fleet executable through Cargo (in the natural way (eg, git clone; cd fleet; cargo build)doesn't work. Even after installing sccache and lld, the builds are broken, because your config.toml expects sccache at C:\Users\potti\.cargo\bin.

    cargo build
    
     cargo build                                                                 
    error: failed to run `rustc` to learn about target-specific information
    
    Caused by:
      could not execute process `C:\Users\potti\.cargo\bin\sccache rustc - --crate-name ___ --print=file-names -Clink-arg=-fuse-ld=lld -Zshare-generics=y --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (never executed)
    
    Caused by:
      No such file or directory (os error 2)
    

    this is fixable by simply deleting that line in the config, or by deleting the config entirely.

    if you want people to take this project more seriously, I strongly suggest making some kind of basic CI that tests the builds on "bare" ubuntu, alpine, & windows, by following your readme exactly.

    you should list your dependencies in the README, too: AFAIK, they're:

    ALL:

    sccache

    cargo install sccache

    lld (windows, ubuntu)

    windows

    winget install llvm

    ubuntu

    sudo apt-get install lld-12

    zld (macos)

    brew install zld

    opened by efronlicht 14
  • Website DNS name not resolved

    Website DNS name not resolved

    Describe the bug The website is unavailable right now.

    To Reproduce Either go to the website ( https://fleet.rs ) or this URL https://www.isitdownrightnow.com/fleet.rs.html

    bug 
    opened by linkdd 7
  • Working with multiple people in a team

    Working with multiple people in a team

    This repo gitignores .cargo/config - a file that contains general configuration for the project. If you don't gitignore it, you will constantly have changes in the .cargo/config as it is updating paths to work on that specific machine. Are there anyways to make it so we don't have to gitignore .cargo/config, but continue to use fleet?

    opened by Milo123459 6
  • Fleet runs apt even on Arch Linux

    Fleet runs apt even on Arch Linux

    Describe the bug Fleet runs the apt command to install clang and lld even on Arch Linux which is a non-Debian/Ubuntu based Linux distro. It's offical package manager is called pacman. Also it is kinda bad practice to call sudo explicitly by a program.

    To Reproduce

    curl -L get.fleet.rs | sh
    

    Expected behavior I think fleet should ask the user to install clang and lld by themselves rather doing it by itself.

    Desktop

    • OS: Arch Linux
    bug 
    opened by arijit79 5
  • Allow clang from different locations (not only `/usr/bin/clang`)

    Allow clang from different locations (not only `/usr/bin/clang`)

    on a linux server, where I do not have sudo access:

    error: linker /usr/bin/clang not found | = note: No such file or directory (os error 2)

    error: could not compile rayon-core due to previous error warning: build failed, waiting for other jobs to finish... error: could not compile log due to previous error error: could not compile crossbeam-epoch due to previous error error: could not compile parking_lot_core due to previous error error: could not compile memchr due to previous error error: could not compile getrandom due to previous error error: could not compile crossbeam-utils due to previous error error: could not compile proc-macro-hack due to previous error error: could not compile proc-macro2 due to previous error error: could not compile serde_derive due to previous error error: could not compile libc due to previous error error: could not compile serde due to previous error error: could not compile syn due to previous error => You have not installed lld. Run sudo apt install lld. => You have not installed clang. Run sudo apt install clang.

    I do have those 2 installed but is not in /usr/bin:

    /usr/local/pace-apps/spack/packages/0.13/linux-rhel7-x86_64/gcc-4.8.5/intel-parallel-studio-cluster.2019.5-rde2uvgb2mq2x6obqaklxppmycfngjgm/compilers_and_libraries_2019.5.281/linux/bin/lld [jzhao399@atl1-1-03-004-19-l hnswlib-rs]$ which clang /usr/local/pace-apps/spack/packages/0.13/linux-rhel7-x86_64/gcc-4.8.5/intel-parallel-studio-cluster.2019.5-rde2uvgb2mq2x6obqaklxppmycfngjgm/compilers_and_libraries_2019.5.281/linux/bin/clang

    why depend on a system level clang and lld? Think about those who wants to install via conda et.al.

    Thanks, Jianshu

    bug 
    opened by jianshu93 4
  • A Shout Out

    A Shout Out

    @suptejas really impressed with your rust skill and product development at large for a 16yr old. Really impressed with your products. I also started programming at age 13. You've done what I never had the opportunity to do that young. Keep it up and the fleet is great I use it daily.

    opened by juicycleff 3
  • Strange configuration after install/uninstall fleet

    Strange configuration after install/uninstall fleet

    Team,

    After install and uninstall fleet, I always have the following error no matter what I compile:

    error: failed to run rustc to learn about target-specific information

    Caused by: could not execute process /Users/jianshuzhao/.cargo/bin/sccache rustc - --crate-name ___ --print=file-names --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg (never executed)

    Caused by: No such file or directory (os error 2)

    I believe sccache is not required before. What happened to fleet and what configuration was changed?

    This is really confusing and not acceptable.

    Thanks,

    Jianshu

    bug 
    opened by jianshu93 3
  • fleet run fail, and cargo run fail too

    fleet run fail, and cargo run fail too

    After install on Mac(M1), get an error when fleet run:

    main-2588b02f17a95c9e" "-Wl,-dead_strip" "-nodefaultlibs" "-fuse-ld=/usr/local/bin/zld"
      = note: clang: error: invalid linker name in argument '-fuse-ld=/usr/local/bin/zld'
    

    and also the cargo command fail after installing fleet:

    8b02f17a95c9e" "-Wl,-dead_strip" "-nodefaultlibs" "-fuse-ld=/usr/local/bin/zld"
      = note: clang: error: invalid linker name in argument '-fuse-ld=/usr/local/bin/zld'
    

    It means both fleet and cargo is broken.

    Is there any way to fix it? Thank you!

    opened by govo 3
  • fleet-rs Crash Report

    fleet-rs Crash Report

    Describe the bug using fleet to build wezterm on a chromebook Linux penguin 5.10.114-16023-g49367ce3348c #1 SMP PREEMPT Mon May 30 19:31:09 PDT 2022 aarch64 GNU/Linux

    debian 11 bullseye cargo 1.61.0 (a028ae4 2022-04-29) rustc 1.61.0 (fe5b13d68 2022-05-18)

    To Reproduce Follow build steps here https://wezfurlong.org/wezterm/install/source.html

    used fleet build -- --release and fleet build produced crash files, attached.

    Expected behavior A rust build

    The dump files say permission denied but I can't figure out what file.

    Archive.zip (GitHub doesn't allow .toml uploads)

    For what it's worth, cargo build --release didn't work either. So, I'm just submitting the crash report.

    bug 
    opened by bdmorin 2
  • Incorrect description in fleet.rs CI/CD example

    Incorrect description in fleet.rs CI/CD example

    Describe the bug

          - name: Cache .cargo/bin
            uses: actions/cache@v3
            env:
              cache-name: cache-node-modules
            with:
              # npm cache files are stored in `~/.npm` on Linux/macOS
              path: ~/.cargo/bin
              key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/cargo.lock') }}
              restore-keys: |
                ${{ runner.os }}-build-${{ env.cache-name }}-
                ${{ runner.os }}-build-
                ${{ runner.os }}-
    

    To Reproduce Linux CI/CD

    Expected behavior We are caching for cargo, not npm node modules.

    Screenshots image

    bug 
    opened by sgkoishi 1
  • Win11 installation panicks: thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: NotFound, message:

    Win11 installation panicks: thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: NotFound, message: "program not found" }

    Describe the bug The fleet installer panicks when installing the build tool in Windows 11.

    To Reproduce Steps to reproduce the behavior: In an elevated PowerShell prompt in Windows 11:

    #  % natalie-perret @ nppc in ~ [15:59:04]
    $ $Env:RUST_BACKTRACE='full'
    
    #  % natalie-perret @ nppc in ~ [15:59:13]
    $ iwr -useb windows.fleet.rs | iex
    Installing Fleet
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: NotFound, message: "program not found" }', src\main.rs:29:10
    stack backtrace:
       0:     0x7ff67776f70f - <unknown>
       1:     0x7ff677785c3a - <unknown>
       2:     0x7ff67776c089 - <unknown>
       3:     0x7ff677771c0b - <unknown>
       4:     0x7ff6777717fe - <unknown>
       5:     0x7ff677772201 - <unknown>
       6:     0x7ff6777720bd - <unknown>
       7:     0x7ff6777702c7 - <unknown>
       8:     0x7ff677771d99 - <unknown>
       9:     0x7ff677798c85 - <unknown>
      10:     0x7ff677798d23 - <unknown>
      11:     0x7ff67776189c - <unknown>
      12:     0x7ff677761b72 - <unknown>
      13:     0x7ff677762116 - <unknown>
      14:     0x7ff677761c1c - <unknown>
      15:     0x7ff677768aa9 - <unknown>
      16:     0x7ff677761c07 - <unknown>
      17:     0x7ff67778a344 - <unknown>
      18:     0x7ffdeb79244d - BaseThreadInitThunk
      19:     0x7ffdec92df78 - RtlUserThreadStart
    Successfully Installed fleet
    

    Expected behavior It ain't supposed to panic.

    Screenshots If applicable, add screenshots to help explain your problem. image

    Desktop (please complete the following information):

    Copyright (c) Microsoft Corporation.
    
    https://aka.ms/powershell
    Type 'help' to get help.
    
       A new PowerShell stable release is available: v7.2.7
       Upgrade now, or check out the release page at:
         https://aka.ms/PowerShell-Release?tag=v7.2.7
    
    
     lllllllllllllll   lllllllllllllll  natalie-perret@NPPC
     lllllllllllllll   lllllllllllllll  -------------------
     lllllllllllllll   lllllllllllllll  OS: Windows 11 Pro [64-bit]
     lllllllllllllll   lllllllllllllll  Host: Dell Inc. Precision 5550
     lllllllllllllll   lllllllllllllll  Kernel: 10.0.22621.0
     lllllllllllllll   lllllllllllllll  Motherboard: Dell Inc. 0V6K79
     lllllllllllllll   lllllllllllllll  Uptime: 7 minutes
                                        Packages: 128 (choco), 2 (scoop)
     lllllllllllllll   lllllllllllllll  Shell: PowerShell v7.2.6
     lllllllllllllll   lllllllllllllll  Resolution: 1280x720, 1280x720
     lllllllllllllll   lllllllllllllll  Terminal: Windows Terminal
     lllllllllllllll   lllllllllllllll  CPU: Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz
     lllllllllllllll   lllllllllllllll  GPU: Intel(R) UHD Graphics
     lllllllllllllll   lllllllllllllll  GPU: NVIDIA Quadro T1000
     lllllllllllllll   lllllllllllllll  Memory: 12.73 GiB / 31.75 GiB (40%)
                                        Disk (C:): 345 GiB / 475 GiB (72%)
    
    
    
    
    
    Loading personal and system profiles took 2023ms.
    

    Additional context Add any other context about the problem here.

    bug 
    opened by natalie-o-perret 0
  • Compile error.

    Compile error.

    When I try to compile I get it: error: incorrect value `...` for codegen option `split-debuginfo` - one of supported split-debuginfo modes (`off`, `packed`, or `unpacked`) was expected

    bug 
    opened by Jerrody 3
  • unknown codegen option: `-Zshare-generics`

    unknown codegen option: `-Zshare-generics`

    Describe the bug

    Just wanted to try fleet out, but getting an error even though I'm using nightly:

    πŸ“ Generated Fleet Config
    πŸš€ Fleet is ready!
    error: failed to run `rustc` to learn about target-specific information
    
    Caused by:
      process didn't exit successfully: `rustc - --crate-name ___ --print=file-names -C -Zshare-generics=y -Csplit-debuginfo=unpacked -C -Zshare-generics=y -Csplit-debuginfo=unpacked --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (exit status: 1)
      --- stderr
      error: unknown codegen option: `-Zshare-generics`
    

    To Reproduce fleet build

    Info:

    • OS: macOS 10.15
    • rustc: rustc 1.64.0-nightly (4d6d601c8 2022-07-26)
    • Fleet: 8dce51c
    bug 
    opened by probablykasper 0
  • Napi-rs release build failed when use fleet instead of cargo

    Napi-rs release build failed when use fleet instead of cargo

    Describe the bug NApi.rs release build failed because of https://github.com/dimensionhq/fleet/blob/9855e5fb9ce8d369e978386b69cefa7f0b13e103/src/core/config/cargo.rs#L113

    I found this issue in below discussion (additional context)

    Desktop (please complete the following information):

    • OS: MacOS

    Additional context Add any other context about the problem here.

    • napi-rs/napi-rs#1246
    bug 
    opened by seonglae 2
  • Is it possible to avoid installing the latest nightly, given that the user already has a nightly rustc?

    Is it possible to avoid installing the latest nightly, given that the user already has a nightly rustc?

    https://github.com/dimensionhq/fleet/blob/974d781cc4b09a6617cc7bebedb22dbb48984cf7/installer/src/main.rs#L22

    This code just updated my nightly rustc, while I already have a nightly rustc at a specific day. Is it possible to reuse the existing nightly rustc if there is one?

    opened by ice1000 2
Owner
Dimension
The future of open source starts here.
Dimension
Build fast, reward everyone, and scale without friction.

Scrypto Language for building DeFi apps on Radix. Terminology Package: A collection of blueprints, compiled and published as a single unit. Blueprint:

Radix DLT 330 Dec 25, 2022
QueingSimulator is an application that can be used to build intuitions about behavior of synchronous request/reply systems

Queueing Simulator QueingSimulator is an application that can be used to build intuitions about behavior of synchronous request/reply systems (such as

Joe Magerramov 7 Sep 11, 2022
A GitHub Action to automatically build and deploy your mdbook project.

?? deploy-mdbook The deploy-mdbook action allows you to easily build and deploy your mdBook project to GitHub Pages. See action.yml for configuration

null 27 Oct 24, 2022
RustHunter is a modular incident response framework to build and compare environmental baselines

RustHunter is a modular incident response framework to build and compare environmental baselines. It is written in Rust and uses Ansible to collect data across multiple hosts.

Giovanni Pecoraro 13 Dec 12, 2022
An abstraction build on top of discord-rich-presence that makes possible to use it in a more declarative way

Declarative Discord Rich Presence This library is an abstraction build on top of discord-rich-presence crate that allows you to use it in a more decla

null 2 Sep 7, 2022
A little bit fast and modern Ruby version manager written in Rust

A little bit fast and modern Ruby version manager written in Rust Features Pure Rust implementation not using ruby-build Cross-platform support (macOS

Takayuki Maeda 510 Jan 5, 2023
πŸš€ Fast and 100% API compatible postcss replacer, built in Rust

?? Fast and 100% API compatible postcss replacer, built in Rust

θΏ·ζΈ‘ 472 Jan 7, 2023
Fast and simple PHP version manager written in rust

[WIP] phpup (PHP-up): Fast and Simple PHP version manager ⚑ Fast and simple PHP version manager, written in rust Features No requirements for system P

null 27 Dec 25, 2022
A dead-simple, extreme fast permission flag system for Rust with no dependencies

A dead-simple, extreme fast permission flag system for Rust with no dependencies

pan93412 2 Mar 17, 2022
A simple, fast and fully-typed JSPaste API wrapper for Rust

rspaste A simple, fast and fully-typed JSPaste API wrapper for Rust. aidak.tk Β» Installation Put the desired version of the crate into the dependencie

Aidak 2 May 17, 2022
A blazingly fast πŸ”₯ Discord bot written in Rust

rusty-bot ?? A blazingly fast ?? Discord bot written in Rust. Commands name use !rm <count> deletes old messages !meme <subreddit> sends a random meme

Asandei Stefan 2 Oct 14, 2022
A fast & light weight Discord Client made with love using the Rust programming language.

LemonCord A fast & light-weight Discord Client written in Rust using the wry crate. Features Fast, light-weight, easy to use. 100% Open sourced. No su

Lemon Rose 5 Jan 30, 2023
A fast, powerful and configurable interpreter written in Rust

brainfuck-interpreter Overview A fast, powerful and configurable interpreter written in Rust, which allows various options to meet different demends,

Justin Chen 4 Feb 12, 2023
A fast package manager for NodeJS written in Rust.

click A fast package manager for NodeJS written in Rust. How fast? Benchmark of bun vs click clean install: Based on benchmarks done with hyperfine, c

Sam 52 Oct 10, 2023
A blazinlgy fast πŸš€ transpiler written in rust πŸ¦€ that fixes (pun intended) your problems

Pissfix ?? Pissfix is a blazingly fast ?? programming language that transpiles to a "interesting" and not well known programming language called "Post

null 3 Sep 28, 2023
A fast llama2 decoder in pure Rust.

llama2.rs ?? This is a Rust implementation of Llama2 inference on CPU The goal is to be as fast as possible. It has the following features: Support fo

Sasha Rush 771 Oct 30, 2023
MeiliSearch is a powerful, fast, open-source, easy to use and deploy search engine

MeiliSearch is a powerful, fast, open-source, easy to use and deploy search engine. Both searching and indexing are highly customizable. Features such as typo-tolerance, filters, and synonyms are provided out-of-the-box. For more information about features go to our documentation.

MeiliSearch 31.6k Dec 30, 2022
Extreme fast factor expression & computation library for quantitative trading in Python.

Extreme fast factor expression & computation library for quantitative trading in Python.

Weiyuan Wu 22 Dec 8, 2022
Novus - A blazingly fast and efficient package manager for windows.

Novus - A blazingly fast and efficient package manager for windows. Why Novus Swift Unlike any other package manager, Novus uses multithreaded downloads

Novus 197 Dec 18, 2022