[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73304":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},73304,"wild","wild-linker\u002Fwild","wild-linker","A very fast linker for Linux","",null,"Rust",3661,120,25,54,0,4,10,102,12,81.25,"Apache License 2.0",false,"main",true,[],"2026-06-12 04:01:08","# Wild linker\n\nWild is a linker with the goal of being very fast for iterative development.\n\nThe plan is to eventually make it incremental, however that isn't yet implemented. It is however\nalready pretty fast even without incremental linking.\n\n## Installation\n\n### From GitHub releases\n\nDownload a tarball from the [releases page](https:\u002F\u002Fgithub.com\u002Fwild-linker\u002Fwild\u002Freleases). Unpack\nit and copy the `wild` binary somewhere on your path.\n\n### Cargo binstall\n\nIf you have [cargo-binstall](https:\u002F\u002Fgithub.com\u002Fcargo-bins\u002Fcargo-binstall), you can install wild as\nfollows:\n\n```sh\ncargo binstall wild-linker\n```\n\n### Brew\n\n```sh\nbrew install wild-linker\u002Fwild\u002Fwild\n```\n\n### Build latest release from crates.io\n\n```sh\ncargo install --locked wild-linker\n```\n\n### Build from git head\n\nTo build and install the latest, unreleased code:\n\n```sh\ncargo install --locked --bin wild --git https:\u002F\u002Fgithub.com\u002Fwild-linker\u002Fwild.git wild-linker\n```\n\n### Nix\n\nTo use a stable Wild from Nixpkgs:\n\n```nix\nlet\n wildStdenv = pkgs.useWildLinker pkgs.stdenv;\nin\npkgs.callPackage .\u002Fpackage { stdenv = wildStdenv; }  \n```\n\nto use the latest unstable git revision of wild, see [the nix documentation](.\u002Fnix\u002Fnix.md)\n\n## Using as your default linker\n\nIf you'd like to use Wild as your default linker for building Rust code, you can put the following\nin `~\u002F.cargo\u002Fconfig.toml`.\n\nOn Linux:\n```toml\n[target.x86_64-unknown-linux-gnu]\nlinker = \"clang\"\nrustflags = [\"-Clink-arg=--ld-path=wild\"]\n```\n\nAlternatively, you can create symlink `ld.wild` pointing to `wild` and use:\n```toml\n[target.x86_64-unknown-linux-gnu]\nlinker = \"clang\"\nrustflags = [\"-Clink-arg=-fuse-ld=wild\"]\n```\nThe above steps also work for clang when building C\u002FC++ code, just add the following to your LDFLAGS\nafter adding the `ld.wild` symlink:\n```\nexport LDFLAGS=\"${LDFLAGS} -fuse-ld=wild\"\n```\n\nStarting with GCC **16.1**, use `-fuse-ld=wild`.\n\nFor older GCC releases, you can make it force use it with the [-Bprefix](https:\u002F\u002Fgcc.gnu.org\u002Fonlinedocs\u002Fgcc\u002FDirectory-Options.html#index-B) option.\nCreate a symlink `ld` pointing to `wild` and pass the directory containing it to gcc. For example you can do the following:\n\n```sh\nln -s \u002Fusr\u002Fbin\u002Fwild \u002Ftmp\u002Fld\n```\n\nAnd when compiling C\u002FC++ code pass the directory containing `ld` to your `CFLAGS`, `CXXFLAGS`, and `LDFLAGS`:\n\n```sh\nexport CFLAGS=\"${CFLAGS} -B\u002Ftmp\"\nexport CXXFLAGS=\"${CXXFLAGS} -B\u002Ftmp\"\nexport LDFLAGS=\"${LDFLAGS} -B\u002Ftmp\"\n```\n\nAfterwards you can check if wild was used for linking with [readelf](#how-can-i-verify-that-wild-was-used-to-link-a-binary)\n\nOn Illumos:\n```\n[target.x86_64-unknown-illumos]\n# Absolute path to clang - on OmniOS this is likely something like \u002Fopt\u002Fooce\u002Fbin\u002Fclang.\nlinker = \"\u002Fusr\u002Fbin\u002Fclang\"\n\nrustflags = [\n    # Will silently delegate to GNU ld or Sun ld unless the absolute path to Wild is provided.\n    \"-Clink-arg=-fuse-ld=\u002Fabsolute\u002Fpath\u002Fto\u002Fwild\"\n]\n```\n\n## Using wild in CI\n\nIf you'd like to use Wild as your linker for Rust code in CI, see\n[wild-action](https:\u002F\u002Fgithub.com\u002Fwild-linker\u002Faction).\n\n## Q&A\n\n### Why another linker?\n\nMold is already very fast, however it doesn't do incremental linking and the author has stated that\nthey don't intend to. Wild doesn't do incremental linking yet, but that is the end-goal. By writing\nWild in Rust, it's hoped that the complexity of incremental linking will be achievable.\n\n### What's working?\n\nThe following platforms \u002F architectures are currently supported:\n\n* x86-64 on Linux\n* ARM64 on Linux\n* RISC-V (riscv64gc) on Linux\n* LoongArch64 on Linux (initial support)\n\nThe following is working with the caveat that there may be bugs:\n\n* Output to statically linked, non-relocatable binaries\n* Output to statically linked, position-independent binaries (static-PIE)\n* Output to dynamically linked binaries\n* Output to shared objects (.so files)\n* Rust proc-macros, when linked with Wild work\n* Most of the top downloaded crates on crates.io have been tested with Wild and pass their tests\n* Debug info\n* GNU jobserver support\n* Partial linker script support. See the [linker script support matrix](LINKER_SCRIPT_SUPPORT.md) for details.\n\n### What isn't yet supported?\n\nHere are some of the larger things that aren't yet done, roughly sorted by current priority:\n\n* Incremental linking\n* More complex linker scripts\n* Mach-O support\n* Windows support\n* Linker plugin LTO (initial support is behind `--features=plugins`).\n\n### How can I verify that Wild was used to link a binary?\n\nInstall `readelf` (available from binutils package), then run:\n\n```sh\nreadelf --string-dump .comment my-executable\n```\n\nLook for a line like:\n\n```\nLinker: Wild version 0.1.0\n```\n\nYou can probably also get away with `strings` (also available from binutils package):\n\n```sh\nstrings my-executable | grep 'Linker:'\n```\n\n### Where did the name come from?\n\nIt's somewhat of a tradition for linkers to end with the letters \"ld\". e.g. \"GNU ld, \"gold\", \"lld\",\n\"mold\". Since the end-goal is for the linker to be incremental, an \"I\" is added. Let's say the \"W\"\nstands for \"Wild\", since recursive acronyms are popular in open-source projects.\n\n## Benchmarks\n\nThe goal of Wild is to eventually be very fast via incremental linking. However, we also want to be\nas fast as we can be for non-incremental linking and for the initial link when incremental linking\nis enabled.\n\nAll benchmarks are run with output to a tmpfs. See [BENCHMARKING.md](BENCHMARKING.md) for details on\nrunning benchmarks.\n\nWe run benchmarks on a few different systems:\n\n* [Ryzen 9 9955HX (16 core, 32 thread)](benchmarks\u002Fryzen-9955hx.md)\n* [2020 era Intel-based laptop with 4 cores and 8 threads](benchmarks\u002Flemp9.md)\n* [Raspberry Pi 5](benchmarks\u002Fraspberrypi.md)\n\nHere's a few highlights.\n\n### Ryzen 9955HX (16 core, 32 thread)\n\nFirst, we link the Chrome web browser (or technically, Chromium).\n\n![Benchmark of linking chrome-crel](benchmarks\u002Fimages\u002Fryzen-9955hx\u002Fchrome-crel-time.svg)\n\nMemory consumption when linking Chromium:\n\n![Benchmark of linking chrome-crel](benchmarks\u002Fimages\u002Fryzen-9955hx\u002Fchrome-crel-memory.svg)\n\nlibrustc-driver is the shared object where most of the code in the Rust compiler lives. This\nbenchmark shows the time to link it.\n\n![Benchmark of linking librustc-driver](benchmarks\u002Fimages\u002Fryzen-9955hx\u002Flibrustc-driver-time.svg)\n\nFor something much smaller, this is the time to link Wild itself. This also shows a few different\nWild versions, so you can see how the link time has been tracking over releases.\n\n![Benchmark of linking wild](benchmarks\u002Fimages\u002Fryzen-9955hx\u002Fwild-time.svg)\n\n### Raspberry Pi 5\n\nHere's linking rust-analyzer on a Raspberry Pi 5.\n\n![Time to link rust-analyzer-no-debug](benchmarks\u002Fimages\u002Fraspberrypi\u002Frust-analyzer-no-debug-time.svg)\n\n## Linking Rust code\n\nThe following is a `cargo test` command-line that can be used to build and test a crate using Wild.\nThis has been run successfully on a few popular crates (e.g. ripgrep, serde, tokio, rand, bitflags).\nIt assumes that the \"wild\" binary is on your path. It also depends on the Clang compiler being\ninstalled, since GCC doesn't allow using an arbitrary linker.\n\n```sh\nRUSTFLAGS=\"-Clinker=clang -Clink-args=--ld-path=wild\" cargo test\n```\n\nAlternatively, with `ld.wild` symlink pointing at `wild`:\n```sh\nRUSTFLAGS=\"-Clinker=clang -Clink-args=-fuse-ld=wild\" cargo test\n```\n\n## Contributing\n\nFor more information on contributing to `wild` see [CONTRIBUTING.md](CONTRIBUTING.md).\n\nFor a high-level overview of Wild's design, see [DESIGN.md](DESIGN.md).\n\n## Chat server\n\nWe have a Zulip server for Wild-related chat. You can join\n[here](https:\u002F\u002Fwild.zulipchat.com\u002Fjoin\u002Fbbopdeg6howwjpaiyowngyde\u002F).\n\n## Further reading\n\nMany of the posts on [David's blog](https:\u002F\u002Fdavidlattimore.github.io\u002F) are about various aspects of\nthe Wild linker.\n\n## Sponsorship\n\nIf you'd like to [sponsor this work](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdavidlattimore), that would be very\nmuch appreciated. The more sponsorship I get the longer I can continue to work on this project full\ntime.\n\n# Code of Conduct\n\nThe Wild project adheres to the [Rust code of\nconduct](https:\u002F\u002Frust-lang.org\u002Fpolicies\u002Fcode-of-conduct\u002F). If you have any moderation concerns or\nqueries, please email wild-mod@googlegroups.com.\n\n## License\n\nLicensed under either of [Apache License, Version 2.0](LICENSE-APACHE) or [MIT license](LICENSE-MIT)\nat your option.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in\nWild by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any\nadditional terms or conditions.\n","Wild 是一个旨在为 Linux 系统提供极快速链接过程的链接器。该项目采用 Rust 语言编写，其核心功能在于显著加速迭代开发中的链接步骤，尽管目前尚未实现增量链接，但已展现出优异的速度表现。适用于需要频繁编译和链接的软件开发场景，特别是对性能敏感的应用程序构建过程。此外，Wild 支持多种安装方式，并可配置为默认链接器以进一步简化使用流程，无论是针对 Rust 项目还是 C\u002FC++ 代码的构建都能良好兼容。",2,"2026-06-11 03:44:56","high_star"]