Mehdi Akiki

Rust, from symptom to implementation

Rust Systems Atlas

I am building one connected map of Rust: the compiler representations, Cargo decisions, runtime behavior, memory rules, target boundaries, release changes, and failures that make these details matter in real code.

This is not another language introduction and it is not a copy of the standard library documentation. Each page should answer one difficult question with a source trail, a runnable experiment, or another piece of evidence that a reader can challenge.

67

long-form articles

Each article sits in one map, listed in the article directory below.

694

failure case pages

Symptom-first cases in the Rust Failure Atlas, grouped by failure family.

694

cases with a failing and a repaired fixture

A fixture run shows that the failure reproduces and the repair passes. It does not check the explanation, and performance claims stay conditional.

Seven maps, one system

A failure rarely respects one documentation category. An async Send error can begin in a type, become stored future state, meet a runtime requirement, and surface as a trait diagnostic. The atlas keeps these paths visible.

Failures

Failure Atlas

Symptom-first investigations for failures that depend on timing, target, profile, version, feature graph, linker, or unsafe invariants.

709 entries available in this map

The cases above are from the part of the Failure Atlas that sits below the application layer. Every failure case is listed in the Atlas linked above; related articles are in the article directory below.

Compiler

Compiler and Tooling Atlas

Source-to-binary maps through parsing, expansion, resolution, HIR, THIR, MIR, trait solving, borrow checking, code generation, diagnostics, and rust-analyzer.

Build

Cargo, Build, and Linking Atlas

Feature resolution, MSRV, build scripts, fingerprints, incremental compilation, proc-macro builds, native dependencies, code generation, and linkers.

Async

Async and Concurrency Atlas

Future layout, Send boundaries, cancellation, wakeups, scheduling, cooperative budgets, atomics, backpressure, task ownership, and shutdown.

Memory

Types, Memory, and Unsafe Atlas

Layout, variance, drop checking, pinning, provenance, aliasing, initialization, destruction, trait objects, and the proof obligations behind safe APIs.

Targets

FFI and Target Atlas

ABI contracts, native libraries, WebAssembly, musl, operating systems, architectures, embedded targets, cross-compilation, and host capabilities.

Releases

Release and Compatibility Ledger

Important stable changes translated into affected code, compatibility boundaries, migration checks, and behavior compared across toolchain versions.

Complete article directory

Every published Rust investigation

Long-form Rust articles, grouped by map. The symptom-first failure cases have their own directory in the Rust Failure Atlas.

Failures (15)

Compiler (13)

Build (4)

Async (10)

Memory (25)

Claim ledger

Every strong statement needs a way to lose

I separate deterministic claims from source-level constraints and machine-dependent performance hypotheses. Each record names the observation that would prove my explanation incomplete. This prevents an attractive benchmark number from becoming a universal Rust rule.

Executable check: 3API or method bound: 1Measurement required: 3
  1. RCL-001 · Executable check

    Changing reader chunk size must not change the ordered match IDs or absolute offsets.

    Falsifier: Any read limit produces a different match tuple from one-shot search.

    Evidence: chunk_partition_does_not_change_matches

    Read the article →
  2. RCL-002 · API or method bound

    Compact recognition state does not remove bytes needed by a streaming output contract.

    Falsifier: A replacement or delayed-match API can release unresolved bytes and still reproduce one-shot output for every split.

    Evidence: Longest-match buffer bound plus split-point replacement oracle.

    Read the article →
  3. RCL-003 · Executable check

    Standard, leftmost-first, and leftmost-longest select different valid results for one fixed input.

    Falsifier: The pinned crate returns an identical tuple for all three configured match kinds.

    Evidence: match_kinds_choose_different_documented_results

    Read the article →
  4. RCL-004 · Executable check

    Automaton representation is a real observable build choice, not a synonym for Aho-Corasick.

    Falsifier: Requesting a DFA does not produce a matcher reporting DFA kind.

    Evidence: requested_dfa_kind_is_observable

    Read the article →
  5. RCL-005 · Measurement required

    Linear input complexity does not imply constant per-byte time as the pattern corpus grows.

    Falsifier: Nested pattern sets show invariant build cost, memory, selected strategy, and scan distributions across the declared workload matrix.

    Evidence: Nested corpus benchmark with kind, memory, output count, and cache-sensitive inputs.

    Read the article →
  6. RCL-006 · Measurement required

    Prefilter value changes with candidate density while logical output remains unchanged.

    Falsifier: Enabled and disabled variants have indistinguishable distributions across both rare- and frequent-candidate corpora, or emit different outputs.

    Evidence: prefilter_toggle_preserves_logical_output plus paired corpus benchmark.

    Read the article →
  7. RCL-007 · Measurement required

    Pattern shape and haystack byte distribution predict more than pattern count alone.

    Falsifier: Controlled corpora with equal counts but different rare bytes, prefixes, lengths, and alphabets show no material strategy or performance change.

    Evidence: Five-corpus pattern-shape matrix with corpus hashes.

    Read the article →

Run the executable claim checks

npm run content:verify-rust-claimsInspect the pinned fixtures →

Evidence

Explanations are connected to evidence

Failure case pages ship fixtures pinned to a toolchain, and the claim ledger above ties each executable claim to a named test. Depending on the case, the evidence is compiler or runtime output, a symbol table, an object header, a link map, or an AddressSanitizer report. A fixture shows that the failure reproduces and that the repair passes. Whether the explanation is right is still an argument, and each case page cites the primary sources it rests on.

  1. 01

    Observe

  2. 02

    Separate

  3. 03

    Reproduce

  4. 04

    Prevent

What each failure case records

Every case page in the Failure Atlas records the same fields, so two cases can be compared directly.

  • observed symptom
  • failure family
  • likely cause and first discriminating check
  • Rust versions
  • targets and profiles
  • failing and repaired fixture, with the toolchain it ran on
  • review date
  • primary sources

Source-level experience

The atlas grows from work, experiments, and upstream reading

I still write and review code directly, including my Rust, Deno, and rust-analyzer open source contributions. The purpose of this atlas is to turn that practice into explanations another engineer can inspect and use.