Skip to content

Latest commit

 

History

2,582 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Wild linker

Wild logo - drawing of rusty chain links with vines

Wild is a linker with the goal of being very fast for iterative development.

The plan is to eventually make it incremental, however that isn't yet implemented. It is however already pretty fast even without incremental linking.

Documentation quick links

Benchmarks

The goal of Wild is to eventually be very fast via incremental linking. However, we also want to be as fast as we can be for non-incremental linking and for the initial link when incremental linking is enabled. See BENCHMARKING.md for details on running benchmarks.

We run benchmarks on a few different systems:

For example, linking Chromium with CREL relocations on the Ryzen system:

Benchmark of linking chrome-crel

Feature support

The following platforms / architectures are currently supported:

  • x86-64 on Linux
  • AArch64 (ARM64) on Linux
  • RISC-V (riscv64gc) on Linux
  • LoongArch64 on Linux
  • PPC64LE on Linux (initial support)

Here are some of the bigger things we're looking ahead to:

  • Incremental linking
  • Mach-O support
  • WebAssembly support
  • Windows support

Installation

From GitHub releases

Download a tarball from the releases page. Unpack it and copy the wild binary somewhere on your path.

Cargo binstall

If you have cargo-binstall, you can install wild as follows:

cargo binstall wild-linker

Brew

brew install wild-linker/wild/wild

Build latest release from crates.io

cargo install --locked wild-linker

Build from git head

To build and install the latest, unreleased code:

cargo install --locked --bin wild --git https://github.com/wild-linker/wild.git wild-linker

Nix

To use a stable Wild from Nixpkgs:

let
 wildStdenv = pkgs.useWildLinker pkgs.stdenv;
in
pkgs.callPackage ./package { stdenv = wildStdenv; }

to use the latest unstable git revision of wild, see the nix documentation.

Contributing

For more information on contributing to Wild, see CONTRIBUTING.md.

Chat server

We have a Zulip server for Wild-related chat. You can join here.

Further reading

Many of the posts on David's blog are about various aspects of the Wild linker.

Sponsorship

If you'd like to sponsor this work, that would be very much appreciated. The more sponsorship I get the longer I can continue to work on this project full time.

Also, the Wild project is supported by the Rust Foundation's Rust Innovation Lab: https://rustfoundation.org/media/welcoming-wild-to-the-rust-innovation-lab/

Code of Conduct

The Wild project adheres to the Rust code of conduct. If you have any moderation concerns or queries, please email wild-mod@googlegroups.com.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Wild by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

A very fast linker for Linux

Resources

Code of conduct

Contributing

Stars

4.0k stars

Watchers

23 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages