Mozilla-Entwickler Ted Mielczarek hat am 21. November 2016 die Rust-Neuimplementierung des Compiler-Caches Sccache vorgestellt. Sie soll die bisherige Python-Fassung in Mozillas Build-Infrastruktur ersetzen. Nach mehreren Monaten Arbeit in Teilzeit hält Mielczarek die neue Fassung für den Produktionseinsatz bereit; einen abgeschlossenen Austausch aller Systeme meldet er noch nicht.
Gemeinsamer Cache für kurzlebige Build-Maschinen
Mozilla verwendet unter anderem kurzlebige Build-Maschinen in der Cloud. Ein ausschließlich lokaler Cache ist dort wenig nützlich, wenn die Maschine nach einem Auftrag verschwindet. Sccache speichert deshalb Kompilierergebnisse so, dass sie bei späteren passenden Aufrufen wiederverwendet werden können.
Die README des am 21. November zusammengeführten Rust-Stands beschreibt einen Compiler-Wrapper mit Client-Server-Aufbau. Als Speicher sind ein über die S3-API erreichbarer Cache oder ein lokales Verzeichnis vorgesehen. Genannt werden GCC, Clang und MSVC. Ein gemeinsamer Ergebnisspeicher ist dabei nicht dasselbe wie das Verteilen der eigentlichen Compilerarbeit auf entfernte Rechenknoten.
Messwerte betreffen den Configure-Schritt
In Try-Server-Vergleichen sank laut Mielczarek die Zeit für den Configure-Schritt um ungefähr 40 Prozent unter Linux und 20 Prozent unter macOS. Er vermutet geringere Prozessstartkosten als Ursache. Die Zahlen beziehen sich ausdrücklich nicht auf eine entsprechende Verkürzung des gesamten Firefox-Builds.
Die historische README nennt auch Grenzen: Getestet sind vor allem die bei Firefox verwendeten Compileroptionen. Der lokale Speicher bereinigt sich noch nicht selbst, und der direkte Modus von ccache wird nicht unterstützt. Für die Übernahme in eine eigene Build-Pipeline sind diese Einschränkungen ebenso relevant wie mögliche Zeitgewinne.
Die Umsetzung verwendet Rust, dessen Version 1.12 zuvor Compiler-Backend und Fehlermeldungen überarbeitet hatte. Daraus folgt jedoch keine Unterstützung für das Zwischenspeichern von Rust-Kompilierungen: Der hier beschriebene Sccache-Stand nennt C/C++-Compiler als Zielwerkzeuge.

