Supporto
| Piattaforma | Archivio di release (<platform> nel suo nome) |
Test |
|---|---|---|
| Linux x86_64 | linux-x86_64 (statico, musl) |
ogni suite di test, su Ubuntu; a mano su Debian 12, anche come root |
| Linux aarch64 | linux-arm64 (statico, musl) |
compilato per ogni release; le suite di test non vengono eseguite |
| macOS aarch64 | darwin-arm64 |
ogni suite di test |
| macOS x86_64 | darwin-x86_64 |
compilato per ogni release; le suite di test non vengono eseguite |
| Windows x86_64 | windows-x86_64 |
un’esecuzione configura QuickRust da zero (Rust stable dal server di distribuzione, il driver del compilatore), poi crea, compila, esegue e testa un progetto; le suite di integrazione sono solo per Unix |
Un archivio si chiama qrust-<version>-<platform>.tar.gz (.zip per Windows) e si estrae in un’unica directory, quickrust/, che contiene qrust, qrust-rustc-wrapper, le licenze e il README. Il manifest delle release (https://release.machinefabric.com/quickrust/manifest) elenca, per ogni release, le piattaforme per cui è stata compilata: una piattaforma che non vi compare non ha una build di quella release.
QuickRust si compila con Rust 1.80 o più recente. Le toolchain che installa sono per l’host su cui gira; su Linux, -gnu o -musl a seconda della libreria C del sistema, quella con cui è stato compilato QuickRust stesso.
Differenze tra le piattaforme
| Ambito | Linux | macOS | Windows |
|---|---|---|---|
Programmi della toolchain in ~/.qrust/bin |
link simbolici | link simbolici | hard link |
PATH configurato da qrust setup |
file di avvio della shell | file di avvio della shell | il PATH dell’utente, tramite PowerShell |
| Librerie della toolchain per i suoi programmi | LD_LIBRARY_PATH |
DYLD_FALLBACK_LIBRARY_PATH |
PATH |
| Il linker wild | host glibc | no | no |
Esecuzioni dei test (cargo test, cargo bench) |
terminale inoltrato, riga dei totali | terminale inoltrato, riga dei totali | le righe di Cargo |
| L’help di Cargo indica il programma che esegue | cargo |
cargo |
.qrust-engine.exe |
| Segnali di terminazione | inoltrati | inoltrati | solo ciò che la console consegna all’intero gruppo di processi |
qrust benchmark --timeout |
sì | sì | no |
| Inventario: deduplicazione degli hard link, dimensioni allocate | sì | sì | no |
| Rilevamento di una build di Cargo in corso (inventario) | sì | sì | no |
| Driver: link prima che rustc salvi il suo stato incrementale | sì | sì | no |
| Tipo di filesystem, modello di CPU, memoria nei report | sì | sì | null, con un motivo |
Limiti dell’osservazione su una toolchain stable
Questi dati vengono riportati come non disponibili (null con un motivo), mai come zero:
- quali unità Cargo ha considerato aggiornate: si sa solo quando l’utente passa
--message-format=jsone stdout non è un terminale (QuickRust legge allora il flusso mentre lo lascia passare) oppure quando è QuickRust a rendere la build; - la quota del linker in un’unità che esegue il link;
- il tempo speso a espandere le macro procedurali nei crate dipendenti;
- le invocazioni di rustdoc:
cargo docesegue rustdoc al di fuori diRUSTC_WRAPPER; - il tempo di CPU e la memoria per unità quando un client di cache (sccache) esegue rustc per conto del wrapper;
- i byte ripristinati da sccache, che non li riporta.
Le fonti di dati disponibili solo su nightly (--unit-graph, -Zbuild-analysis, tempi per sezione) vengono rilevate ed elencate in toolchain.capabilities del report; nulla dipende da esse. Perché: Misurare le build.