Recent Releases of difftastic
difftastic - 0.64.0
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.
- Rust
Published by github-actions[bot] 8 months ago
difftastic - 0.63.0
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.
- Rust
Published by github-actions[bot] about 1 year ago
difftastic - 0.62.0
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.
- Rust
Published by github-actions[bot] about 1 year ago
difftastic - 0.61.0
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.
- Rust
Published by github-actions[bot] over 1 year ago
difftastic - 0.60.0
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).
- Rust
Published by github-actions[bot] over 1 year ago
difftastic - 0.59.0
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.
- Rust
Published by github-actions[bot] over 1 year ago
difftastic - 0.58.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 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 (DFTPARSEERROR_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.
- Rust
Published by github-actions[bot] almost 2 years ago
difftastic - 0.57.0
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.
- Rust
Published by github-actions[bot] almost 2 years ago
difftastic - 0.56.1
Fixed an issue with building difftastic on aarch64 with rust 1.71 or earlier.
- Rust
Published by github-actions[bot] almost 2 years ago
difftastic - 0.56.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Parsing
Updated JavaScript, TypeScript, QML and Perl parsers.
Makefile*.in is now detected as Makefile syntax.
Improved shebang parsing with whitespace, e.g. #! /bin/bash is now detected as a shell script.
Added support for Scheme and Smali.
Diffing
Fixed an issue with runaway memory usage on text files with very long lines.
Display
Fixed an issue where all files would show a permissions change when using difftastic with git difftool.
Fixed an issue with paths not showing the containing directory when using difftastic with git difftool.
Difftastic now correctly reports file permission changes when called from git diff.
Fixed an issue with the experimental JSON display mode where it ignored --skip-unchanged.
Fixed an issue with tabs not being replaced in single-column display.
- Rust
Published by github-actions[bot] almost 2 years ago
difftastic - 0.55.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 Objective-C and VHDL.
Files starting with <?xml are now parsed as XML.
Fixed a munmap_chunk(): invalid pointer crash on parsing some large files, particularly JSON.
Display
The default display width for tabs has changed to 4.
Fixed an issue where difftastic would sometimes output literal tabs rather than respecting the display width for tabs.
Build
difftastic now requires Rust 1.65 to build.
- Rust
Published by github-actions[bot] about 2 years ago
difftastic - 0.54.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 Salesforce Apex.
Improved parsing of regex literals in Clojure and strictness annotations in Haskell.
Diffing
Difftastic will now also report file permission changes.
Fixed an issue where directory diffing would show a file more than once.
Display
Fixed a rare crash when the last non-blank line had changes for certain parsers, particularly YAML.
Command Line Interface
Difftastic now errors if given a single path, unless that file contains conflict markers. Previously this was a warning.
Build
Difftastic now requires Rust 1.63 to build.
- Rust
Published by github-actions[bot] about 2 years ago
difftastic - 0.53.1
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Build
Fixed a dependency issue that broke aarch64 builds on older rustc versions.
- Rust
Published by github-actions[bot] about 2 years ago
difftastic - 0.53.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 SCSS.
Updated the Kotlin parser and improved handling of Kotlin nullable types.
.snap files (Jest snapshots) are now detected as JavaScript files.
Diffing
Fixed an issue where adding or removing blank lines would be ignored by the textual diffing logic.
Directory diffing now respects .gitignore files.
Directory diffing can now be sorted by path with the --sort-paths option.
Command Line Interface
Added the option --strip-cr. This removes all carriage return characters before diffing, which is helpful when dealing with a mix of Windows and non-Windows flies.
The option --skip-unchanged now has a corresponding environment option DFT_SKIP_UNCHANGED.
Build
Difftastic now requires Rust 1.60 to build.
- Rust
Published by github-actions[bot] about 2 years ago
difftastic - 0.52.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 XML and JSONL.
Diffing
Text nodes now get word diffing, consistent with string literals and comments. This is used in languages like HTML and XML that have separate text nodes.
Display
Improved syntax highlighting of constructors (i.e. type names when values are constructed, such as Foo {}).
Improved syntax highlighting for C#.
Build
This release does not provide a prebuilt musl binary, due to a dynamic linking issue with binaries in the release script.
musl remains tested in CI and supported for users, but you will need to compile difftastic from source.
- Rust
Published by github-actions[bot] over 2 years ago
difftastic - 0.51.1
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
This is the same code as 0.51.0, but fixes a CI issue so that prebuilt binaries are attached.
Parsing
Updated Bash, Python and Rust parsers.
Display
Added a JSON display option. This is currently unstable, and requires you to set DFT_UNSTABLE. The JSON structure may change in future.
Please give it a try and give feedback on GitHub issues.
Build
Added support for Linux with musl, Linux on aarch64, and macOS on aarch64.
Note that Difftastic already worked on these platforms, but they are now tested in CI and will be included in prebuilt binaries in releases.
- Rust
Published by github-actions[bot] over 2 years ago
difftastic - 0.51.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Parsing
Updated Bash, Python and Rust parsers.
Display
Added a JSON display option. This is currently unstable, and requires you to set DFT_UNSTABLE. The JSON structure may change in future.
Please give it a try and give feedback on GitHub issues.
Build
Added support for Linux with musl, Linux on aarch64, and macOS on aarch64.
Note that Difftastic already worked on these platforms, but they are now tested in CI and will be included in prebuilt binaries in releases.
- Rust
Published by github-actions[bot] over 2 years ago
difftastic - 0.50.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Conflicts
Difftastic now supports parsing files with conflict markers, enabling you to diff the two conflicting file states.
$ difft file_with_conflicts.js
Parsing
Updated Elixir, Erlang, Go, Kotlin and Racket parsers.
Display
Tweaked the colours on the file header, to make metadata less prominent.
Improved styling of file rename information.
Improved syntax hightling for Java built-in types.
Diffing
Fixed an issue with runaway memory usage when the two files input files had a large number of differences.
Build
Difftastic now requires Rust 1.59 to build.
- Rust
Published by github-actions[bot] over 2 years ago
difftastic - 0.49.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 LaTeX.
Updated grammars for C, C++ and Java.
Improved parsing of qualified constructors in Haskell.
Difftastic is now stricter about valid UTF-8 and UTF-16, considering more of the file's bytes during filetype detection. This fixes cases where e.g. PDF was sometimes incorrectly considered as UTF-8.
Diffing
Improved handling of delimiters ("nested sliders") in languages that prefer the outer delimiter, such as JSON and Lisps.
Build
Difftastic now requires Rust 1.58 to build.
- Rust
Published by github-actions[bot] over 2 years ago
difftastic - 0.48.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Parsing
Updated Scala parser.
Improved parsing of qualified modules and variables in Haskell.
Diffing
Replaced strings now have subword highlighting, consistent with replaced comments. Thanks @amnore!
Fixed an issue with the cost model for comment replacement, leading difftastic to prefer modified comments even when exact comment matches are possible.
Simplified the cost model, which previously had an inconsistent heuristic depending on whether there were multiple items on the same line. This can lead to slightly different items being marked as changed, but on average the results are better.
Display
Improved word highlighting in comments when they contain numbers or hyphens.
Internals
Difftastic's logging is now configured with the environment variable DFT_LOG. This was previously RUST_LOG, which could interfere with users configuring logging for their own development work.
- Rust
Published by github-actions[bot] over 2 years ago
difftastic - 0.47.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Language Detection
Fixed an issue where file extensions of the form *.foo.bar (e.g. *.cmake.in) were ignored.
Added an option --override which overrides language detection based on a glob, e.g. --override='*.js:javascript jsx'. See --help for full documentation and more examples.
Removed the --language option. This option was confusing (it took a file extension rather than a language name) and not very useful (it overrode language detection for all files together).
Parsing
Added support for Solidity.
Display
When difftastic is invoked with two file paths, it will now truncate the path shown to the shared common parts. This is particularly helpful when using difftastic with mercurial.
$ difft dir1/foo/bar.py dir2/foo/bar.py
foo/bar.py -- Python
...
- Rust
Published by github-actions[bot] almost 3 years ago
difftastic - 0.46.0
Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Command Line Interface
Removed the option --missing-as-empty. This is no longer needed as difftastic handles /dev/null gracefully on all platforms.
Parsing
Added support for Ada.
.ino files are now treated as C++.
Improved parsing for TOML.
Updated grammars for Bash, C, C++, C#, Clojure, CMake, Elixir, Go, Java, JavaScript, OCaml, Perl, QML and TypeScript.
Difftastic now prefers treating files as 'mostly UTF-8' or binary rather than UTF-16. Many files can be decoded as UTF-16 without decoding errors but produce nonsense results, so this heuristic seems to work better.
Fixed an issue where difftastic would discard the last newline in a file before diffing. This was most noticeable when doing textual diffs and the last line had changed.
Display
Difftastic no longer uses purple to highlight regions that are missing styling. This was intended as a debug feature, but it in practice it only highlighted trailing whitespace for a few languages.
- Rust
Published by github-actions[bot] almost 3 years ago
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.
- Rust
Published by github-actions[bot] almost 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] almost 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] about 3 years ago
difftastic - 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).
- Rust
Published by github-actions[bot] about 3 years ago
difftastic - 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 DFTBYTELIMIT 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.
- Rust
Published by github-actions[bot] about 3 years ago
difftastic - 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 DFTGRAPHLIMIT is reached.
Improved syntax highlighting for predefined types in TypeScript.
- Rust
Published by github-actions[bot] about 3 years ago
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.
- Rust
Published by github-actions[bot] about 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] about 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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).
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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.
- Rust
Published by github-actions[bot] over 3 years ago
difftastic - 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 d9ef270d273e3f7c61e2e167b7efbd33b36d0c96), and the vendored perl parser had whitespace removed with sed "s/^[ \t]*//" -i vendor/tree-sitter-perl-src/parser.c.
- Rust
Published by github-actions[bot] almost 4 years ago
difftastic - 0.27.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 Kotlin and TOML.
Fixed an issue with YAML and | block strings.
Updated to the latest upstream C++, C#, Elixir, Go, Haskell, Java, Python, Ruby, Rust and TypeScript parsers.
Diffing
Improved performance in large files when changes are clustered together.
Display
Improved syntax highlighting.
Tabs are now rendered with eight spaces.
Command Line Interface
Difftastic now validates environment variables the same way as arguments. DFT_DISPLAY=no-such-mode will now error rather than silently using the default display mode.
Build
The upstream Haskell parser has been ported from C++14 to pure C. This should allow difftastic to build on platforms with older C++ compilers.
- Rust
Published by github-actions[bot] almost 4 years ago
difftastic - 0.26.3
Difftastic is a diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Build
This release contains no logic changes from 0.26.2. 0.26.3 has a fixed release script to ensure that the release includes Windows binaries.
- Rust
Published by github-actions[bot] almost 4 years ago
difftastic - 0.26.2
Difftastic is a diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Build
Fixed compilation error on Windows due to GCC extension usage in the tree-sitter-nix library.
- Rust
Published by github-actions[bot] almost 4 years ago
difftastic - 0.26.1
Difftastic is a diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Build
This version of difftastic is also available as a GitHub release with precompiled binaries available.
Parsing
Fixed Zig parsing of @foo identifiers.
Display
Fixed a crash when inserting newlines in JSX literals.
- Rust
Published by github-actions[bot] almost 4 years ago