google / diff-match-patch

Diff Match Patch is a high-performance library in multiple languages that manipulates plain text.
Apache License 2.0
7.27k stars 1.09k forks source link

Repo status: has this been abandoned? Are there active forks? #122

Open derekperkins opened 2 years ago

derekperkins commented 2 years ago

We're about 2.5 years out from the last commit. There are seemingly viable PRs to be merged, but no activity from maintainers. Is there an active fork somewhere?

williamstein commented 1 year ago

Hi @derekperkins for what it is worth I care about this library and use it in production for all realtime sync for https://cocalc.com. I maintain a slightly modified dmp.js here

https://github.com/sagemathinc/cocalc/blob/master/src/packages/util/dmp.js

with some minor fixes for edge cases I've hit. I may end up creating a fork at some point to revive this project. I've also been thinking about writing a new implementation of the algorithm in zig (+compiled to wasm), but we'll see if that makes sense, as Javascript is pretty fast.

burnit66 commented 1 year ago

Hi @williamstein I'm curious what edge cases you've run into? I am encountering an issue when comparing superscripts. Interested to see if this case is covered in your modifications.

Text 1
(I(X))u
Text 2
(I(X))<sub>u</sub>
Compare output
(I(X))<ins><s</ins>u<ins>b>u</sub></ins>

As you can see, the html tag for subscript has been flagged as a diff the return is broken html

williamstein commented 1 year ago

I'm curious what edge cases you've run into?

They were issues involving the timeout implementation, and I think also some really bad performance in edge cases, e.g., shifting a 1MB string over by 1. When using this algorithm in production, especially on a server, these become important.

Thanks for sharing your example. It would be easier for me to test my code on it if you could give a snippet of javascript using dmp that I can just run, importing my slightly modified dmp instead of the official one. If it really is a bug, I'll be very interested in that and hopefully maybe have an idea how to fix it.