difftastic/CHANGELOG.md

2.3 KiB

0.5 (unreleased)

Parsing

Fixed a crash on parsing non-ASCII source files. Fixed a crash on files without an extension. Fixed crashes on empty files.

Input files that aren't valid UTF-8 are now replaced with <20> rather than giving up.

Improved parsing for Rust punctuation.

Improved parsing for OCaml punctuation, including := and method!.

Improved parsing for Emacs Lisp symbols containing + and =, and punctuation of #, . and &.

Improved parsing for Scheme symbols containing =, and punctuation of # and ..

Improved parsing of = and & in Clojure.

Improved parsing of :, ,, and constants in JSON.

Improved parsing of string literals in all languages, supporting escaped delimiters such as "\"" and removing incorrect support for single-quoted strings in JSON.

Diffing

Reduced memory usage when diffing.

Difftastic now highlights word-level changes between comments.

Docs

Improved --help.

Integration

It's now possible to use difftastic with git diff and git show!

0.4

Parsing

Improved parsing for Rust macro definitions and punctuation.

Improved parsing for OCaml punctuation, and added .mli as an OCaml file extension.

Diffing

Diff calculation is now significantly faster.

Difftastic now considers nesting depth when comparing AST nodes, and tries to match nodes with similar nesting levels.

Difftastic now prefers marking multiple items on the same line as novel, rather than adjacent items on different lines. This helps avoid sliders, where the diff chooses a keyword on the 'wrong' side.

Fixed an issue where complex diffs would not display some unchanged lines.

Robustness

Fixed a crash when diff context included the first line.

Fixed a crash when plain text content contained certain non-ASCII characters.

0.3

Diffs are now displayed with unchanged lines aligned to the other side.

Improved Rust parsing to recognise lifetime syntax 'foo, character literals 'x' and punctuation.

Improved punctuation parsing for OCaml and JS.

Fixed an issue where the diff calculated may not be minimal.

Fixed a crash on files with no changes.

0.2

First version using Dijkstra's algorithm for calculating diffs.

0.1

Experimenting with different implementation ideas.