Skip to content

Releases: Wilfred/difftastic

0.45.0

03 Mar 16:20
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 a small release, released shortly after 0.44 to prioritise the fix to parse error counting.

Diffing

Racket and Newick are now treated as lisps for the purposes for parenthesis heuristics.

Parsing

Fixed an issue where parse errors were undercounted, particularly in YAML files.

Improved parsing for Makefiles.

0.44.0

03 Mar 06:51
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 Newick and Racket.

Diffing

Difftastic now uses a textual diff on files that have any parse errors. The parse error limit defaults to 0, but it is configurable with DFT_PARSE_ERROR_LIMIT or --parse-error-limit.

Textual diffing now respects --check-only, consistent with syntactic diffing.

Display

Improved syntax highlighting for keywords.

If a file exceeds DFT_BYTE_LIMIT, difftastic now displays its size in the header.

0.43.1

04 Feb 22:14
Compare
Choose a tag to compare

This release has no logic changes from 0.43.

The only difference is that the test_gzip_is_binary test is ignored by default, as it depends on MIME database availability. This database isn't always installed in packaging environments, so packagers saw this test failing.

0.43.0

03 Feb 06:31
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 R.

Difftastic now considers gzipped files to be binary, even if they happen to be valid UTF-16 (thanks @Miksu82).

Diffing

Fixed a rare crash when one file had repeated lists that partially matched the other side.

Display

Fixed an issue with single-column display when colour is disabled, where newlines were missing from the output.

Command Line Interface

--help now shows the default value for all arguments (it was previously missing --color and --display).

--color can now be configured with the environment variable DFT_COLOR.

Fixed an issue where git on Windows would fail with an error about /dev/null (thanks @n9v9).

0.42.0

16 Jan 04:13
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

Improved CSS parsing and HTML sublanguage parsing.

Diffing

Added an --ignore-comments option.

Improved textual diffing performance, particularly when the two files have few lines in common.

Display

Fixed an issue with unwanted underlines with textual diffing when DFT_BYTE_LIMIT is reached.

Fixed a crash in inline display when the file ends with whitespace.

Build

Renamed the vendored parser directory to vendored_parsers/, as cargo vendor would clobber the vendor/ directory.

0.41.0

09 Jan 01:35
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 supports embedded languages in HTML and Makefiles. This enables difftastic to parse embedded CSS or JavaScript in HTML, or Bash in Makefiles, leading to better diffs in those files. (Contributed by @sesse, thanks!)

Tab replacement is now done after parsing. If tab characters are syntactically important, they are now handled correctly. This was particularly an issue in Makefiles, where indentation must be tabs.

Diffing

Improved word highlighting in changed comments. Whitespace is never underlined and the characters - and _ are now considered word constituents.

Display

--display=inline now respects --tab-width.

Fixed an issue with unwanted underlines with textual diffing when DFT_GRAPH_LIMIT is reached.

Improved syntax highlighting for predefined types in TypeScript.

0.40.0

28 Dec 23:03
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.

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

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

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.