Rust Weekly #3: mold 3.0 Rewritten in Rust, GCA Emerges for Const Generics, and Deno Team Joins Cloudflare

Rust · Weekly #3

Rust Weekly #3: mold 3.0 Rewritten in Rust, GCA Emerges for Const Generics, and Deno Team Joins Cloudflare

rustRustLanguage WeeklyLinkersCompile-Time Computation

Sources:GitHub Releases + 官方博客 + HN

📦 Release Radar

Official Stable Evolution and Build Pipeline Upgrades

The current latest stable release is Rust 1.99.0 (released October 1, 2026). For a comprehensive feature breakdown, see: Rust 1.99 Release Deep Dive.

Following our previous coverage of extern "C" variadics support and raw pointer layout inspection APIs, this issue highlights three key updates across Cargo and build toolchains:

ChangeRule AdjustmentPractical Engineering Impact
Workspace Default Features Override (RFC 3945)Under the 2024 Edition, sub-crates can explicitly declare default-features = false to override workspace-inherited dependency configurations.Solves dependency pollution in multi-crate workspaces; lightweight client crates are no longer forced to pull in heavy default features configured for backend services.
Incremental Compilation Disabled in CI by Default (Cargo #17220)When Cargo detects the CI environment variable, it automatically disables incremental mode.Eliminates disk I/O waste and cache thrashing caused by stateless CI containers generating and discarding temporary incremental build artifacts.
Built-in debug Profile Preset (Cargo #17214)Introduces an independent debug profile equivalent to dev, laying the groundwork to decouple their optimization flags in future releases.Allows teams to tailor compiler optimization and debug symbol generation separately for dedicated debugging sessions versus rapid local iterative development.

Regarding platform support: effective October 2, the Rust project demoted i686-pc-windows-msvc and i686-pc-windows-gnu to std-only tier. Official CI will no longer validate the full compiler toolchain on these targets. Teams maintaining legacy desktop client applications should migrate their build pipelines to 64-bit environments.

📝 Deep Dives

mold 3.0.0 Released: Complete Rewrite in Rust Brings Memory Safety and Streamlined Builds

What Happened: High-performance linker creator Rui Ueyama released mold 3.0.0 on October 5. Beginning with this release, mold has completely replaced its C++ codebase with Rust, making version 2.42.1 the final release of the C++ lineage. The build system transitions in lockstep from CMake to Cargo, requiring Rust 1.95 or newer, with test suites integrated into cargo test.

Why It Matters: Validated through full builds across the Gentoo package repository, mold 3.0.0 achieves complete performance parity with C++ 2.42.1—with zero performance regression. In terms of memory safety boundaries, legacy C++ mold was vulnerable to out-of-bounds reads and segmentation faults when parsing malformed input binaries. The Rust rewrite enforces strict bounds checking throughout; encountering corrupt object files now triggers a controlled panic accompanied by detailed diagnostic logs. Furthermore, the release eliminates the runtime dependency on oneTBB and statically links mimalloc 3.5.3, clearing the path for mold to be adopted as the default system linker across mainstream Linux distributions.

Who It Affects: Build systems engineers managing large monolithic C/C++/Rust codebases, Linux distribution toolchain packagers, and CI teams sensitive to linking bottlenecks.

Read-Heavy Concurrency in Practice: Why RwLock Loses to Lock-Free Epoch-Based Memory Reclamation

What Happened: Systems engineer Pranitha reviewed benchmark results comparing a single writer thread against 50 concurrent Tokio readers continuously traversing a 16,384-element slice. The results showed that parking_lot::RwLock fell significantly behind a lock-free solution backed by crossbeam-epoch in both read throughput and P99 latency—and the latency penalty persisted even after stopping the writer thread entirely.

Why It Matters: To track concurrent readers, RwLock must execute CAS operations or atomic decrements on an AtomicUsize on every acquire and release. Under a sustained throughput of 16,000 slice scans per second with element-level locking, a single second produces 524 million cross-core atomic writes. CPU cores thrash continuously over the same cache line (Cache Line Bouncing), congesting the system interconnect bus. With crossbeam-epoch, readers invoke pin() once on the global epoch before beginning traversal, allowing subsequent reads across all 16,384 elements to execute as pure load(Ordering::Acquire) atomic pointer dereferences, completely eliminating cache line contention between cores. Compared to double-buffered solutions like left-right, epoch-based reclamation achieves identical microsecond latency while saving up to 4 GB of memory duplication overhead.

Who It Affects: Performance engineers building high-frequency trading gateways, in-memory cache engines, and high-concurrency real-time signaling routers.

Const Generics Overhaul: Generic Const Arguments (GCA) Architecture Surfaces

What Happened: On October 2, the Rust Const Generics working group published an in-depth design post formally announcing the retirement of the stalled generic_const_exprs prototype. The team is pivoting entirely to the Generic Const Arguments (GCA) feature family, which includes sub-features such as gca_adts and gca_const_items.

Why It Matters: Stable Rust currently only permits standalone const parameters (such as { N }) or basic literal arithmetic (such as { 1 + 1 }), lacking support for expressions like [u8; T::NUM_BYTES] or type-dependent const struct instantiations. As a consequence, linear algebra and hardware driver crates have had to rely on cumbersome macros like typenum to generate mountains of boilerplate. The original prototype stalled because type checking and const evaluation became entangled in circular dependencies. The GCA architecture establishes strict evaluation boundaries: early phases require the gca!(...) macro to delimit expression scope, incrementally introducing struct constructors, tuple destructuring, and associated const items. By avoiding the unchecked complexity of arbitrary mathematical expressions, GCA charts a verifiable engineering path toward handling complex const expressions in the type system.

Who It Affects: Maintainers of scientific computing libraries, matrix crates (e.g., nalgebra, burn), embedded hardware register mapping crates, and cryptographic implementations.

Bevy 0.20 Released: Solari Real-Time Path Tracing Takes Big Step Toward Production

What Happened: On October 8, the Rust game engine Bevy shipped version 0.20, consolidating 817 merged pull requests from 227 contributors. Key highlights include an architectural overhaul of the Solari real-time path tracing pipeline—adding support for macOS Metal and DLSS-RR 4.5—full adoption of the WESL shader standard, streamlined BSN scene declaration syntax, chain_weak soft system ordering, and Per-Column Change Ticks in the ECS.

Why It Matters: The Solari renderer reduces CPU submission overhead by maintaining a retained world scene graph and makes latency-sensitive ReSTIR spatiotemporal resampling optional, balancing high framerates with stable dynamic shadows. In the ECS core, per-column change tracking enables systems to query logical change ticks on specific component columns rather than scanning entire archetypes, drastically reducing dirty-checking overhead under multi-threaded scheduling and demonstrating the production viability of pure Rust for complex interactive graphics.

Who It Affects: Game engine developers, Rust computer graphics researchers, and architects designing 3D visualization or high-performance desktop UI pipelines.

🔥 Community Discourse

Deno Team Joins Cloudflare: The Commercial Endgame for Independent Runtimes

On October 9, Ryan Dahl announced that the entire Deno team has joined Cloudflare, and the independent Deno runtime will enter a one-year maintenance phase before official development winds down. The news triggered intense discussions across r/rust (428 points, 135 comments).

  • The Sustainability Realists: Several developers highlighted that Deno was one of the most prominent open-source Rust projects in the server-side Web tooling ecosystem. Abandoning both the standalone runtime and self-hosted cloud platform (Deno Deploy) underscores that language-level performance and developer experience alone cannot overcome the distribution and infrastructure moats built by cloud platform giants.
  • The Core Value Advocates: Conversely, others noted that Deno’s core technical assets will endure. The foundational rusty_v8 binding library will continue to be maintained and deeply integrated into Cloudflare’s workerd, demonstrating that lightweight Rust isolation sandboxes hold critical value for distributed edge computing—and that merging with a hyperscaler amplifies rather than diminishes those systems-level strengths.

The curl ARM64 Crash Puzzle: Optimization Flaw or Valgrind False Positive?

curl author Daniel Stenberg announced on Mastodon that optimization anomalies in GCC 15/16 and Rust on ARM64 platforms triggered crash warnings in curl, opening GitHub Issue #23237 (52 points and 12 comments on Hacker News, alongside 22 technical analyses on GitHub).

  • The Pragmatic Workaround: Facing a Valgrind error reporting “conditional jump depends on uninitialised value(s)” when compiling quiche (Cloudflare’s Rust QUIC library) under --release, the curl maintainers opted to force opt-level=0 for ARM64 builds in CI to unblock deployment pipelines.
  • The Compiler Mechanics Insight: Rust compiler engineers diving into the generated assembly revealed that rustc emits ARM64 csel conditional select instructions when evaluating Option<u64> comparisons. When the value is None, the register reads uninitialized payload memory, but the conditional selection guarantees the evaluated branch result is consistently zero, making the machine code safe and hardware-compliant. The root debate centers on systems engineering policy: when low-level binary semantics fully adhere to hardware specs but trigger static analysis blind spots, should projects compromise compiler optimizations or demand upstream analysis tools improve pattern matching?

Career Crossroads: The Realities of Contracting as a Rust Developer

In the popular r/rust thread “Rust Has Become a Career Dead End for Me — What Should I Do?” (427 points, 215 comments), an engineer who transitioned to full-time Rust in 2023 shared their struggle of facing over six months of unemployment in a regional software contracting market with scarce Rust job openings.

  • Ecosystem Hype vs. Hiring Realities: Discussions emphasized that high developer satisfaction in community surveys does not correlate directly with headcount demand. Traditional enterprise projects prioritize talent pool availability and rapid delivery; Java, Go, and C# command far deeper candidate reserves. In contracting markets, Rust’s steep learning curve and ownership mental overhead are often perceived as unjustifiable costs.
  • Strategic Career Positioning: Senior engineers advised against treating a single programming language as one’s sole professional identity. Rust functions best as cognitive leverage for mastering systems architecture, memory safety models, and high-concurrency synchronization. Candidates should maintain fluency in mainstream enterprise languages for baseline market resilience while targeting infrastructure, quantitative finance, and low-level systems engineering teams where Rust’s distinct advantages command a premium.

🔭 What to Watch Next Week

  • Linker Ecosystem Packaging: Following the release of mold 3.0.0, track packaging updates and compile benchmarks across official Gentoo and Arch Linux repositories;
  • Const Generics RFC Progress: Monitor upcoming proposals from the Rust language team refining macroless syntax and type inference for the Generic Const Arguments (GCA) initiative.