Announcing the BETA release of Xdelta version 2. This release builds on earlier functionality to provide a complete system for managing delta-compressed storage and network transport. Using the Xdelta system, you can easily incorporate this functionality into your application. The system offers improvements over the use of RCS for back-end delta-compressed storage, common in version control systems, and also provides primitive support for delta-compressed transport in a manner similar to CVSup. This release is accompanied by a technical report describing the system and comparing it with RCS and GNU diff.
The first version of Xdelta, released in 1998, featured the delta-compression algorithm alone, including diff- and patch-like utilities. Xdelta uses a fast, linear-time, and linear-space algorithm that works well on both binary and text files. The Xdelta algorithm is based on the Rsync algorithm by Andrew Tridgell and Paul Mackerras. This BETA release does not include the same console-based utilities for computing and applying deltas, nor does it support the Xdelta-1.x file formats, although these interfaces may be re-incorporated at a later date.
This release of Xdelta presents an application-level file system based
on the Berkeley Database called the Xdelta File System (XDFS). XDFS
uses underlying database transactions for their ACID semantics
(Atomicity, Consistency, Isolation, and Durability), making it a
reliable solution for delta-compressed file storage. XDFS avoids the use of rename() for atomicity, and consequently insertion-time performance does not degrade with the total size of the archive
(unlike RCS). The XDFS directory interface uses the underlying
database access methods (B+tree, Hash, and Queue) for indexing and naming versions and allows secondary indexing.
The XDFS interface supports delta-compressed transport through a feature that allows deltas to be extracted directly from storage. Much like CVSup, XDFS can extract deltas from storage without using the delta compression algorithm. Unlike CVSup, however, XDFS can extract deltas between versions other than the ones used in storage. The complex task of combining and inverting storage deltas is hidden from the application programmer. XDFS does not itself implement any network transport protocols, although an HTTP delta-compression proxy has already been implemented using XDFS.
This release is a step forward in the progress of PRCS, the Project Revision Control System, towards a client/server architecture. XDFS will serve as the foundation for the next-generation PRCS repository. In addition to version control systems, XDFS is intended for use by software distribution and package management systems. In addition to an application programming interface, this BETA release includes a console application that exports basic RCS-like functionality and several test applications that demonstrate other features.
Xdelta is released under a BSD-style license. This marks a departure from previous releases, which were made available under the GNU Public License.
More information about Xdelta is available at the Xdelta home page:
Xdelta is being hosted at SourceForge. Project administration is available through the SourceForge web site:
The release is directly available here:
The aforementioned technical report, my Master's thesis:
A paper by Mihut Ionescu and Matthew Delco describing an HTTP proxy written using XDFS:
The Berkeley Database is available from Sleepycat Software, Inc.
Xdelta is written by Josh MacDonald. You can reach me by email at email@example.com.