|Project Name||Stars||Downloads||Repos Using This||Packages Using This||Most Recent Commit||Total Releases||Latest Release||Open Issues||License||Language|
|Difftastic||14,906||8 days ago||43||September 18, 2022||123||mit||Rust|
|a structural diff that understands syntax 🟥🟩|
|Differencekit||3,328||19||10 days ago||21||May 07, 2021||27||apache-2.0||Swift|
|💻 A fast and flexible O(n) difference algorithm framework for Swift collection.|
|Textdistance||3,116||14||29||9 months ago||25||June 29, 2022||9||mit||Python|
|Compute distance between sequences. 30+ algorithms, pure python implementation, common interface, optional external libs usage.|
|Dwifft||1,767||26||3 years ago||12||October 22, 2018||18||mit||Swift|
|Diff.swift||935||20||5 years ago||7||September 30, 2017||8||mit||Swift|
|The fastest Diff and patch library in Swift. Includes UICollectionView/UITableView utils.|
|🚅 - Hyper fast diffing algorithm for real DOM nodes|
|Diffabledatasources||619||2 years ago||4||June 08, 2021||13||apache-2.0||Swift|
|💾 A library for backporting UITableView/UICollectionViewDiffableDataSource.|
|Editscript||423||3 months ago||22||August 25, 2022||11||epl-1.0||Clojure|
|A library to diff and patch Clojure/ClojureScript data structures|
|Vim Diff Enhanced||332||3 years ago||Vim script|
|Better Diff options for Vim|
|Diff Lcs||263||214,363||323||a year ago||16||December 23, 2021||5||other||Ruby|
|Generate difference sets between Ruby sequences.|
The Diff for java is originally developed by Stuart D. Gathman (http://www.bmsi.com/java/) Here is a forked project to improve original work to be more robust and easy to use.
I have translated the GNU Diff algorithm to a Java class. The Diff class computes the differences between two Object arrays as a list of changes. This is very general purpose. Any of the options to GNU diff can be efficiently implemented as variations on how Object.equals() is implemented and how the change list is printed. DiffPrint now sports a setOutput() method. The DiffPrint.Base class and derivatives should really be renamed out of the empty package.
Unified and context printing now combine nearby changes.
Many people have asked me to change the license to LGPL. My port is based on GNU Diff, which is GPL. Until someone convinces me otherwise, I don't believe that I have the right to change the license. I have corresponded with the copyright holders of GNU Diff, and they are unwilling to change the license. Their position is that the GPL helps force companies to GPL more code in order to use existing GPL code.
The GPL restrictions do not apply to purely dynamically loaded code (otherwise, you would be unable to run GNU diff on a proprietary OS). When I get some time, I (or anyone who beats me to it) will create a plugin API so that applications can compile against an LGPL interface, and load the GPL implementation at runtime. This will also make comparing the performance of diff algorithms very convenient. While all Java classes are dynamically loaded at runtime, directly referenced classes are also used at compile time, and thus might be considered in violation of the GPL.
Publish the revised interface that simplifies doing things with elements that are the same (as opposed to the usual requirement of dealing with just those that are different).