GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - wild-linker/wild: A very fast linker for Linux and WebAssembly

BranchesTags
Open more actions menu

Latest commit

 

History

2,866 Commits
2,866 Commits

Folders and files

NameName
Last commit message
Last commit date
.cargo
.cargo
 
 
.github
.github
 
 
.helix
.helix
 
 
.vscode
.vscode
 
 
.zed
.zed
 
 
LICENSES
LICENSES
 
 
benchmarks
benchmarks
 
 
docker
docker
 
 
external_test_suites
external_test_suites
 
 
fakes-debug
fakes-debug
 
 
fakes
fakes
 
 
images
images
 
 
libwild
libwild
 
 
linker-diff
linker-diff
 
 
linker-layout
linker-layout
 
 
linker-trace
linker-trace
 
 
linker-utils
linker-utils
 
 
nix
nix
 
 
wild
wild
 
 
.dockerignore
.dockerignore
 
 
.git-blame-ignore-revs
.git-blame-ignore-revs
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
.typos.toml
.typos.toml
 
 
.yamlfmt
.yamlfmt
 
 
BENCHMARKING.md
BENCHMARKING.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Cargo.lock
Cargo.lock
 
 
Cargo.toml
Cargo.toml
 
 
DESIGN.md
DESIGN.md
 
 
FAQ.md
FAQ.md
 
 
GOVERNANCE.md
GOVERNANCE.md
 
 
LICENSE-APACHE
LICENSE-APACHE
 
 
LICENSE-MIT
LICENSE-MIT
 
 
LINKER_SCRIPT_SUPPORT.md
LINKER_SCRIPT_SUPPORT.md
 
 
PACKAGING.md
PACKAGING.md
 
 
README.md
README.md
 
 
RELEASING.md
RELEASING.md
 
 
REUSE.toml
REUSE.toml
 
 
USAGE.md
USAGE.md
 
 
cackle.toml
cackle.toml
 
 
cliff.toml
cliff.toml
 
 
default.nix
default.nix
 
 
deny.toml
deny.toml
 
 
flake.lock
flake.lock
 
 
flake.nix
flake.nix
 
 
ld
ld
 
 
rust-toolchain.toml
rust-toolchain.toml
 
 
rustfmt.toml
rustfmt.toml
 
 
taplo.toml
taplo.toml
 
 
test-config-ci.toml
test-config-ci.toml
 
 
test-config.toml.sample
test-config.toml.sample
 
 

Repository files navigation

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

  • Usage
  • Frequently asked questions
  • Linker script support

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:

  • Ryzen 9 9955HX (16 core, 32 thread) - ELF
  • Ryzen 9 9955HX (16 core, 32 thread) - Wasm
  • Raspberry Pi 5 - ELF
  • Mac Mini - Mach-O

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

Benchmark of linking chrome-crel

Or linking a Wasm build of spidermonkey on the same system:

Benchmark of linking a Wasm build of spidermonkey

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)
  • WebAssembly (wasm32)

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

  • Incremental linking
  • Mach-O 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 [email protected].

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 and WebAssembly

Resources

Readme

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

4.1k stars

Watchers

23 watching

Forks

152 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.