Releases: Wilfred/difftastic
0.36.0
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
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
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
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
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
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
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
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
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
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
.