Skip to content

Releases: Wilfred/difftastic

0.70.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 22:06

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

Diffing

Improved diffing performance, particularly when diffing directories.

Parsing

Files with parse errors now report the position of the first error, to help investigate issues.

Added support for Dockerfiles and Fish shell.

Improved support for Dart, Emacs Lisp, Erlang, Java, OCaml, PHP, Protocol Buffers and TOML.

Removed support for Elvish and SCSS (upstream parsers are no longer maintained).

Display

Fixed an issue where files with tabs were not always aligned correctly in some build configurations.

Fix an alignment issue with line numbers in side-by-side mode.

Release

Fixed an issue where prebuilt binaries on GitHub did not respect Cargo.lock, so they used newer library versions than tested on CI. This caused rendering bugs in source code with tabs.

0.69.0

Choose a tag to compare

@github-actions github-actions released this 30 Apr 21:47

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

Diffing

Difftastic now understands when trailing punctuation isn't significant, so foo(1,) and foo(1) are treated as "no syntactic changes". This is supported for Go, Java, JavaScript, Python, Rust, Swift and TypeScript.

Parsing

Added support for Assembly.

Substantially improved parsing for Perl.

Improved parsing for Clojure, Common Lisp, CSS, Dart, Erlang, F#, OCaml, Python, Rust, Scala, TypeScript and VHDL.

Removed support for Hack, as the upstream parser is no longer maintained. .php files starting with <?hh are now treated as text.

File Detection

Difftastic now considers .gitattributes when deciding if a file is binary, recognising both the -text and binary attributes.

Build

Difftastic now requires Rust 1.85 or later to build.

0.68.0

Choose a tag to compare

@github-actions github-actions released this 16 Mar 23:30

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

Git Support

Fixed an issue where git with difftastic would terminate with fatal: external diff died when there was an unmerged path.

Parsing

Updated Bash, C, Go, Lua, Nix, Perl, Python, Rust, Scala, Swift and YAML parsers.

Fixed an issue with parsing raw string literals in Rust.

Build

Difftastic now requires Rust 1.77 or later to build.

Difftastic no longer uses jemalloc on any Windows builds. Previously jemalloc was only disabled for MSVC.

Command Line Interface

Improved error reporting when invoked with an invalid number of arguments.

Display

Fixed an issue with inline display where it didn't always respect the value of --context.

Fixed an issue with side-by-side rendering when files contain tabs.

0.67.0

Choose a tag to compare

@github-actions github-actions released this 16 Nov 16:35

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 protocol buffer files. Updated Ada, Clojure, CMake, Dart, Devicetree, Elisp, Elm, Gleam, HCL, Newick, QML, R, Racket, SQL, Scheme, and Solidity parsers.

Improved handling of variable names $foo in shell scripts.

Improved detection of YAML files.

Diffing

Improved subword highlighting for words with hyphens.

Display

Difftastic is now smarter about calculating the display width for side-by-side diffs. Long lines that are not included in the output no longer affect display.

Improved descriptions of changes to binary files.

Fixed an issue (introduced after 0.65) where difftastic would not use the full width of the terminal on side-by-side diffs when files had more than 1,000 lines.

0.65.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 03:50

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

Choose a tag to compare

@github-actions github-actions released this 15 Jun 22:10

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

Choose a tag to compare

@github-actions github-actions released this 11 Feb 16:38

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

Choose a tag to compare

@github-actions github-actions released this 21 Dec 04:06

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

Choose a tag to compare

@github-actions github-actions released this 24 Oct 05:53

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

Choose a tag to compare

@github-actions github-actions released this 01 Aug 15:29

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