Grammar aware diff. Instead of doing a line by line diff and maybe adding some smarts to ignore whitespace and comments, Diffy will perform a diff on the syntax tree of an arbitrary language.
There are a few advantages to this approach, the largest of which is that Diffy will be able to intelligently describe what has changed in a file. Effectively, what a diff tool tells you is:
- added lines 122-126
- removed lines 24-28
- changed lines 207-234
Which is not very useful without knowing what those lines contain. What diffy will tell you is:
- added class Brush
- removed comment
- changed method Draw in class Canvas
Which seems a lot more user friendly to me, especially when you’re trying to refresh your memory to write a check in comment or showing your changes to someone during a code review. Here’s a shot of it in action:
The functionality is very basic right now, but I plan to add support for detecting move and copy operations in addition to the standard diff add/remove/change.
So, there you have it. Do I have a product? Please cast your vote and give me your thoughts in the blog comments.


