Wild version 0.11.0 released
Wild linker 0.11.0 enables Wasm linking by default and adds ports.
Extract
Lots of porting work has happened this release. The Wasm feature is now enabled by default, so Wild can be used to link Wasm with the caveat that debug info isn't yet supported. Support for GNU linker scripts is greatly enhanced. Wild now supports enough of the linker script syntax that it can link Linux kernel modules and is close to being able to link the Linux kernel itself. The Mac port has made significant progress. The feature isn't yet to the point where we're prepared to enable it by default, but Wild is able to link itself on Mac and at least one of the maintainers is now using Wild as their default linker for Rust on Mac. We've also fixed some performance issues that were affecting various filesystems and made a few general performance improvements. We also got a bit slower due to implementing proper ELF COMDAT support. We now cap the number of threads to at most 32 unless overridden by --threads. This avoids bad performance that occurs with larger numbers of threads due to contention on a Linux per-inode mutex. Our benchmarks have been expanded to include a wider range of scenarios such as different filesystems and whether the output file already exists. Build requirements Minimum rust version for building Wild is now 1.99.0 🚀 Features Implement FILEHDR and PHDRS commands in a linker script (#2314) Implement setting section attributes in linker scripts (#2342) Support redefining linker script and defsym symbols (#2350) Support compound assignment operators in linker scripts (#2384) Implement ADRP+ADD to NOP+ADR relaxation for AArch64 (#2319) Parse ASSERT in linker script expressions (#2402) Support alignment up to 2^21 (#2409) Support aligning a given expression in linker scripts (#2426) Lookup object symbol values in linker script location counters (#2418) Fetch symbols defined in a linker script in a location counter (#2475) Support LDEMULATION environment variable (#2497) (args) Implement --image-base flag (#2513) (args) Implement -z force-ibt and -z cet-report flags (#2529) Support --[no-]warn-execstack, --warn-execstack-objects, and --[no-]error-execstack (#2559) (x86_64) Support SIZE32 and SIZE64 relocations (#2553) Add --no-keep-memory (#2584) Support emitting multiple error messages (#2599) Implement --orphan-handling (#2566) Add support for --only-keep-debug (#2472) Support --enable-linker-version and --disable-linker-version (#2645) (aarch64) Support build attributes in relocatable links (#2622) Emit eager PLT stubs for dynamic calls …