Skip to content

Releases: Wilfred/difftastic

0.40.0

28 Dec 23:03

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.

Diffing

Diffing is now more efficient: the generated graphs have ~20% fewer vertices. This improves performance (less memory, shorter runtime), and also enables difftastic to handle larger files (you're less likely to reach DFT_GRAPH_LIMIT).

This improvement was contributed by @QuarticCat, thanks!

Parsing

rebar files (e.g. rebar.lock) are no longer associated with Erlang, only *.erl files, as the Erlang parser does not currently support them.

Command Line Interface

--list-languages now shows filenames associated with languages (e.g. Cargo.lock is TOML) in addition to extensions.

Display

Symlinks are now expanded before calculating relative paths, resulting in relative paths being shown in more cases.

Build

Difftastic is now built with Ubuntu 20.04 on GitHub, so prebuilt binaries do not require libc version 2.32. This was broken in 0.39 due to a GitHub default changing.

0.39.0

19 Dec 08:01

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 Erlang.

Improved detection of binary content when the MIME type database incorrectly claims a text file is another format.

Display

Paths are now always displayed relative to the current working directory.

Fixed a race condition where diffing directories would lead to interleaved output from different files.

Command Line Interface

Added a --check-only flag that reports if there are any syntactic differences, but doesn't calculate or print them. This is much faster than normal syntactic diffing.

Difftastic now sets the exit code if it finds changes and --exit-code is set. See usage in the manual for the full list of exit codes used.

0.38.0

14 Nov 08:31

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

Syntax error nodes are now always treated as atoms. This produces better results when difftastic doesn't fully support the syntax (e.g. PostCSS is a superset of CSS) or when there are actual syntax errors.

Fixed a crash on file content detection when the local MIME database contains blank lines.

Display

Line numbers styling has been tweaked to make it more visually distinct from file content.

Fixed an issue with inline display discarding newlines when color is disabled, leading to broken display.

Two column display now ensures that both columns have the same width, so line wrapping is at the same point on both sides.

0.37.0

14 Oct 20:51

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.

Manual

Added a Chinese translation: https://difftastic.wilfred.me.uk/zh-CN/

Diffing

Improved runtime performance and memory usage (thanks to @QuarticCat).

Standalone . is now considered punctuation in the diff cost model, which improves diff results in some cases.

Parsing

Updated to the latest tree-sitter parser for Swift.

Command Line Interface

Difftastic will now read a file from stdin if given - as a path argument.

Added an option --context to control the number of lines of context displayed.

--list-languages now respects the value of --color, whose default only uses styling when stdout is a TTY.

Display

Fixed side-by-side display width when color is disabled (when piping difftastic stdout or with --color=never).

Build

Fixed an issue with building on Windows with gcc.

0.36.1

18 Sep 06:55

Choose a tag to compare

0.36.1 is functionally identical to 0.36.0, but fixes a bug in the release script that prevented Windows binaries from being built.

0.36.0

18 Sep 03:18

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.

Diffing

Improved diff cost model to prefer finding unchanged variable names over unchanged punctuation.

Parsing

Added support for Hare, Pascal and QML.

ZIP files are now always treated as binary files.

Difftastic is now stricter about text content validity, so more binary files are correctly detected.

Display

Changed words in changed comments are now also underlined, to make them more visible.

Fixed crash when word-wrapping lines containing Unicode combining diacritics characters.

0.35.0

03 Sep 01:24

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.

Diffing

Difftastic now fixes sliders in more cases, producing better diff results.

Parsing

Difftastic will now autodetect files in UTF-16-BE and UTF-16-LE. Previously it required files to be UTF-8.

Added support for Makefiles.

Fixed an issue with HCL language detection on .workflow files. Fixed an issue with Makefile language detection.

Command Line Interface

Fixed terminal width detection when only stderr is a TTY (e.g. when using difftastic with git). This was broken in 0.34.

Added an option --list-languages which reports all the languages supported, along with the extensions associated with them.

0.34.0

28 Aug 05:59

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 build on Rust 1.61+.

Display

Fixed an issue where side-by-side display would sometimes print the line number from the second file rather than the first file.

0.33.0

22 Aug 05:05

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.

Diffing

Difftastic now explores 2x more parenthesis nesting possibilities. This can make diffing slower, but produces substantially better results.

Parsing

Added support for CMake.

Improved comment detection using tree-sitter syntax highlighting queries.

Fixed an issue with language detection when file names were very short.

Command Line Interface

Difftastic prefers to show the second path when called with two arguments. This fixes an issue (broken in 0.31) where the path would be shown as /tmp/git-blob-abc/file_name.

Build

Difftastic now requires Rust 1.57 to build.

Fixed build on Windows. Previously it would fail non-deterministically.

0.32.0

08 Aug 01:16

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.

Diffing

Improved performance in many cases, particularly for files with a fairly flat structure.

Command Line Interface

Difftastic now treats the path /dev/null as an empty file, even if that path doesn't exist on the current machine. This fixes a crash when using difftastic with git on Windows.