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.