Releases: Wilfred/difftastic
0.40.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Diffing
Diffing is now more efficient: the generated graphs have ~20% fewer vertices. This improves performance (less memory, shorter runtime), and also enables difftastic to handle larger files (you're less likely to reach DFT_GRAPH_LIMIT).
This improvement was contributed by @QuarticCat, thanks!
Parsing
rebar files (e.g. rebar.lock) are no longer associated with Erlang, only *.erl files, as the Erlang parser does not currently support them.
Command Line Interface
--list-languages now shows filenames associated with languages (e.g. Cargo.lock is TOML) in addition to extensions.
Display
Symlinks are now expanded before calculating relative paths, resulting in relative paths being shown in more cases.
Build
Difftastic is now built with Ubuntu 20.04 on GitHub, so prebuilt binaries do not require libc version 2.32. This was broken in 0.39 due to a GitHub default changing.
0.39.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 Erlang.
Improved detection of binary content when the MIME type database incorrectly claims a text file is another format.
Display
Paths are now always displayed relative to the current working directory.
Fixed a race condition where diffing directories would lead to interleaved output from different files.
Command Line Interface
Added a --check-only flag that reports if there are any syntactic differences, but doesn't calculate or print them. This is much faster than normal syntactic diffing.
Difftastic now sets the exit code if it finds changes and --exit-code is set. See usage in the manual for the full list of exit codes used.
0.38.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Parsing
Syntax error nodes are now always treated as atoms. This produces better results when difftastic doesn't fully support the syntax (e.g. PostCSS is a superset of CSS) or when there are actual syntax errors.
Fixed a crash on file content detection when the local MIME database contains blank lines.
Display
Line numbers styling has been tweaked to make it more visually distinct from file content.
Fixed an issue with inline display discarding newlines when color is disabled, leading to broken display.
Two column display now ensures that both columns have the same width, so line wrapping is at the same point on both sides.
0.37.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Manual
Added a Chinese translation: https://difftastic.wilfred.me.uk/zh-CN/
Diffing
Improved runtime performance and memory usage (thanks to @QuarticCat).
Standalone . is now considered punctuation in the diff cost model, which improves diff results in some cases.
Parsing
Updated to the latest tree-sitter parser for Swift.
Command Line Interface
Difftastic will now read a file from stdin if given - as a path argument.
Added an option --context to control the number of lines of context displayed.
--list-languages now respects the value of --color, whose default only uses styling when stdout is a TTY.
Display
Fixed side-by-side display width when color is disabled (when piping difftastic stdout or with --color=never).
Build
Fixed an issue with building on Windows with gcc.
0.36.1
0.36.1 is functionally identical to 0.36.0, but fixes a bug in the release script that prevented Windows binaries from being built.
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.