Skip to content

Releases: Wilfred/difftastic

0.31.0

12 Jul 06:42

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

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

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

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

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

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.

0.26.3

10 Apr 22:40

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.

Build

This release contains no logic changes from 0.26.2. 0.26.3 has a fixed release script to ensure that the release includes Windows binaries.

0.26.2

10 Apr 20:08

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.

Build

Fixed compilation error on Windows due to GCC extension usage in the tree-sitter-nix library.

0.26.1

10 Apr 19:26

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.

Build

This version of difftastic is also available as a GitHub release with precompiled binaries available.

Parsing

Fixed Zig parsing of @foo identifiers.

Display

Fixed a crash when inserting newlines in JSX literals.