Skip to content

Releases: Wilfred/difftastic

0.65.0

24 Sep 03:50

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

Incrased the default page size of Jemalloc, so difftastic should work on systems with large page sizes (typically aarch64, i.e. Arm).

difftastic now requires Rust 1.75 to build.

Parsing

Updated Clojure, Common Lisp, Rust and Zig parsers. Improved parsing of Kotlin.

Text encoding detection is now stricter, fixing more cases where binary files were treated as text.

Added the --override-binary option to force files to be treated as binary rather than text.

Display

When diffing binary files, the file sizes are now shown to help see big changes.

0.64.0

15 Jun 22:10

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

Updated to the latest tree-sitter parser for Erlang, F#, Gleam, Pascal and Swift.

File detection is now stricter for UTF-8, and recognises more compression file types as binary (e.g. zstd or bzip2).

Added support for Verilog and SystemVerilog.

Build

CI on GitHub now uses Ubuntu 22.04 for Linux builds (previously Ubuntu 20.04), so prebuilt binaries will require a newer glibc version to run.

Internal

Difftastic has switched from MiMalloc to Jemalloc for allocation. This is modest performance regression (up to 20% longer runtime in testing). Jemalloc is currently easier to build (see issue #805) and has fewer pathological performance corner cases.

0.63.0

11 Feb 16:38

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

When diffing directories, difftastic now ignores the .git directory.

Display

Fixed an issue where --display=side-by-side-show-both would not use a two-column display when one file was empty.

Command Line Interface

Difftastic no longer accepts the --missing-as-empty argument. This argument has had no effect since 0.46.

Parsing

File detection now supports Windows-1252 encoded text (an extension of ISO-8859-1), and is stricter about UTF-16 detection.

Updated to the latest tree-sitter parser for Elixir, LaTeX, Make, Nix, Rust and YAML.

Build

Releases now include prebuilt musl binaries.

0.62.0

21 Dec 04:06

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 handling of multiline strings, which could cause a crash if they occurred at the end of the file. This was particularly noticeable with YAML.

Parsing

Improved language detection when one argument is a named pipe.

Updated to the latest tree-sitter parser for Bash, C, C++, C#, CSS, Go, Haskell, HTML, Java, JavaScript, JSON, Julia, Lua, Objective-C, OCaml, PHP, Python, Ruby, Scala, TOML, TypeScript and XML.

Syntax Highlighting

Improved syntax highlighting, particularly for keywords.

Build

difftastic now requires Rust 1.74.1 to build.

Prebuilt packages for macOS on x86-64 are now built on macOS 13.

0.61.0

24 Oct 05:53

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.

Recommended git configuration has changed! Please update your ~/.gitconfig to match the git instructions, regardless of your difftastic version.

Display

Side-by-side display is now smarter on very wide terminals when the content is narrow.

Diffing

Fixed a crash (introduced in 0.60) when the final line in a file does not have a trailing newline and occurs more than once in the file.

Build

difftastic now requires Rust 1.66 to build.

0.60.0

01 Aug 15:29

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

Fixed a crash (introduced in 0.59) when the final changed hunk included the last line of the file.

Display

Fixed an issue where files with no common content would show duplicate hunks.

Fixed a performance issue when files had extremely long lines (e.g. 100,000+ characters).

0.59.0

20 Jul 23:21

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

Fixed crash on some textual files where a single change contained more than 1,000 words.

Parsing

Added support for device tree and F#.

Difftastic now uses tree-sitter comment highlighing as a hint that nodes should be treated as atoms. This ensures comments are treated more consistently across languages. This fixes cases in Elm where comment differences were ignored, and may improve other languages too.

0.58.0

11 May 22:53

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 preserves tree-sitter parse tree structure on parse error nodes. This reverts the flattening behaviour introduced in 0.38. Preserving structure tends to produce better diffs, although it increases the risk that difftastic will show fewer changes in the presence of parse errors.

Since difftastic is now conservative with parse errors (DFT_PARSE_ERROR_LIMIT is 0 by default), this seems like a better tradeoff.

Updated C, C++, CMake, CSS, Elm, Go, Lua and Python parsers.

Diffing

--strip-cr now defaults to on, so comparing a file with CRLF endings with a file with unix line endings will not show spurious changes.

Documentation

Difftastic now has a man page, see the difft.1 file.

Performance

Fixed a memory leak and improved performance in some cases.

Command Line Interface

Fixed a crash when difftastic could not detect the terminal width, such as inside eshell.

Difftastic now also considers $COLUMNS when detecting the terminal width.

0.57.0

02 Apr 05:57

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

Text file detection is now stricter, considering null bytes as a hint that files are binaries.

Diffing

Fixed an issue where hidden files (filename starting with .) were ignored when diffing directories.

Scheme now uses the same slider heuristics as other lisps, preferring the outer delimiter.

Fixed an issue with line-based diffing where only the first line in a large changed region was highlighted. This was particularly noticeable when diffing brand new files.

Display

Fixed an issue when reporting changes in binary files, where trailing whitespace was inconsistent with other changes shown.

0.56.1

06 Mar 07:22

Choose a tag to compare

Fixed an issue with building difftastic on aarch64 with rust 1.71 or earlier.