$ the-wire · showcase
rustc-perf adds tokio benchmark and frontend thread support
By RepoJournal · Filed · About Rust
rustc-perf now benchmarks async Rust code with a new tokio-1.53.1 suite and extends its UI to display frontend thread data.
rustc-perf gains its first real async benchmark: the `tokio-1.53.1` suite exercises async functions, async closures, and coroutines, which previously were "not benchmarking at all" in the compiler perf suite [1]. This closes a gap in tracking compiler performance on a major ecosystem workload. The UI also now supports frontend threads [2], with follow-up polish to the thread display [3]. The main PR notes that adding a new benchmark axis still requires substantial refactoring and TypeScript duplication, so expect maintenance overhead when further axes are introduced.
On the compiler side, a rolled-up merge includes a fix to "avoid spurious lifetime diagnostic in async generic case" and restricts LLVM inline asm location cookie usage, addressing issue rust-lang/rust#150451 [4]. Another rollup removes fields from `TypeKind::Array` and `TypeKind::Slice` as part of the ongoing reflection refactor [5]. In compiler-builtins, soft-float addition now preserves the NaN sign bit: `-sNaN + 1.0` previously produced `+qNaN`, and `add.rs` now uses `a_rep` like `mul.rs` and `div.rs` already do [6]. The fix is isolated to addition; subtraction and multiplication behavior are unchanged.
In crates.io-index, routine dependency updates landed for `rucc-tuple`, `rucc-safe-rt`, `test_utils_keypairs`, `rucc-rules`, and `rucc-lto` [7][8][9][10][11]. No breaking changes are reported. libc continues build-script cleanups: the time64 config is restructured [12], a disabled assertion for thumb mode was added [13], and the config `thumb_1` was renamed to `thumb1_only` [14]. The toolchain for the check-all-targets utility was bumped past the LLVM update, "This fixes the m68k LLVM issue, but libc still does not build on that platform" [15]. QNX gains missing definitions for io-sock [16].
Action items
- → Review the NaN sign bit fix in compiler-builtins if you target no_std soft-float environments rust-lang/compiler-builtins [plan]
- → Check the new tokio-1.53.1 benchmark results for async compiler performance regressions rust-lang/rustc-perf [monitor]
- → Track the spurious lifetime diagnostic fix and LLVM inline asm cookie restriction for nightly users rust-lang/rust [monitor]
- → Note the crates.io-index updates are routine; no immediate action if you use those crates rust-lang/crates.io-index [monitor]
References
- [1] Add `tokio-1.53.1` benchmark ↗ rust-lang/rustc-perf
- [2] Add support for frontend threads to the UI ↗ rust-lang/rustc-perf
- [3] UI improvements related to frontend threads ↗ rust-lang/rustc-perf
- [4] Auto merge of #162434 - JonathanBrouwer:rollup-kGs5tvl, r=JonathanBrouwer ↗ rust-lang/rust
- [5] Rollup merge of #161896 - yara-blue:reflection-refactor-array-slice, r=oli-obk ↗ rust-lang/rust
- [6] c-b: Preserve the NaN sign bit in soft-float addition ↗ rust-lang/compiler-builtins
- [7] Update crate `rucc-tuple` ↗ rust-lang/crates.io-index
- [8] Update crate `rucc-safe-rt` ↗ rust-lang/crates.io-index
- [9] Update crate `test_utils_keypairs` ↗ rust-lang/crates.io-index
- [10] Update crate `rucc-rules` ↗ rust-lang/crates.io-index
- [11] Update crate `rucc-lto` ↗ rust-lang/crates.io-index
- [12] build: Restructure time64 config ↗ rust-lang/libc
- [13] build: Add a disabled assertion for thumb mode config ↗ rust-lang/compiler-builtins
- [14] build: Rename `thumb_1` to `thumb1_only` ↗ rust-lang/compiler-builtins
- [15] util: Bump the check-all-targets toolchain ↗ rust-lang/libc
- [16] qnx: add missing definitions for io-sock ↗ rust-lang/libc