Difftastic is a structural diff tool that understands syntax. See the manual to get started, and the changelog for historical changes.
Diffing
Difftastic now understands when trailing punctuation isn't significant, so foo(1,) and foo(1) are treated as "no syntactic changes". This is supported for Go, Java, JavaScript, Python, Rust, Swift and TypeScript.
Parsing
Added support for Assembly.
Substantially improved parsing for Perl.
Improved parsing for Clojure, Common Lisp, CSS, Dart, Erlang, F#, OCaml, Python, Rust, Scala, TypeScript and VHDL.
Removed support for Hack, as the upstream parser is no longer maintained. .php files starting with <?hh are now treated as text.
File Detection
Difftastic now considers .gitattributes when deciding if a file is binary, recognising both the -text and binary attributes.
Build
Difftastic now requires Rust 1.85 or later to build.