Skip to content

Releases: Wilfred/difftastic

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.

0.36.1

18 Sep 06:55
Compare
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
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

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

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