Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
- name: Extract release notes
shell: bash
run: |
awk "/# ${GITHUB_REF_NAME}/{flag=1; next} /^$/{flag=0} flag" CHANGELOG.md >REL.md
awk "/## ${GITHUB_REF_NAME}/{flag=1; next} /^## / && flag{exit} flag" CHANGELOG.md >REL.md

- name: Build stage1
run: cargo build --release
Expand Down
134 changes: 129 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,128 @@
# 0.6.0
## 0.7.0

### 🚀 Features

- Add handling of the .symver asm directives (#994)
- Allow absolute-value symbol to be used as an entry point
- Allow setting entry point for shared objects
- Reintroduce handling of tail-merged strings (#1117)
- Implement --retain-symbols-file (#1262)
- Allow mixing of @file and regular arguments (#1148)
- Support `VERSION` command in linker script
- Ignore '-no-fatal-warnings' option (#1192)
- Increase maximal supported alignment to 2^16 (#1190)
- Include git commit in linker version (#1203)
- Add support for .note.stapsdt sections (#1202)
- Check for overflow on 32bit relocations (#1175)
- Support tokens enclosed in double quotes in linker scripts
- Support flag --no-mmap-output-file (#1215)

### ⚡ Performance

- Limit default parallelism in string merging
- Rewrite scheduling of string merging tasks (#1240)

### 🪲 Bug Fixes

- Fill some bytes with zeros (affects --update-in-place) (#1237)
- Improve handling of non-absolute paths in save-dir (#1244)
- Pad copy relocations according to alignment (#1251)
- Don't allow hidden/protected symbols to reference shared objects (#1258)
- Use local symbol interposability when processing relocations (#1259)
- Make --strip-debug suppress earlier --strip-all (#1261)
- Fix compilation on riscv (#1100)
- Distinguish default version (@@) from non-default (@). (#1129)
- Only emit `PT_INTERP` for shared executables
- Add RISCV_ATTRIBUTE program segment (#1166)
- Don't create GOT/PLT entries for ifuncs that aren't referenced (#1185)
- Improve handling of relocations in non-alloc sections (#1196)
- Fix lookup of the riscv-fix-hi-part (#1198)
- Make --warn-unresolved-symbols match GNU ld's behaviour (#1217)
- Handle missing GNU_PROPERTY .note.gnu.property values (#1222)
- Allow dynamic symbols to refer to merged strings (#1147)

### 🏗️ Builds
- Build for `(aarch|x86_|riscv)64(|gc)-unknown-linux-(musl|gnu)` (#1151)
- Link musl releases with Wild

### 📚 Documentation

- Move nix docs to a separate file and update supported features list (#1113)
- Remove `archive_splitter.rs` reference from DESIGN.md (#1145)
- Update benchmarks, this time with bar charts
- Add instructions for using Wild with Rust on Illumos. (#1171)
- Document crate dependency version policy (#1140)
- Customise git-cliff config and document commit message format (#1267)

### 🕹️ Porting

- Initial support for Illumos (#1197)

### ⚖️ Linker Diff

- Add support for RISC-V (#920)
- Ensure all columns in tables have same width (#1247)

### 🧪 Testing

- Use wild for build in CI (#1091)
- Verify build on riscv (#1101)
- Verify minimal versions in CI (#1142)
- Ignore some diffs in risc-v tests (#1236)
- Use test-config-ci.toml in CI (#1234)
- Report sections where --update-in-place misses writes (#1239)
- Set the `TRIPLE` environment variable if needed when running mold tests
- Fix potential template-injection in CI
- Fix a couple of tests that were failing on recent opensuse (#1241)
- Don't skip running dynamically linked executables (#1248)
- Apt-get update before installing for riscv build workflow (#1255)
- Prevent race between test cases re-creating the same .so file (#1107)
- Use depfile in integrationtests (#1123)
- Use correct exit syscall number on Illumos (#1138)
- Look for dynamic linker in /bin/less in integ test (#1159)
- Unignore `symbol-versions3.sh` Mold test
- Make integration test diffing an opt-in feature (#1158)
- Integration tests: Make symbol assertions more extensible (#1169)
- Better error message when test unexpectedly pasess (#1176)
- Print clang version when clang-format fails (#1183)
- Clarify clang-format version mismatch instructions (#1193)
- Increase test binary execution timeout (#1188)
- Add a test for handling of note sections (#1211)
- Integration tests: Make skipping tests on unsupported flags more generic (#1225)
- Integration tests: Make compilation errors easier to find (#1224)
- Add basic testing for update-in-place flag (#1230)
- Limit the conditions for executing `update-nix-lockfile`

### 🔨 Refactor

- Use u32_from_slice (#1128)
- Introduce BitExtraction trait for u64 (#1157)
- Restructure code in symbol_db.rs a bit (#1252)
- Build only C++ and Rust demanglers
- Simplify get_host_architecture (#1164)
- Merge ResolutionFlags and ValueFlags (#1180)
- Move per-symbol-flags out of SymbolDb (#1186)
- Delete ValueFlags::ADDRESS (#1189)
- Replace all uses of bytemuck with zerocopy (#1210)
- Add readable Debug implementations for internal data structures (#1227)
- Macro to generate ELF newtypes and new SymbolType (#1228)

### 👥 Contributors

- davidlattimore
- marxin
- mati865
- daniel-levin
- lapla-cogito
- karolzwolak
- andrewdavidmackenzie
- el-yawd
- TechnoPorg
- jarjk
- jakobhellermann
- YamasouA

## 0.6.0

274 commits since the last release.

Expand Down Expand Up @@ -80,7 +204,7 @@
* Update .preinit_array section locations and flags #761 (marxin)
* Set DT_PREINIT_ARRAY{,SZ} if .preinit_array is present #759 (marxin)

# 0.5.0
## 0.5.0

A lot of fixes and new features since 0.4.0. We had 200 commits.

Expand Down Expand Up @@ -125,7 +249,7 @@ A lot of fixes and new features since 0.4.0. We had 200 commits.
* Added support for --undefined #528 (davidlattimore)
* More aarch64 relaxations (marxin)

# 0.4.0
## 0.4.0

A huge release with more than 250 commits since 0.3.0. We've also had several new contributors,
which is awesome.
Expand Down Expand Up @@ -163,7 +287,7 @@ which is awesome.
* We should now be publishing to crates.io, so tools like cargo-binstall should work.
* Numerous bugfixes

# 0.3.0
## 0.3.0

This release had 581 commits. Since the release notes are being added retrospectively, we just focus
on contributions from people other than davidlattimore.
Expand All @@ -178,7 +302,7 @@ on contributions from people other than davidlattimore.
* Added support .note.ABI-tag section and NOTE segment (marxin)
* Emit GNU_STACK segment (marxin)

# 0.2.0
## 0.2.0

Also added retrospectively.

Expand Down
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ resolver = "2"
[workspace.package]
repository = "https://github.com/davidlattimore/wild"
license = "MIT OR Apache-2.0"
version = "0.6.0"
version = "0.7.0"
readme = "README.md"
rust-version = "1.89"
edition = "2024"
Expand Down
10 changes: 7 additions & 3 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
# Releasing wild

* Add release notes to `CHANGELOG.md`. The header for the release must be just the version number
that is going to be released.
* Change version in `Cargo.toml`
* Run `git cliff {previous version}...`
* Copy output into `CHANGELOG.md` and edit as necessary.
* The header for the release must be just the version number that is going to be released.
* If in doubt, run the awk command from `release.yml`
* Change version in workspace `Cargo.toml`
* Search for `version = "{old version}"` for other places to update.
* Ensure that the above changes are merged into the main repository.
* Sync local repo to upstream `main`. i.e. no uncommitted changes.
* Run `cargo publish` for each package.
* Trigger the github release action by pushing a tag for the version number.

Expand Down
2 changes: 1 addition & 1 deletion cliff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ commit_parsers = [
# ignoring.
{ message = "^chore|cargo update", group = "<!-- 50 -->Ignored" },
{ message = "^fix", group = "<!-- 02 -->🪲 Bug Fixes" },
{ message = "^build", group = "<! -- 03 -->🏗️ Builds"}
{ message = "^build", group = "<! -- 03 -->🏗️ Builds"},
{ message = "^doc", group = "<!-- 04 -->📚 Documentation" },
{ message = "^port", group = "<!-- 05 -->🕹️ Porting" },
{ message = "^style", group = "<!-- 06 -->🎨 Styling" },
Expand Down
6 changes: 3 additions & 3 deletions libwild/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ itertools = { workspace = true }
jobserver = { workspace = true }
leb128 = {workspace = true}
libc = { workspace = true }
linker-layout = { path = "../linker-layout", version = "0.6.0" }
linker-trace = { path = "../linker-trace", version = "0.6.0" }
linker-utils = { path = "../linker-utils", version = "0.6.0" }
linker-layout = { path = "../linker-layout", version = "0.7.0" }
linker-trace = { path = "../linker-trace", version = "0.7.0" }
linker-utils = { path = "../linker-utils", version = "0.7.0" }
memchr = { workspace = true }
memmap2 = { workspace = true }
object = { workspace = true }
Expand Down
6 changes: 3 additions & 3 deletions linker-diff/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ rust-version.workspace = true
edition.workspace = true

[dependencies]
linker-layout = { path = "../linker-layout", version = "0.6.0" }
linker-trace = { path = "../linker-trace", version = "0.6.0" }
linker-utils = { path = "../linker-utils", version = "0.6.0" }
linker-layout = { path = "../linker-layout", version = "0.7.0" }
linker-trace = { path = "../linker-trace", version = "0.7.0" }
linker-utils = { path = "../linker-utils", version = "0.7.0" }
object = { workspace = true }
iced-x86 = { workspace = true }
symbolic-demangle = { workspace = true }
Expand Down
2 changes: 1 addition & 1 deletion wild/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ name = "wild"
path = "src/main.rs"

[dependencies]
libwild = { path = "../libwild", version = "0.6.0" }
libwild = { path = "../libwild", version = "0.7.0" }

# This is off by default, since it doesn't appear to help. However, if you're linking against musl
# libc, which has a comparatively slow allocator, then enabling this does help. To enable this,
Expand Down