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 — Releases · uutils/diffutils

Releases · uutils/diffutils

v0.6.0

v0.6.0 Latest
Latest
@github-actions github-actions released this 23 Oct 09:08
v0.6.0
815ed7d

Rust Diffutils 0.6.0 Release:

We are happy to announce the release of Rust Diffutils 0.6.0 - a release focused on output compatibility, cmp on large files and project infrastructure.

On the diff side, three output formats moved closer to GNU: unified and context hunks are now merged when they are separated by up to twice the context size, the context format marks every line of a change block with !, and the side-by-side (-y) gutter marker sits in the middle of the gutter. These are small differences on screen, but they are exactly what makes a generated patch differ byte for byte from the one GNU produces.

cmp got faster and more capable: verbose byte printing no longer allocates (about 2.3x faster than before on large, completely different files), and --bytes / --ignore-initial are now 64-bit everywhere, so 32-bit systems can compare files beyond 4 GiB like GNU cmp does with large file support.

Around the code, the project grew up a lot this cycle: we now run the upstream GNU diffutils test suite in CI and track its results on every pull request, we have Divan benchmarks tracked by CodSpeed, a security audit workflow, a SECURITY.md, pre-commit hooks, and a wasm32-wasip1 build in CI.

We are now at 7 passing, 22 failing, 4 skipped on the GNU test suite.


GNU Test Suite Compatibility:

Result 0.6.0 % Total 0.6.0
Pass 7 21.21%
Skip 4 12.12%
Fail 22 66.67%
Error 0 0%
Total 33

