Skip to content

Releases: Wilfred/difftastic

0.58.0

11 May 22:53
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

Difftastic now preserves tree-sitter parse tree structure on parse error nodes. This reverts the flattening behaviour introduced in 0.38. Preserving structure tends to produce better diffs, although it increases the risk that difftastic will show fewer changes in the presence of parse errors.

Since difftastic is now conservative with parse errors (DFT_PARSE_ERROR_LIMIT is 0 by default), this seems like a better tradeoff.

Updated C, C++, CMake, CSS, Elm, Go, Lua and Python parsers.

Diffing

--strip-cr now defaults to on, so comparing a file with CRLF endings with a file with unix line endings will not show spurious changes.

Documentation

Difftastic now has a man page, see the difft.1 file.

Performance

Fixed a memory leak and improved performance in some cases.

Command Line Interface

Fixed a crash when difftastic could not detect the terminal width, such as inside eshell.

Difftastic now also considers $COLUMNS when detecting the terminal width.

0.57.0

02 Apr 05:57
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

Text file detection is now stricter, considering null bytes as a hint that files are binaries.

Diffing

Fixed an issue where hidden files (filename starting with .) were ignored when diffing directories.

Scheme now uses the same slider heuristics as other lisps, preferring the outer delimiter.

Fixed an issue with line-based diffing where only the first line in a large changed region was highlighted. This was particularly noticeable when diffing brand new files.

Display

Fixed an issue when reporting changes in binary files, where trailing whitespace was inconsistent with other changes shown.

0.56.1

06 Mar 07:22
Compare
Choose a tag to compare

Fixed an issue with building difftastic on aarch64 with rust 1.71 or earlier.

0.56.0

06 Mar 06:01
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 JavaScript, TypeScript, QML and Perl parsers.

Makefile*.in is now detected as Makefile syntax.

Improved shebang parsing with whitespace, e.g. #! /bin/bash is now detected as a shell script.

Added support for Scheme and Smali.

Diffing

Fixed an issue with runaway memory usage on text files with very long lines.

Display

Fixed an issue where all files would show a permissions change when using difftastic with git difftool.

Fixed an issue with paths not showing the containing directory when using difftastic with git difftool.

Difftastic now correctly reports file permission changes when called from git diff.

Fixed an issue with the experimental JSON display mode where it ignored --skip-unchanged.

Fixed an issue with tabs not being replaced in single-column display.

0.55.0

02 Feb 06:05
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 Objective-C and VHDL.

Files starting with <?xml are now parsed as XML.

Fixed a munmap_chunk(): invalid pointer crash on parsing some large files, particularly JSON.

Display

The default display width for tabs has changed to 4.

Fixed an issue where difftastic would sometimes output literal tabs rather than respecting the display width for tabs.

Build

difftastic now requires Rust 1.65 to build.

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.