mrkeyoor.com_
Sat 19 Sept 17:58 UTC
Dev Toolsevaluationupdated 19 Sept 2026

mold review

mold is a linker for Unix toolchains, the program that combines compiled object files into an executable or shared library. It aims to shorten the link step in C, C++, Rust, and other compiled-language builds while accepting the flags developers already pass to GNU ld or LLVM lld.

Verdict

Our mold run built in 347 seconds and passed all 36 tests, enough evidence to recommend a per-project trial for Linux developers losing time to the link step. Keep the rollout scoped until your own binaries, debug tools, LTO settings, and linker scripts pass. The Rust rewrite on main is promising, but teams restricted to releases are still choosing the C++ v2.42.1 line.

We ran it

Lab card: what happened when we ran moldScreenshot of mold (github.com/rui314/mold)
Install✓ · 40s79 packages
Build✓ · 347s
Tests✓ · 116s36 passed · 0 failed of 36 (cargo test)
Repo738 files~63,238 lines of source · 2.4 MB · 5 CI workflows · tests dir

Answers from our run

Does mold build from source?

Dependencies installed in 40 seconds (79 packages), and the build succeeded in 347 seconds. We cloned commit 54b68f6 into a clean Debian container with 3 CPUs and no project-specific setup.

Do mold's tests pass?

Yes: 36 of 36 passed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use mold?

Kernel, firmware, and bare-metal teams that depend on full GNU linker-script behavior: the v2.42.1 notes say missing script features still block those targets.

What are the alternatives to mold?

LLVM lld, wild, GNU ld. Our mold run built in 347 seconds and passed all 36 tests, enough evidence to recommend a per-project trial for Linux developers losing time to the link step.

Setup4/540-second install; source build took 347 seconds
Docs5/5Clear build, compiler, Cargo, verification, and fallback instructions
Community5/517,153 stars and code pushed on September 19, 2026
Maturity4/5Stable C++ releases; the tested Rust rewrite is not v3.0 yet

Who it’s for

C, C++, and Rust developers whose edit-build-test loop spends noticeable time linking.
Build engineers who can trial a different linker on one project before changing machine-wide defaults.
Linux teams that want prebuilt binaries or package-manager installation instead of compiling the linker.
Toolchain maintainers who need ELF support across x86, ARM, RISC-V, PowerPC, s390x, LoongArch, SPARC64, m68k, or SH-4.

Who it’s NOT for

Kernel, firmware, and bare-metal teams that depend on full GNU linker-script behavior: the v2.42.1 notes say missing script features still block those targets.
Windows developers expecting an upstream native build: the README describes a Unix linker, and open issue 1658 asks why no Windows build process is present.
Teams that require incremental linking today: the latest release says the maintainers are exploring designs, not shipping the feature.
Organizations that only deploy released implementations but want the Rust code we tested: commit 54b68f6 is on the Rust rewrite, while the latest release, v2.42.1, is still C++.

Setup reality

Our sandbox install succeeded in 40 seconds and installed 79 packages. The release build succeeded in 347 seconds, then all 36 cargo tests passed in 116 seconds. We ran commit 54b68f6 with 3 CPUs and 12 GB of RAM.

Building from source needs the stable Rust toolchain, Git, and a C compiler such as GCC or Clang. Prebuilt Linux binaries are attached to releases, and distribution packages may avoid the 347-second source build. No credentials or external service are needed.

Adoption still touches build configuration. Clang and GCC 12.1 or newer can use -fuse-ld=mold; older GCC needs a -B path, and Rust projects need Cargo linker settings. The reviewed Rust commit is newer than the latest C++ release.

A one-project switch is safer than replacing /usr/bin/ld

Clang and GCC 12.1 or newer can select mold with -fuse-ld=mold. That single flag is the sensible way to evaluate it: rebuild one real project, run that project's tests, inspect the resulting binaries, and keep the old linker available. Rust needs a small .cargo/config.toml entry, usually with Clang as the linker driver. Older GCC uses a -B search path because its -fuse-ld handling does not recognize mold by name.

The broader system switch asks a harder question. An application build may use ordinary ELF features while a kernel module, firmware image, or installer relies on a detailed linker script. Open issue 1513 describes VirtualBox installation failing after mold was made Ubuntu's default linker. That report does not prove every failure has the same cause. It does show why a successful 36-test source run cannot certify every program installed on your machine.

What happened when we ran it