Note: this is the first release with GNU test suite tracking (#217), so there is no 0.5.0 baseline to compare against. Many of the failing tests exercise options that are not implemented yet; they give us a clear list of what to work on next. The evolution is now tracked in uutils/diffutils-tracking, refreshed twice a day.


GNU testsuite evolution


Download diffutils 0.6.0

File Platform Checksum
diffutils-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
diffutils-x86_64-apple-darwin.tar.xz Intel macOS checksum
diffutils-x86_64-pc-windows-msvc.zip x64 Windows checksum
diffutils-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
diffutils-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

Highlights:

  • diff Output Compatibility

    • Hunks separated by up to twice the context size are merged into one, like GNU (#306)
    • Context format (-c) marks every line of a change block with ! (#311)
    • Side-by-side (-y) places the gutter marker at the middle of the gutter (#277)
  • cmp Improvements

    • Verbose byte printing (-l, -b) no longer allocates: ~2.3x faster than 0.5.0 on large, fully different files (#153)
    • --bytes and --ignore-initial are now u64, lifting the 4 GiB limit on 32-bit systems (#183)
    • Checked subtraction for the verbose offset padding (#275)
  • GNU Compatibility & Robustness

    • Unknown options are reported as unrecognized option, in the same format as GNU (#179, #180)
    • Fixed a panic on a non-UTF-8 argument ending in --width=N (#250)
    • The multicall binary accepts prefixed names, so it can be installed as gdiff, uu-cmp, rust-diffutils, etc. (#231)
  • Testing & Benchmarking

    • The upstream GNU diffutils test suite runs in CI, with a PR comment showing regressions and fixes (#217, #278)
    • Divan benchmarks with continuous performance tracking on CodSpeed (#185, #189)
    • The integration tests validate patch and ed once with meaningful messages, and work with gpatch on macOS
  • Platform & Security

    • wasm32-wasip1 builds again and is now covered by CI (#215, #218)
    • Binaries are published from main (#163)
    • New SECURITY.md, COPYRIGHT file and a cargo audit workflow
  • Contributions: This release landed 92 pull requests from 13 new contributors


Call to Action:

Help us improve compatibility - Pick a failing GNU test and send a PR: github.com/uutils/diffutils
Sponsor us on GitHub to accelerate development: github.com/sponsors/uutils

What's Changed

diff

  • diff: place -y gutter marker at the middle of the gutter by @nagendramohan in #277
  • diff: merge hunks separated by up to twice the context size by @emirmrkaljevic in #306
  • Add hunk merging test for the insertion case from #268 by @emirmrkaljevic in #307
  • diff: mark every line of a change block with ! in context format by @jayhemnani9910 in #311

cmp

  • cmp: stop allocating for byte printing by @kov in #153
  • cmp: fix 32-bit usize overflow in test by @JustSoup312 in #173
  • cmp Feat: change data type for 'bytes' limit and 'ignore initial' to u64 by @GunterSchmidt in #183
  • cmp: use .map_err by @oech3 in #236
  • cmp.rs: simplify by .ok_or by @oech3 in #243
  • cmp: use checked subtraction for the verbose offset padding by @MsfPablo in #275

diffutils

  • fix: rename "Unknown option" to "unrecognized option" for diff and cmp by @Ryujiyasu in #179
  • fix: match GNU error format for unrecognized options by @Ryujiyasu in #180
  • support prefixed names by @oech3 in #231
  • diffutils: fix panic on non-UTF-8 argument ending in --width=N by @SAY-5 in #250

Testing

  • fix: create target directory in fuzz targets by @pocopepe in #219
  • tests: fix "old" names in generated patch files by @marc-hb in #224
  • tests: validate "patch" and "ed" commands once, print meaningful messages by @marc-hb in #226
  • tests: fix "gpatch --version" error message on mac by @marc-hb in #235

Performance & Benchmarks

  • feat: Divan Benchmark by @GunterSchmidt in #185
  • Add CodSpeed performance benchmarking by @codspeed[bot] in #189

Code Quality & Cleanup

  • clippy: fix warnings by @cakebaker in #259

CI & Build

  • Publish binary from main by @oech3 in #163
  • Use preinstalled rust, disable incremental build by @oech3 in #164
  • fuzzing.yml: Avoid non reusable cache generation by @oech3 in #170
  • Cargo.toml: Simplify profiles by @oech3 in #191
  • fix: follow redirects when fetching gnulib init.sh in upstream test suite by @kevinburkesegment in #202
  • *.yml: dedup env: by @oech3 in #204
  • actions: add security audit workflow by @xtqqczze in #210
  • feat: add GNU testsuite tracking workflows by @pocopepe in #217
  • ci: add .pre-commit-config.yaml by @cakebaker in #227
  • Make `compare_tes...
Read more

Contributors

  • @cakebaker
  • @sylvestre
  • @kov
  • @renovate
  • @nagendramohan
  • @Ryujiyasu
  • @xtqqczze
  • @marc-hb
  • @toggysmith
  • @pocopepe
  • @oech3
  • @codspeed
  • @emirmrkaljevic
  • @kevinburkesegment
  • @GunterSchmidt
  • @MsfPablo
  • @JustSoup312
  • @jayhemnani9910
  • @SAY-5
cakebaker, sylvestre, and 17 other contributors
Assets 16
  • diffutils-aarch64-apple-darwin.tar.xz
    sha256:19bf7ad0fbb00ce8f1f628dd70c1db05f2d5a88ecc1167226930a456a2470f10
    480 KB 2026-10-23T09:08:05Z
  • diffutils-aarch64-apple-darwin.tar.xz.sha256
    sha256:b8e046a71abf5237e52c7989d11e5b8a3e25b9e42eed4ff13b2e44be5bafa0db
    105 Bytes 2026-10-23T09:08:05Z
  • diffutils-aarch64-unknown-linux-gnu.tar.xz
    sha256:09adafbe725832c8d744017e73b9a2b9fe1ede6bcaf2dd2f459592dcc884d27e
    530 KB 2026-10-23T09:08:05Z
  • diffutils-aarch64-unknown-linux-gnu.tar.xz.sha256
    sha256:750957e10c34b46c4b7a846c0db7bb10cc6dc26a721af56904f4ad28f959f42d
    110 Bytes 2026-10-23T09:08:05Z
  • diffutils-x86_64-apple-darwin.tar.xz
    sha256:3fc55505760736bdd43d6124b7de9b1dbedc3b657bc7f2d7675194eec572da31
    564 KB 2026-10-23T09:08:05Z
  • diffutils-x86_64-apple-darwin.tar.xz.sha256
    sha256:aca0e898e61df8f13accb09507d28dafebdb1a50dc8068b5c37a885e8de8e5dd
    104 Bytes 2026-10-23T09:08:05Z
  • diffutils-x86_64-pc-windows-msvc.zip
    sha256:69063ab317b737314ac509a1db0edee4be0b75892ac098969104103d9748e413
    694 KB 2026-10-23T09:08:05Z
  • diffutils-x86_64-pc-windows-msvc.zip.sha256
    sha256:49e32ff552937bf888d884c30df54253376baead70e947a47f35118e74d93340
    104 Bytes 2026-10-23T09:08:05Z
  • diffutils-x86_64-unknown-linux-gnu.tar.xz
    sha256:a0a8fcab78954ddc75a5c9fae3af8a33924cf4a637d7f5bfde1bd1b4da1f88bb
    598 KB 2026-10-23T09:08:05Z
  • diffutils-x86_64-unknown-linux-gnu.tar.xz.sha256
    sha256:72157752157af3259baebc6017c2f535629a9a891f62c6940ccb386a4cceda5b
    109 Bytes 2026-10-23T09:08:05Z
  • Source code (zip)
    2026-10-23T08:38:44Z
  • Source code (tar.gz)
    2026-10-23T08:38:44Z
  • Loading

Uh oh!

There was an error while loading. Please reload this page.

cakebaker and mustafaelrasheid reacted with hooray emoji
All reactions
  • 🎉 2 reactions
2 people reacted

latest-commit

latest-commit Pre-release
Pre-release
@github-actions github-actions released this 07 Mar 21:05
latest-commit
bdf449e
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

commit: 82a5d8f

Assets 3
Loading

Uh oh!

There was an error while loading. Please reload this page.

All reactions

v0.5.0

v0.5.0
@github-actions github-actions released this 02 Jan 09:57
v0.5.0
c38fe5f
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Download diffutils 0.5.0

File Platform Checksum
diffutils-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
diffutils-x86_64-apple-darwin.tar.xz Intel macOS checksum
diffutils-x86_64-pc-windows-msvc.zip x64 Windows checksum
diffutils-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
diffutils-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

What's Changed

  • Update Rust crate pretty_assertions to v1.4.1 by @renovate[bot] in #85
  • Update Rust crate unicode-width to v0.1.14 by @renovate[bot] in #86
  • Update Rust crate unicode-width to 0.2.0 by @renovate[bot] in #87
  • When running the upstream test suite, fetch missing tests/init.sh (fixes #90) by @oSoMoN in #91
  • Update Rust crate tempfile to v3.13.0 by @renovate[bot] in #94
  • Update Rust crate regex to v1.11.0 by @renovate[bot] in #95
  • Add cmp utility by @kov in #88
  • Upstream test suite: correctly handle tests that are skipped (fixes #92) by @oSoMoN in #93
  • README.md: be explicit with the list of tools by @sylvestre in #99
  • cmp: print verbose diffs as we find them by @kov in #100
  • Fix clippy warnings by @cakebaker in #101
  • fix(deps): update rust crate regex to v1.11.1 by @renovate[bot] in #102
  • chore(deps): update rust crate tempfile to v3.14.0 by @renovate[bot] in #104
  • Fix "unused import" warning on Windows by @cakebaker in #105
  • ci: remove CARGO_FEATURES_OPTION by @cakebaker in #106
  • chore(deps): update codecov/codecov-action action to v5 by @renovate[bot] in #107
  • ci: make sure gpatch is actually being used for tests on MacOS by @oSoMoN in #112
  • fix(deps): update rust crate itoa to v1.0.15 by @renovate[bot] in #108
  • fix(deps): update rust crate chrono to v0.4.40 by @renovate[bot] in #109
  • chore(deps): update rust crate predicates to v3.1.3 by @renovate[bot] in #110
  • chore(deps): update rust crate tempfile to v3.17.1 by @renovate[bot] in #111
  • chore(deps): update rust crate tempfile to v3.18.0 by @renovate[bot] in #113
  • chore(deps): update rust crate tempfile to v3.19.0 by @renovate[bot] in #114
  • chore(deps): update rust crate tempfile to v3.19.1 by @renovate[bot] in #115
  • chore(deps): update rust crate assert_cmd to v2.0.17 by @renovate[bot] in #116
  • fix(deps): update rust crate chrono to v0.4.41 by @renovate[bot] in #118
  • chore(deps): update rust crate tempfile to v3.20.0 by @renovate[bot] in #119
  • Create the side-by-side option (-y) feature for the diff command (Incomplete) by @sami-daniel in #117
  • fix(deps): update rust crate unicode-width to v0.2.1 by @renovate[bot] in #122
  • clippy: fix warnings by @cakebaker in #123
  • clippy: fix warnings from unnecessary_unwrap lint by @cakebaker in #125
  • chore(deps): update rust crate tempfile to v3.21.0 by @renovate[bot] in #127
  • fix(deps): update rust crate regex to v1.11.2 by @renovate[bot] in #128
  • fix(deps): update rust crate chrono to v0.4.42 by @renovate[bot] in #129
  • chore(deps): update rust crate tempfile to v3.22.0 by @renovate[bot] in #130
  • chore(deps): update rust crate tempfile to v3.23.0 by @renovate[bot] in #131
  • cargo dist: update to a recent release by @oSoMoN in #132
  • chore(deps): update rust crate regex to v1.11.3 by @renovate[bot] in #133
  • chore(deps): update rust crate unicode-width to v0.2.2 by @renovate[bot] in #134
  • chore(deps): update rust crate regex to v1.12.1 by @renovate[bot] in #135
  • chore(deps): update rust crate regex to v1.12.2 by @renovate[bot] in #136
  • chore(deps): update rust crate assert_cmd to v2.1.0 by @renovate[bot] in #139
  • Cargo.toml sync profiles with findutils by @oech3 in #140
  • chore(deps): update rust crate assert_cmd to v2.1.1 by @renovate[bot] in #141
  • tests: fix deprecation warnings from assert_cmd by @cakebaker in #142
  • chore(deps): update actions/cache action to v5 by @renovate[bot] in #147
  • chore(deps): update rust crate itoa to v1.0.16 by @renovate[bot] in #150
  • Fix compilation for 32-bit targets by @LunarEclipse363 in #146
  • chore(deps): update rust crate tempfile to v3.24.0 by @renovate[bot] in #151
  • chore(deps): update rust crate itoa to v1.0.17 by @renovate[bot] in #154
  • cmp_fast_path test improvements by @kov in #152
  • prepare version 0.5.0 by @sylvestre in #156
  • update cargo dist conf by @sylvestre in #157
  • cargo-dist: remove duplicate info by @sylvestre in #158

New Contributors

  • @kov made their first contribution in #88
  • @sami-daniel made their first contribution in #117
  • @oech3 made their first contribution in #140
  • @LunarEclipse363 made their first contribution in #146

Full Changelog: v0.4.2...v0.5.0

Contributors

  • @cakebaker
  • @sylvestre
  • @kov
  • @renovate
  • @oSoMoN
  • @LunarEclipse363
  • @oech3
  • @sami-daniel
cakebaker, sylvestre, and 6 other contributors
Assets 16
Loading

Uh oh!

There was an error while loading. Please reload this page.

239 reacted with thumbs up emoji cakebaker, kiwijam, and mustafaelrasheid reacted with hooray emoji 239 reacted with heart emoji
All reactions
  • 👍 1 reaction
  • 🎉 3 reactions
  • ❤️ 1 reaction
4 people reacted

v0.4.2

v0.4.2
@github-actions github-actions released this 12 Sep 08:15
v0.4.2
9db1eab

Download diffutils 0.4.2

File Platform Checksum
diffutils-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
diffutils-x86_64-apple-darwin.tar.xz Intel macOS checksum
diffutils-x86_64-pc-windows-msvc.zip x64 Windows checksum
diffutils-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

What's Changed

  • CI: install GNU patch on MacOS (fixes #66) by @oSoMoN in #67
  • CI: Update 'cargo dist' to version 0.13.3 by @oSoMoN in #69
  • cargo-dist: generate more targets by @sylvestre in #74
  • Make error message consistent with GNU diff's implementation when failing to read input file(s) by @oSoMoN in #63
  • Use the instrumentation-based code coverage implementation by @oSoMoN in #70
  • Fix clippy warnings in tests by @cakebaker in #84

Dependencies

  • Update Rust crate unicode-width to 0.1.12 by @renovate in #65
  • Update Rust crate pretty_assertions to 1.4.0 by @renovate in #72
  • Update Rust crate libfuzzer-sys to 0.4.7 by @renovate in #71
  • Update Rust crate unicode-width to v0.1.13 by @renovate in #76
  • Update Rust crate regex to v1.10.5 by @renovate in #77
  • Update Rust crate predicates to v3.1.2 by @renovate in #79
  • Update Rust crate assert_cmd to v2.0.15 by @renovate in #78
  • Update Rust crate regex to v1.10.6 by @renovate in #80
  • Update Rust crate tempfile to v3.11.0 by @renovate in #81
  • Update Rust crate tempfile to v3.12.0 by @renovate in #82
  • Update Rust crate assert_cmd to v2.0.16 by @renovate in #83

Full Changelog: v0.4.1...v0.4.2

Contributors

  • @cakebaker
  • @sylvestre
  • @renovate
  • @oSoMoN
cakebaker, sylvestre, and 2 other contributors
Assets 13
Loading

Uh oh!

There was an error while loading. Please reload this page.

239 and home7ech2025 reacted with thumbs up emoji AceofSpades5757 reacted with hooray emoji 239 reacted with heart emoji
All reactions
  • 👍 2 reactions
  • 🎉 1 reaction
  • ❤️ 1 reaction
3 people reacted

v0.4.1

v0.4.1
@github-actions github-actions released this 27 Apr 11:17
v0.4.1
d92132e

Download diffutils 0.4.1

File Platform Checksum
diffutils-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
diffutils-x86_64-apple-darwin.tar.xz Intel macOS checksum
diffutils-x86_64-pc-windows-msvc.zip x64 Windows checksum
diffutils-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

What's Changed

  • Un-hardcode a test filename in an integration test (fixes #61) by @oSoMoN in #62
  • Handle long option names for the supported output styles… by @oSoMoN in #52
  • Handle directory-file and file-directory comparisons in the diff by @TanmayPatil105 in #56

Full Changelog: v0.4.0...v0.4.1

Contributors

  • @oSoMoN
  • @TanmayPatil105
oSoMoN and TanmayPatil105
Assets 13
Loading

Uh oh!

There was an error while loading. Please reload this page.

All reactions

v0.4.0

v0.4.0
@github-actions github-actions released this 21 Apr 14:24
v0.4.0
3a8eddf

Download diffutils 0.4.0

File Platform Checksum
diffutils-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
diffutils-x86_64-apple-darwin.tar.xz Intel macOS checksum
diffutils-x86_64-pc-windows-msvc.zip x64 Windows checksum
diffutils-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

What's Changed

  • Normal diff: compact ranges of lines where possible (fixes #10) by @oSoMoN in #11
  • Fix trivial typo in error message by @oSoMoN in #12
  • Match GNU diff's implementation for exit codes (fixes #17) by @oSoMoN in #18
  • Ed diff: compact ranges of lines where possible (fixes #21) by @oSoMoN in #22
  • Implement -s/--report-identical-files option (fixes #23) by @oSoMoN in #24
  • Implement -q/--brief option (fixes #19) by @oSoMoN in #20
  • clippy: fix warnings from useless_vec lint by @cakebaker in #30
  • Implement -t/--expand-tabs option (fixes #26) and --tabsize=NUM option (fixes #27) by @oSoMoN in #28
  • Implement the Default trait for Params by @oSoMoN in #36
  • Pass a Params reference to the various diff() functions, instead of a long list of arguments by @oSoMoN in #37
  • Fix the link to the Codecov badge by @oSoMoN in #44
  • Unit and integration tests for reading data from standard input by @oSoMoN in #45
  • Run clippy pedantic fixes by @sylvestre in #48
  • Disable tests on Windows that use ed by @cakebaker in #50
  • Unit test to verify that conflicting output styles result in an error by @oSoMoN in #51
  • Handle the rewrite of "-" to "/dev/stdin" in main to leave the filenames unchanged (fixes #46) by @oSoMoN in #47
  • Display modification times of input files in context and unified diff by @TanmayPatil105 in #33
  • Move test assertions in the cfg block where they belong (fixes #3) by @oSoMoN in #58

Documentation

  • README: minor grammar correction by @oSoMoN in #38

CI

  • Use the private Codecov token stored as a secret, by @oSoMoN in #55
  • CI: On Windows, use GNU's patch.exe instead of Strawberry Perl patch by @oSoMoN in #57
  • Run the upstream test suite in CI (fixes #8) by @oSoMoN in #13
  • ci: fuzzers in the Github Actions CI. by @hanbings in #29
  • Disable the fail fast (closes: #40) by @sylvestre in #41

Dependencies

  • Configure Renovate by @renovate in #1
  • fix(deps): update rust crate libfuzzer-sys to 0.4 by @renovate in #5
  • Update Rust crate chrono to 0.4.38 - autoclosed by @renovate in #54
  • Update Rust crate diff to 0.1.13 by @renovate in #4
  • Update codecov/codecov-action action to v4 by @renovate in #9
  • Update Rust crate regex to 1.10.4 by @renovate in #34
  • chore(deps): update rust crate tempfile to 3.10.1 by @renovate in #25

New Contributors

  • @renovate made their first contribution in #1
  • @oSoMoN made their first contribution in #11
  • @hanbings made their first contribution in #29
  • @sylvestre made their first contribution in #41
  • @TanmayPatil105 made their first contribution in #33

Full Changelog: v0.3.0...v0.4.0

Contributors

  • @cakebaker
  • @sylvestre
  • @renovate
  • @oSoMoN
  • @hanbings
  • @TanmayPatil105
cakebaker, sylvestre, and 4 other contributors
Assets 13
Loading

Uh oh!

There was an error while loading. Please reload this page.

All reactions
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.