The LibXDiff library implements basic and yet complete functionalities to create file differences/patches to both binary and text files. It uses memory files as file abstraction to achieve both performance and portability. For binary files, it implements both (with some modification) the algorithm described in "File System Support for Delta Compression" by Joshua P. MacDonald and the algorithm described in "Fingerprinting By Random Polynomials" by Michael O. Rabin. For text files, it follows directives described in "An O(ND) Difference Algorithm and Its Variations" by Eugene W. Myers. Memory files used by the library are basically a collection of buffers that store the file content.
| Tags | Software Development Libraries Version Control |
|---|---|
| Licenses | LGPL |
| Operating Systems | Windows Windows Windows Windows CE POSIX BSD FreeBSD NetBSD OpenBSD HP-UX IRIX Linux Solaris Unix |
| Implementation | C |
Recent releases


Changes: Improved performance a in few corner case patterns and in cases where there is a huge input file. Some code cleanup.


Changes: A bug in indexing on 64-bit machines was fixed.


Changes: This release implements Rabin's polynomial binary diffs, and improves text diff generation by performing hunk merging and consolidation.


Changes: This release improves the text diff prepare stage to allow a better selection of the lines to be marked as changed.


Changes: The problem with the missing final end-of-line in text diff/patch was fixed. The condition is now correctly handled in a way that makes libxdiff text diff/patch compatible with GNU diff/patch.
An object-oriented, type safe, multi-threaded approach to computer algebra.