Syntactic diffing with interpolation is an interesting problem.
Same: 1 + 2 vs 1+2
Different: "1 + 2" vs "1+2"
Same: "#{1 + 2}" vs "#{1+2}"
Difftastic is smart enough to get the first two cases correct, but still considers the third case to be different strings.
miniblog.
Related Posts
C++ no longer considers trivial infinite loops to be undefined behaviour! https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2809r3.html
Spotted in the release notes for the latest clang.
I'm flattered that SemanticDiff has a blog post comparing it with difftastic! https://semanticdiff.com/blog/semanticdiff-vs-difftastic/
It's a pretty even-handed post, and it touches on some of the different design decisions. For example, SemanticDiff considers 0xA and 10 to be the same when diffing.
Rich Hickey compares REPL design with RPC style nREPL: https://groups.google.com/g/clojure-dev/c/Dl3Stw5iRVA/m/IHoVWiJz5UIJ
Rich considers the nesting ability to be important. If the user is interacting with stdout/stdin, they can enter arbitrary other text UIs.