PackageTrack
Sign in Get early access

diffy

Tools for finding and manipulating differences between files

0.5.1 14M downloads/mo #2545 most downloaded on crates.io bmwill/diffy

What this package is like to depend on

Last release 1 months ago

19 Jul 2026

Ships fairly regularly

a new release about every 7 months

Nearly every release is documented

notes for 11 of 12 stable releases

Nothing withdrawn

no release was ever pulled

6 years old

12 releases · first in 2020

2 releases in the last 12 months

see the full history below

Release timeline

12 releases · Jun 2020 to Jul 2026
2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 12
  1. 0.5.1 19 Jul 2026
    Release notes

    Fixed

    • #85 Merge conflict markers are now always placed on their own lines. Previously, a conflicting hunk at the end of a file without a trailing newline glued the next marker onto its last content line, producing unparseable output. This matches git merge-file --diff3 behavior.
    Open source →
  2. 0.5.0 27 Apr 2026
    Release notes

    This is a major release introducing multi-file patch support, git binary diff handling, and no_std compatibility.

    Breaking Changes

    • #73 The crate is now no_std by default. Patch::to_bytes() and PatchFormatter::write_patch_into() now require the std feature. Add features = ["std"] to restore them.
    • #46 Color support is now behind the color feature flag. Previously color was always available. Now PatchFormatter::with_color() requires enabling the color feature. The underlying implementation switched from nu-ansi-term to anstyle.

    Added

    • #55 #59 #61 #66 #74 #76 Multi-file patch support. Parse and apply unified diff and git diff output containing multiple files, including create, delete, modify, rename, and copy operations. Git binary patches (literal and delta) are supported behind the binary feature flag.
    • #80 New apply example demonstrating multi-file patch application.

    Fixed

    • #51 #82 Patch::from_str / from_bytes no longer error on trailing non-patch content after a complete hunk, matching GNU patch and git apply behavior.
    • #65 Return an error instead of panicking on non-UTF-8 escaped filenames when parsing as str.
    • #47 Fix quoted filename escaping: handle \a, \b, \f, \v, 3-digit octal escapes (\0xx\3xx), and quote all control characters.
    • #83 Fix arithmetic overflow panic when parsing hunk headers with extremely large range values.

    Changed

    • #79 Bump MSRV to 1.85 (Rust 2024 edition).
    • #48 #50 Parse error messages now show the byte offset where parsing failed.
    Open source →
  3. 0.4.2 30 Jan 2025
    Release notes

    Added

    • #37 Allow configuring the "No newline at end of file" message from being printed when formatting a patch.
    • #38 Add support for configuring suppress_blank_empty.
    Open source →
  4. 0.4.1 29 Jan 2025
    Release notes

    Added

    • #36 Add ability to configure filenames when creating a patch with DiffOptions.
    Open source →
  5. 0.4.0 14 Jun 2024
    Release notes

    Fixed

    • #28 Fixed an issue where conflicts were being omitted from merges.

    Added

    • #26 Add ability to reverse a patch.

    Changed

    • #29 Bump minimum supported rust version (msrv) to 1.62.1.
    • #22 update nu-ansi-term dependency to 0.50.
    Open source →
  6. 0.3.0 29 Aug 2022
    Release notes

    Fixed

    • #17 Fix an issue which resulted in a large slowdown when applying a patch with incorrect hunk headers.
    • #18 Replace unmaintained ansi_term dependency with nu_ansi_term in order to address RUSTSEC-2021-0139.

    Changed

    • #19 Bump minimum supported rust version (msrv) to 1.51.0.
    Open source →
  7. 0.2.2 01 Feb 2022
    Release notes

    Fixed

    • #16 Fix an issue where patch files failed to parse when they contained hunks which were adjacent to one another.
    Open source →
  8. 0.2.1 27 Jan 2021
    Release notes

    Fixed

    • #9 Fix an issue where the incorrect range was being used to index an array when calculating a merge resulting in a panic in some cases.
    Open source →
  9. 0.2.0 07 Jul 2020
    Release notes

    Added

    • Support for working with potentially non-utf8 data with the addition of various *_bytes functions.
    • Support for writing both utf8 and non-utf8 patches into a writer W: io::write
    • Support for a minimum supported rust version (msrv) of 1.36.0.

    Changed

    • The Patch type is now generic across the text type, either str for utf8 text and [u8] for potentially non-utf8 texts.
    • The filenames for the original and modified files of a patch are now optional. This means that patches which don't include filename headers (only include hunks) can now properly be parsed.

    Fixed

    • Quoted filenames which include escaped characters are now properly parsed.
    Open source →
  10. 0.1.1 02 Jul 2020
    Release notes

    Added

    • Patches can now be parsed from strings with Patch::from_str
    • A Patch can now be applied to a base image with apply
    Open source →
  11. 0.1.0 30 Jun 2020
    Release notes
    • Initial release.
    Open source →
  12. 0.0.0 08 Jun 2020

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive