Releases: Wilfred/difftastic
0.45.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
This is a small release, released shortly after 0.44 to prioritise the fix to parse error counting.
Diffing
Racket and Newick are now treated as lisps for the purposes for parenthesis heuristics.
Parsing
Fixed an issue where parse errors were undercounted, particularly in YAML files.
Improved parsing for Makefiles.
0.44.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 Newick and Racket.
Diffing
Difftastic now uses a textual diff on files that have any parse errors. The parse error limit defaults to 0, but it is configurable with DFT_PARSE_ERROR_LIMIT
or --parse-error-limit
.
Textual diffing now respects --check-only
, consistent with syntactic diffing.
Display
Improved syntax highlighting for keywords.
If a file exceeds DFT_BYTE_LIMIT
, difftastic now displays its size in the header.
0.43.1
This release has no logic changes from 0.43.
The only difference is that the test_gzip_is_binary
test is ignored by default, as it depends on MIME database availability. This database isn't always installed in packaging environments, so packagers saw this test failing.
0.43.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 R.
Difftastic now considers gzipped files to be binary, even if they happen to be valid UTF-16 (thanks @Miksu82).
Diffing
Fixed a rare crash when one file had repeated lists that partially matched the other side.
Display
Fixed an issue with single-column display when colour is disabled, where newlines were missing from the output.
Command Line Interface
--help
now shows the default value for all arguments (it was previously missing --color
and --display
).
--color
can now be configured with the environment variable DFT_COLOR
.
Fixed an issue where git on Windows would fail with an error about /dev/null
(thanks @n9v9).
0.42.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Parsing
Improved CSS parsing and HTML sublanguage parsing.
Diffing
Added an --ignore-comments
option.
Improved textual diffing performance, particularly when the two files have few lines in common.
Display
Fixed an issue with unwanted underlines with textual diffing when DFT_BYTE_LIMIT is reached.
Fixed a crash in inline display when the file ends with whitespace.
Build
Renamed the vendored parser directory to vendored_parsers/, as cargo vendor
would clobber the vendor/
directory.
0.41.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Parsing
Difftastic now supports embedded languages in HTML and Makefiles. This enables difftastic to parse embedded CSS or JavaScript in HTML, or Bash in Makefiles, leading to better diffs in those files. (Contributed by @sesse, thanks!)
Tab replacement is now done after parsing. If tab characters are syntactically important, they are now handled correctly. This was particularly an issue in Makefiles, where indentation must be tabs.
Diffing
Improved word highlighting in changed comments. Whitespace is never underlined and the characters -
and _
are now considered word constituents.
Display
--display=inline
now respects --tab-width
.
Fixed an issue with unwanted underlines with textual diffing when DFT_GRAPH_LIMIT is reached.
Improved syntax highlighting for predefined types in TypeScript.
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.