HeadlinesBriefing HeadlinesBriefing.com

GitHub headstart beschleunigt Rust 54%

Hacker News •
×

Abhängige Crates starten, bevor ihre Abhängigkeiten die Typprüfung abgeschlossen haben. Jedes Crate wartet darauf, dass die Crates, von denen es abhängt, vollständig geprüft sind, einschließlich der Funktionskörper, bevor es beginnt. Es benötigt diese Körper nicht, um sich selbst zu typüberprüfen. Es kompiliert gegen die Schnittstelle der Abhängigkeit, die Metadaten in ihrer .rmeta-Datei. Headstart lässt rustc eine frühe Metadatendatei schreiben, sobald die Schnittstelle geprüft ist, und lässt cargo die Abhängigen darauf starten. Die Körper jedes Crates werden dann geprüft, während die nachgelagerten Crates bereits kompilieren.

cargo check: Abhängige laufen auf frühen Metadaten bis zum Abschluss. cargo build: Abhängige führen ihre gesamte Analyse auf frühen Metadaten durch, warten dann auf die vollständigen Metadaten der Abhängigkeit, bevor sie Code generieren. Während sie warten, geben sie ihren Job-Slot zurück. Wenn ein Körper einen Fehler hat, schlägt der Build immer noch mit diesem Fehler fehl, mit denselben Diagnosen und Exit-Status wie heute; nur Fortschrittszeilen und die Crate-übergreifende Reihenfolge von JSON-Nachrichten können abweichen.

Die Kosten sind nachgelagerte Arbeit, die verworfen wird, Fehler, die etwas später gemeldet werden, und mehr gleichzeitig genutzter Speicher (siehe docs/design.md). Auf dem Standard-Frontend von rustc macht headstart saubere Builds von 13 realen Projekten (rust-analyzer, zed, bevy, lemmy, polars und andere) bis zu 54% schneller für cargo check und bis zu 42% schneller für cargo build. Keines ist langsamer. Mit dem parallelen Frontend (-Zthreads=8), das einen Teil des gleichen Bereichs abdeckt, kommen bis zu 25% hinzu. Das sind 16-Kern-Zahlen.

Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing