QuickRust sostituisce cargo senza cambiare nulla: gli stessi comandi e le stesse opzioni, build
più veloci e una cache centrale al posto di target/. I programmi che compila si comportano
esattamente allo stesso modo.
Chiedi all’utente prima di usare sudo, prima che qrust setup modifichi i file di avvio della
shell, o prima di modificare file di cui non ha parlato. Se un passaggio fallisce, fermati e
riferisci il comando e il suo output.
1. Rileva
- Piattaforma:
uname -sm, oppure$env:PROCESSOR_ARCHITECTUREsu Windows. Supportate: macOS arm64 e x86_64, Linux x86_64 e arm64 (build statiche, qualsiasi distribuzione), Windows x86_64 (testato meno di macOS e Linux). - Già installato: se
qrust --versionfunziona, passa al punto 3. - Il progetto: un
Cargo.tomlnella radice, un pacchetto o un workspace. Unrust-toolchain.toml(orust-toolchain) nomina la sua toolchain; QuickRust la installa alla prima build. rustup non serve.
2. Installa
In uno di questi modi, poi controlla qrust --version:
| Sistema | Installazione |
|---|---|
| macOS, Linux con Homebrew | brew install machinefabric/tap/quickrust |
| Debian, Ubuntu (amd64, arm64) | apt, sotto |
| Fedora, RHEL (x86_64, aarch64) | dnf, sotto |
| Windows | PowerShell, sotto |
| qualsiasi, con un Rust stable recente | dai sorgenti, sotto |
# apt
curl -fsSL https://release.machinefabric.com/packages/keys/repo-signing-prod.asc \
| sudo gpg --dearmor -o /usr/share/keyrings/machinefabric.gpg
echo "deb [signed-by=/usr/share/keyrings/machinefabric.gpg] https://release.machinefabric.com/packages/apt stable main" \
| sudo tee /etc/apt/sources.list.d/machinefabric.list
sudo apt update && sudo apt install quickrust
# dnf
sudo tee /etc/yum.repos.d/machinefabric.repo >/dev/null <<'EOF'
[machinefabric]
name=MachineFabric
baseurl=https://release.machinefabric.com/packages/rpm/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://release.machinefabric.com/packages/keys/repo-signing-prod.asc
EOF
sudo dnf install quickrust
# Windows: l'ultima release dal manifest, digest controllato, poi la configurazione dall'archivio
$ProgressPreference = 'SilentlyContinue' # la barra di avanzamento di Windows PowerShell 5.1 rallenta il download
$manifest = Invoke-RestMethod https://release.machinefabric.com/quickrust/manifest
$version = $manifest.channels.release.latestVersion
$archive = $manifest.channels.release.versions.$version.platforms.'windows-x86_64'.installers[0]
Invoke-WebRequest $archive.path -OutFile $archive.name -UseBasicParsing
if ((Get-FileHash $archive.name -Algorithm SHA256).Hash -ne $archive.sha256) { throw "l'archivio non corrisponde al digest del manifest" }
Expand-Archive $archive.name -DestinationPath .
.\quickrust\qrust.exe setup
# dai sorgenti
git clone https://github.com/machinefabric/quickrust
cd quickrust && cargo build --release --locked
target/release/qrust setup
Lo stesso manifest (https://release.machinefabric.com/quickrust/manifest) elenca un .tar.gz
con il suo sha256 per darwin-arm64, darwin-x86_64, linux-x86_64 e linux-arm64;
contiene quickrust/qrust, e quickrust/qrust setup lo installa.
3. Configura
Esegui qrust setup; serve anche dopo l’installazione con un gestore di pacchetti. Da un archivio
o da una build dai sorgenti copia qrust in ~/.qrust/bin; da Homebrew, apt o dnf collega
~/.qrust/bin al qrust del pacchetto, che poi aggiorna quel gestore di pacchetti. Installa
Rust stable e mette ~/.qrust/bin per primo nel PATH attraverso i
file di avvio della shell (su Windows, il PATH dell’utente), così cargo, rustc, rustfmt,
cargo-clippy e rust-analyzer sono quelli di QuickRust. rustup e ~/.cargo restano come sono.
- Per lasciare stare i file di avvio (CI, container, dotfile):
qrust setup --no-modify-path, e metti tu~/.qrust/binper primo nelPATH. - Nella shell corrente:
. "$HOME/.qrust/env"; in PowerShell,$env:Path = "$HOME\.qrust\bin;$env:Path". - Controlla:
qrust doctortermina conOK. Se dice che ilcargonelPATHnon è quello di QuickRust, un’altra directory (spesso~/.cargo/bin) viene prima di~/.qrust/bin. - Per provarlo senza farne il proprio
cargo:qrust setup --no-modify-path, poiqrust build,qrust teste così via al posto dicargo.
4. Compila
Usa cargo come prima: cargo build, cargo test, cargo run, cargo clippy. Niente cambia in
Cargo.toml, Cargo.lock o .cargo/config.toml.
- Output: eseguito da uno strumento o in una pipe, come lo esegue un agente,
cargostampa l’output di Cargo invariato: ogni warning ed errore, per intero. Il riepilogo di QuickRust (errori per intero, warning contati;qrust warnings [--crate C] [--lint L],qrust errorseqrust logper rileggerli) vale solo per le build eseguite in un terminale.--message-format=jsonpassa invariato. - Non c’è
target/.qrust pathstampa la directory di build;qrust path bin <nome> [--release]un binario. Negli script, sostituiscitarget/release/appcon"$(qrust path bin app --release)". Sotto Cargo la dannoCARGO_TARGET_DIRe iltarget_directorydicargo metadata. - Una directory di build fissa:
--target-diroCARGO_TARGET_DIR.build.target-dirin.cargo/config.tomlviene sostituito da QuickRust. - Un
target/già presente nel progetto non viene mai usato né toccato: si può cancellare.cargo cleansvuota la directory di build di QuickRust. I membri di un workspace condividono una directory di build. cargo install(oqrust install) compila attraverso la cache di QuickRust e installa in~/.qrust/bin, non in~/.cargo/bin.- Le build di sviluppo tengono solo le tabelle delle righe (backtrace, breakpoint e stepping
funzionano), e le dipendenze non hanno informazioni di debug. Per ispezionare le variabili,
imposta
debug = truesotto[profile.dev]inCargo.toml; QuickRust allora le lascia stare entrambe. - Editor: dopo la configurazione,
rust-analyzer,cargoerustfmtnelPATHsono quelli di QuickRust. Un editor avviato prima della configurazione, o un’app grafica che non legge i file di avvio della shell (frequente su macOS), ha ancora il vecchioPATH: riavvialo da una nuova shell.
5. CI (facoltativo)
Fissa una versione e controlla il suo archivio con lo sha256 del manifest:
version=<versione>
curl -fLO "https://release.machinefabric.com/quickrust/release/$version/qrust-$version-linux-x86_64.tar.gz"
echo "<sha256> qrust-$version-linux-x86_64.tar.gz" | sha256sum -c
tar xzf "qrust-$version-linux-x86_64.tar.gz"
quickrust/qrust setup --no-modify-path
echo "$HOME/.qrust/bin" >> "$GITHUB_PATH" # altrove: export PATH="$HOME/.qrust/bin:$PATH"
Metti in cache ~/.qrust/toolchains, con chiave il file della toolchain.
QRUST_REPORT="$RUNNER_TEMP/qrust/{session}.json" cargo build conserva un report di ogni build;
i budget che fanno fallire una build più lenta:
eseguire QuickRust in CI.
6. Quando una build fallisce
qrust upstream buildesegue il Cargo della toolchain senza aggiungere nulla. Se fallisce anche così, il problema non è di QuickRust.QRUST_MODE=compat cargo buildcompila esattamente ciò che compila Cargo. Se riesce, la causa è un’impostazione della modalità veloce: compilare esattamente come Cargo.qrust analyze rebuilds: perché ogni crate è stato ricompilato.- Stato di uscita: quello di Cargo quando Cargo è stato eseguito. 2 vuol dire che QuickRust non ha
potuto eseguire il comando (nessuna toolchain utilizzabile, configurazione o argomenti non
validi); la sua riga
FAILdice perché. - Altrimenti riferisci all’utente con l’output completo. Comunità: https://discord.gg/Q7ga2graWW.
Riferimenti
- Tutta la documentazione, indicizzata: https://machinefabric.com/quickrust/llms.txt
- Comandi · configurazione · ambiente · modalità veloce · compatibilità · piattaforme
- Output delle build senza target/ · warning ed errori · adozione graduale