Our sandbox installed 79 packages in 40 seconds, then built commit 54b68f6 in 347 seconds. Cargo test finished in 116 seconds with 36 passed and 0 failed. We used a fresh unprivileged container with 3 CPUs and 12 GB of RAM. That is a clean result: the checked-out source installed, compiled, and passed every test the harness ran.

The repository itself held 738 files, about 63,238 lines of source, and occupied 2.4 MB before the install. Five CI workflow files and a tests directory were present; a Dockerfile was not. That layout fits a system executable that users normally obtain as a distro package or release binary. If you compile it yourself, the README calls for stable Rust, Git, and either GCC or Clang. No account, token, database, or network service is part of normal use.

The Rust code we tested is ahead of the v2.42.1 release

commit 54b68f6, dated September 19, 2026, belongs to the Rust implementation on the main branch. The latest published release is v2.42.1 from September 11, and its notes describe that version as likely the final C++ release unless another patch is needed. They say the Rust rewrite is intended for mold 3.0. A source checkout and a release download therefore give you different implementations today.

That distinction matters more than the language preference. Our 36 passing tests support the exact Rust commit we ran, while years of released use apply mainly to the C++ line. A conservative team can install v2.42.1 and wait for the 3.0 release. A team evaluating main should pin commit 54b68f6, store the old linker path, and avoid treating a moving branch as a released package.

The speed case is credible, but measure your own link step

The project's August 2026 benchmark reports mold at a 4.9x median advantage over LLVM lld and 1.9x over wild across its chosen programs and machines. Those are maintainer measurements, not results from our sandbox. Our run measured installation, compilation, and tests only. We did not link Chromium, Blender, or another large application, so we have no independent speed figure to attach to your build.

Linkers affect only the final stage after source files become object files. If compilation dominates a 10-minute build, cutting a small link step will barely move the total. Mold is most appealing when repeated debug builds pause at a large final link. Before changing a team default, capture link-only time, total build time, output size, debugger behavior, and one clean rebuild with the existing linker. That comparison tells you whether the switch fixes the delay people actually feel.

Linker scripts still separate applications from system software

The v2.42.1 release notes say mold 3.x needs missing linker-script features before distributions can consider it for /usr/bin/ld, especially for kernels and firmware. Open issue 243 gives a concrete example: a SECTIONS script used by kvm-unit-tests was rejected as an unknown token. Open issue 1055 records the same boundary for a custom runtime. These are specific compatibility gaps, not vague worries about a young tool.

Incremental linking is also absent. The release notes say the maintainers are exploring designs and would add it if they find a simple approach. That wording is an aspiration, not a delivery promise. For ordinary user-space ELF programs, the supported drop-in path is already useful. For bare-metal layouts, kernel work, or build systems built around GNU ld scripts, test the exact script before spending time on speed comparisons.

Current activity is strong while compatibility work remains open

GitHub showed 17,153 stars, 167 open issues, and 17 open pull requests on September 19, 2026. The repository was pushed that same day, and v2.42.1 had shipped 8 days earlier. Those figures point to active maintenance and an engaged user base. They also describe a project in the middle of an implementation change, with compatibility reports spanning debuggers, LTO, linker scripts, and particular large builds.

mold is easy to recommend as an experiment because the escape route is simple: remove the linker flag and rebuild. Our 40-second install and fully passing suite lower the cost of that experiment. The case for a machine-wide replacement is weaker until your complete software set has passed. Start with the slowest application link you own, verify the binary and its debug path, and let that result decide whether mold goes any farther.

Alternatives

ProjectWhat it isPick it when
LLVM lld gh↗LLVM's fast linker, shipped inside a broad compiler and toolchain project.pick this instead when LLVM integration, Mach-O or COFF support, or an established cross-platform toolchain matters more than mold's ELF focus.
wildA Rust linker focused on fast iterative development on Linux.pick this instead when you want another Rust-native linker and your supported targets fit wild's narrower compatibility envelope.
GNU ldThe widely installed GNU linker with broad script and platform compatibility.pick this instead when compatibility with existing linker scripts and system defaults is worth more than reducing link time.

What people are saying

  1. [github-trending] rui314/mold
  2. [lobsters] Benchmarking Wild vs Mold
  3. [lobsters] mold: A Massively Parallel Linker

Sources

  1. mold repository
  2. mold README
  3. mold 2.42.1 release notes
  4. Windows build question issue 1658
  5. SECTIONS linker script issue 243
  6. VirtualBox default-linker issue 1513

More dev tools reviews

blockbench · python-patterns · opcode · mdBook · lore · OhMyKeymint · the whole board →