Skip to content

Releases: Wilfred/difftastic

0.54.0

07 Jan 08:32
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

Parsing

Added support for Salesforce Apex.

Improved parsing of regex literals in Clojure and strictness annotations in Haskell.

Diffing

Difftastic will now also report file permission changes.

Fixed an issue where directory diffing would show a file more than once.

Display

Fixed a rare crash when the last non-blank line had changes for certain parsers, particularly YAML.

Command Line Interface

Difftastic now errors if given a single path, unless that file contains conflict markers. Previously this was a warning.

Build

Difftastic now requires Rust 1.63 to build.

0.53.1

26 Nov 01:14
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

Build

Fixed a dependency issue that broke aarch64 builds on older rustc versions.

0.53.0

24 Nov 01:42
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

Parsing

Added support for SCSS.

Updated the Kotlin parser and improved handling of Kotlin nullable types.

.snap files (Jest snapshots) are now detected as JavaScript files.

Diffing

Fixed an issue where adding or removing blank lines would be ignored by the textual diffing logic.

Directory diffing now respects .gitignore files.

Directory diffing can now be sorted by path with the --sort-paths option.

Command Line Interface

Added the option --strip-cr. This removes all carriage return characters before diffing, which is helpful when dealing with a mix of Windows and non-Windows flies.

The option --skip-unchanged now has a corresponding environment option DFT_SKIP_UNCHANGED.

Build

Difftastic now requires Rust 1.60 to build.

0.52.0

08 Oct 23:16
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

Parsing

Added support for XML and JSONL.

Diffing

Text nodes now get word diffing, consistent with string literals and comments. This is used in languages like HTML and XML that have separate text nodes.

Display

Improved syntax highlighting of constructors (i.e. type names when values are constructed, such as Foo {}).

Improved syntax highlighting for C#.

Build

This release does not provide a prebuilt musl binary, due to a dynamic linking issue with binaries in the release script.

musl remains tested in CI and supported for users, but you will need to compile difftastic from source.

0.51.1

25 Aug 16:24
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

This is the same code as 0.51.0, but fixes a CI issue so that prebuilt binaries are attached.

Parsing

Updated Bash, Python and Rust parsers.

Display

Added a JSON display option. This is currently unstable, and requires you to set DFT_UNSTABLE. The JSON structure may change in future.

Please give it a try and give feedback on GitHub issues.

Build

Added support for Linux with musl, Linux on aarch64, and macOS on aarch64.

Note that Difftastic already worked on these platforms, but they are now tested in CI and will be included in prebuilt binaries in releases.

0.51.0

25 Aug 16:23
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

Parsing

Updated Bash, Python and Rust parsers.

Display

Added a JSON display option. This is currently unstable, and requires you to set DFT_UNSTABLE. The JSON structure may change in future.

Please give it a try and give feedback on GitHub issues.

Build

Added support for Linux with musl, Linux on aarch64, and macOS on aarch64.

Note that Difftastic already worked on these platforms, but they are now tested in CI and will be included in prebuilt binaries in releases.

0.50.0

16 Aug 06:22
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

Conflicts

Difftastic now supports parsing files with conflict markers, enabling you to diff the two conflicting file states.

$ difft file_with_conflicts.js

Parsing

Updated Elixir, Erlang, Go, Kotlin and Racket parsers.

Display

Tweaked the colours on the file header, to make metadata less prominent.

Improved styling of file rename information.

Improved syntax hightling for Java built-in types.

Diffing

Fixed an issue with runaway memory usage when the two files input files had a large number of differences.

Build

Difftastic now requires Rust 1.59 to build.

0.49.0

27 Jul 03:16
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

Parsing

Added support for LaTeX.

Updated grammars for C, C++ and Java.

Improved parsing of qualified constructors in Haskell.

Difftastic is now stricter about valid UTF-8 and UTF-16, considering more of the file's bytes during filetype detection. This fixes cases where e.g. PDF was sometimes incorrectly considered as UTF-8.

Diffing

Improved handling of delimiters ("nested sliders") in languages that prefer the outer delimiter, such as JSON and Lisps.

Build

Difftastic now requires Rust 1.58 to build.

0.48.0

12 Jul 23:49
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

Parsing

Updated Scala parser.

Improved parsing of qualified modules and variables in Haskell.

Diffing

Replaced strings now have subword highlighting, consistent with replaced comments. Thanks @amnore!

Fixed an issue with the cost model for comment replacement, leading difftastic to prefer modified comments even when exact comment matches are possible.

Simplified the cost model, which previously had an inconsistent heuristic depending on whether there were multiple items on the same line. This can lead to slightly different items being marked as changed, but on average the results are better.

Display

Improved word highlighting in comments when they contain numbers or hyphens.

Internals

Difftastic's logging is now configured with the environment variable DFT_LOG. This was previously RUST_LOG, which could interfere with users configuring logging for their own development work.

0.47.0

17 May 04:08
Compare
Choose a tag to compare

Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.

Language Detection

Fixed an issue where file extensions of the form *.foo.bar (e.g. *.cmake.in) were ignored.

Added an option --override which overrides language detection based on a glob, e.g. --override='*.js:javascript jsx'. See --help for full documentation and more examples.

Removed the --language option. This option was confusing (it took a file extension rather than a language name) and not very useful (it overrode language detection for all files together).

Parsing

Added support for Solidity.

Display

When difftastic is invoked with two file paths, it will now truncate the path shown to the shared common parts. This is particularly helpful when using difftastic with mercurial.

$ difft dir1/foo/bar.py dir2/foo/bar.py
foo/bar.py -- Python
...