Skip to content

Releases: Wilfred/difftastic

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.

0.33.0

22 Aug 05: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.

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

0.31.0

12 Jul 06: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 Hacklang and SQL support.

Updated to the latest tree-sitter parsers for C#, Dart, Elm, Gleam, Haskell, HCL, Java, JSON, OCaml, PHP, Python, Ruby, Scala and TypeScript.

Display

Fixed an issue with inline mode where there was a blank line between every line.

Command Line Interface

Fixed language detection and filename display when one path was /dev/null and difftastic was invoked with two arguments.

0.30.0

05 Jul 03: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 HTML and Julia.

Display

Fixed an issue where line numbers were coloured even when colour was disabled.

Improved alignment when files contain Unicode characters that are more than one column wide.

Improved syntax highlighting for conditionals, particularly for Dart, Elvish and HCL.

Command Line Interface

--node-limit has been replaced by --graph-limit, and the corresponding environment variable DFT_NODE_LIMIT has been replaced with DFT_GRAPH_LIMIT.

--graph-limit makes difftastic give up on structural diffs after traversing this many graph nodes. --node-limit applied a limit based on an estimate of how big the graph would be, leading to very slow diffs when the estimate was wrong.

This new setting sets a more accurate limit on difftastic performance. It also means that difftastic will always try a structural diff first. This will be slower for files that exceed --graph-limit, but guarantees that files with a small number of changes will always get a structural diff.

0.29.1

13 Jun 15:50
Compare
Choose a tag to compare

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

Fixed a major memory regression in 0.29 when performing large line-based diffs (e.g. files of 100 KLOC or more).

0.29.0

09 Jun 09:12
Compare
Choose a tag to compare

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

Performance has improved in 0.29, and larger files typically see a 30% reduction in runtime.

Parsing

Improved detection of binary files, including using /usr/share/mime/magic when available.

Improved handling of comments and regexp literals in Perl.

Added Elvish support.

Diffing

Improved delimiter heuristics in lisp-like languages.

Display

Difftastic now displays information about file renames. Previously, it would only show the new name.

0.28.0

29 Apr 23:52
Compare
Choose a tag to compare

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

Parsing

Added support for HCL, Perl and Swift.

Improved language detection for JSON. More file extensions and file names are recognised as JSON, e.g. .jsonl.

Display

Fixed crash in inline mode.

Added an option --tab-width that controls how many spaces are used to display tabs. The default value is 8, consistent with older versions.

Added an option --syntax-highlight that controls whether the output is syntax highlighted.

Diffing

Difftastic now diffs files in parallel when diffing whole directories, increasing performance.

Directory diffing now correctly handles files that are only in one of the directories.

Command Line Interface

Fixed handling of paths that aren't valid UTF-8.

--missing-as-empty now only applies when diffing files, and has no effect when diffing directories.

Note: Crates.io Is Patched

Due to the 10 MB crate limit, two patches were applied before uploading to crates.io. The source code on crates.io therefore does not exactly match this git tag.

Cargo.toml had the include list changed (committed on master as d9ef270), and the vendored perl parser had whitespace removed with sed "s/^[ \t]*//" -i vendor/tree-sitter-perl-src/parser.c.

0.27.0

18 Apr 16:36
Compare
Choose a tag to compare

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

Parsing

Added support for Kotlin and TOML.

Fixed an issue with YAML and | block strings.

Updated to the latest upstream C++, C#, Elixir, Go, Haskell, Java, Python, Ruby, Rust and TypeScript parsers.

Diffing

Improved performance in large files when changes are clustered together.

Display

Improved syntax highlighting.

Tabs are now rendered with eight spaces.

Command Line Interface

Difftastic now validates environment variables the same way as arguments. DFT_DISPLAY=no-such-mode will now error rather than silently using the default display mode.

Build

The upstream Haskell parser has been ported from C++14 to pure C. This should allow difftastic to build on platforms with older C++ compilers.