Paul Krill
Editor at Large

Rust 1.93 updates bundled musl library to boost networking

news
Jan 22, 20262 mins

New Rust release brings major improvements to musl’s DNS resolver and tweaks the standard library to aid global allocators.

A rusty crown sits on an anvil.
Credit: AL-art/Shutterstock

The Rust team has unveiled Rust 1.93, the latest version of the programming language designed to create fast and safe system-level software. This release improves operations involving the DNS resolver for the musl implementation of the  C standard library. Linux binaries are expected to be more reliable for networking as a result.

Rust 1.93 was introduced January 22. Developers with previous versions of Rust installed via rustup can upgrade by running rust update stable.

With Rust 1.93, *-linux-musltargets will ship with musl 1.2.5. This mostly affects static musl builds for x86_64, aarch64, and powerpc64le, which bundled musl 1.2.3, the Rust team said. For the Rust ecosystem, the primary motivation for this update is to receive major improvements to musl’s DNS resolver that shipped in release 1.2.4 and received bug fixes in release 1.2.5. When using musl targets for static linking, the update should make portable Linux binaries that do networking more reliable, particularly in the face of large DNS records and recursive name servers.

However, the updated musl library also comes with a breaking change: the removal of several legacy compatibility symbols that the Rust libc crate was using. A fix for this was shipped in libc 0.2.146 in June 2023 (2.5 years ago). The team believes this fix has been widely enough propagated, so the team is ready to make the change in Rust targets.

Additionally, Rust 1.93 adjusts the internals of the standard library to permit global allocators written in Rust to use std’s thread_local! and std::thread::current with no re-entrancy concerns by using the system allocator instead, the Rust team said. Also in Rust 1.93, a cfg attribute now can be applied to individual statements within the asm!block. The cfg attribute conditionally includes the form to which it is attached based on a configuration predicate.

Finally, Rust 1.93 stabilizes 23 APIs. Rust 1.93 follows last month’s release of Rust 1.92, which made future compatibility lints deny-by-default, so they would cause a compilation error when detected.

Paul Krill

Paul Krill is editor at large at InfoWorld. Paul has been covering computer technology as a news and feature reporter for more than 35 years, including 30 years at InfoWorld. He has specialized in coverage of software development tools and technologies since the 1990s, and he continues to lead InfoWorld’s news coverage of software development platforms including Java and .NET and programming languages including JavaScript, TypeScript, PHP, Python, Ruby, Rust, and Go. Long trusted as a reporter who prioritizes accuracy, integrity, and the best interests of readers, Paul is sought out by technology companies and industry organizations who want to reach InfoWorld’s audience of software developers and other information technology professionals. Paul has won a “Best Technology News Coverage” award from IDG.

More from this author