"Felta" (Fossil Delta) is a standalone C library version of the core file-delta code from Fossil SCM, tidied up a bit to make it suitable for use as a standalone library, and optionally (off by default) extends it to support multiple integer encodings (bases 10, 16, and 64). It consists of only two files (one .c and one .h), has a small, easy-to-use API, has no dependencies beyond the standard C library (C89 suffices), and in compiled form has a foot print of only about 12kb. This delta format is known to perform very well in the Fossil SCM.
The delta format is described here:
This version supports an option to use different encodings for numbers, but is by default compatible with that code. See felta_create() for the details.
License: Simplified BSD License (also known as the "2-Clause License" or "FreeBSD License")
Download: see the download page.
Primary properties of this library:
- Can deltify text and binary.
- Has a trivial interface, with just a small handful of functions.
- Can generate/apply delta output to client-allocated char arrays or to arbitrary destinations via callback functions. (Inputs must come from arrays.)
- Input must come from memory - it cannot be streamed in chunks. This costs memory but provides better compression than streaming delta generators for some cases.
- Limited to signed 32-bit ranges (2GB) on inputs and outputs "for historical reasons" (and because there's no compelling reason to change it).