Language-aware structural diff
See code changes as structure, not noise.
ydiff understands Lisp syntax, ignores formatting churn, and finds code that was moved, reordered, wrapped, or renamed.
$ diff-lisp mk1.ss mk2.ss [info] size of program 1: 796 [info] size of program 2: 1894 [diffing] ........ [moving] |.........................|...||. [finished] 0 seconds output: mk1-mk2.html
Interactive output
Hover or select matched fragments to follow their structural counterpart across both source files.
More comparisons
Each page was generated from the example sources included in this repository.
Emacs Lisp
Paredit 20 → 22
A substantial real-world version change.
Emacs LispParedit 22 → 23
Moved and refactored forms across releases.
ClojureTyped Clojure
Structural comparison across Clojure forms.
RacketDiff algorithm
Compare two revisions of ydiff itself.
C++ previewV8 shell revisions
Experimental structural parsing for C++.
C++ previewMIPS ↔ ARM simulator
Compare related implementations by structure.
YinYin language demo
A compact typed Lisp-family example.