{
  "id": 12177472,
  "title": "Mold 3.0.0 Released",
  "url": "https://urgent.news/2026/10/05/mold-3-0-0-released",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-05T14:24:26.000Z",
  "source": {
    "name": "Lobsters",
    "slug": "lobsters",
    "url": "https://github.com/rui314/mold/releases/tag/v3.0.0"
  },
  "original_language": "en",
  "account": "Mold 3.0.0 has been released as the latest major version of the high-speed linker. This release marks the transition from a C++ implementation to Rust, with the initial release focusing on the Rust version of mold. The previous C++ version, 2.42.1, is now deprecated. The primary objectives of mold 3.x are to resolve any remaining compatibility issues with GNU ld, particularly in linker script support, and to establish mold as a default linker in Linux distributions.\n\nMold 3.0 maintains compatibility with the previous version by accepting the same command-line options, supporting the same target architectures, and producing the same output, except for bug fixes. Linking performance remains consistent with 2.42.1. Compatibility has been verified by running the test suite across all supported targets, comparing linker output on various real-world workloads and option combinations, and building all Gentoo packages. No regressions were found during this process.\n\nOne of the key improvements brought by mold 3.0 is enhanced safety when handling corrupted input files. In the previous C++ version, mold could read memory out of bounds on such input, leading to a segmentation fault. In the new Rust version, these reads are now bounds-checked, resulting in a panic instead of a crash. Additionally, the build system has changed, with mold now being built using Cargo instead of CMake. To build mold, users should use cargo build --release and then install it using ./install-mold.sh. The CMake options have been removed, and mold no longer depends on oneTBB.\n\nSeveral bug fixes have been implemented in mold 3.0. These include resolving crashes when creating a statically-linked executable with a version script or --default-symver, addressing issues with --gc-sections removing functions given by --init and --fini, maintaining common symbols of the same name with different sizes, and ensuring --icf=safe does not fold functions exported from a shared library. The release also fixes several -r bugs, such as nondeterministic output, incorrect GOT-relative relocations, and errors caused by --defsym aliasing a symbol defined in a shared library. Furthermore, mold no longer reserves 8 GiB of virtual address space at startup, making it compatible with ulimit -v.",
  "summary": null,
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}