$ the-wire · showcase
compiler-builtins adds wcslen for LLVM 23, crates.io streamlines owner handling
By RepoJournal · Filed · About Rust
compiler-builtins ships a wcslen implementation to fix link errors under LLVM 23, while crates.io refactors owner management.
compiler-builtins adds a `wcslen` builtin [1] because "In LLVM 23, calls to `wcslen` are sometimes generated by a loop optimization pass" [1]. This was causing linker errors on some Rust targets, including UEFI targets, so a simple implementation is now provided. A related test change replaces the `no_mangle` wrapper with `optimize(none)` for robustness [2], and complex division and multiplication for `f32` and `f64` now use `extern "C"` with C names, while `f16` and `f128` keep `extern "Rust"` due to ABI issues [3]. Meanwhile, a new constant for a quieted signaling NaN is added to libm with a check in the C file [4]. compiler-builtins maintainers should verify their LLVM 23 targets link cleanly.
crates.io simplifies owner handler logic by splitting `modify_owners()` into separate handlers per workflow, which "makes each workflow easier to read and lets us change their username resolution independently" [5]. This PR also moves crate loading and permission checks before the transaction so GitHub calls during permission checks no longer hold a transaction open [5]. A related commit moves permission checks outside the transaction, noting that because another request can change the owner list, moving the check does not introduce a new race [6]. Separately, crates.io removes the `HTML_EMAILS_ENABLED` feature flag [7], and admin commands and APIs now use `users.username` instead of `users.gh_login` as part of the crates.io username transition [8]. Admin users should note that `verify-token` will return the crates.io username, which currently matches GitHub but may not in the future [8].
In repositories and team ops, the crates.io-index saw routine crate updates and creations, including new crate `sim-lib-estate-serve` [9]. The team repo added a rust-analyzer private channel [10], and blog.rust-lang.org fixed a broken unsized locals link in the Rust 1.35.0 post to use a stable link instead of Nightly or Beta links [11].
Action items
- → Update compiler-builtins to include wcslen if you build for UEFI or other affected targets with LLVM 23 rust-lang/compiler-builtins [immediate]
- → Review crates.io admin workflows for username vs gh_login changes rust-lang/crates.io [monitor]
References
- [1] Add wcslen builtin ↗ rust-lang/compiler-builtins
- [2] test: Replace `wcslen` `no_mangle` wrapper with `optimize(none)` ↗ rust-lang/compiler-builtins
- [3] use `extern "C"` and C names for complex div and mul of `f32` and `f64` ↗ rust-lang/compiler-builtins
- [4] libm: Add a quieted signaling NaN constant ↗ rust-lang/compiler-builtins
- [5] Simplify owner handlers for username disambiguation ↗ rust-lang/crates.io
- [6] controllers/owners: Move permission checks outside transaction ↗ rust-lang/crates.io
- [7] Remove `HTML_EMAILS_ENABLED` feature flag (#14570) ↗ rust-lang/crates.io
- [8] Use crates.io username in admin contexts ↗ rust-lang/crates.io
- [9] Create crate `sim-lib-estate-serve` ↗ rust-lang/crates.io-index
- [10] Add rust-analyzer private channel ↗ rust-lang/team
- [11] Fix link for unsized locals in Rust-1.35.0.md ↗ rust-lang/blog.rust-lang.org