summaryrefslogtreecommitdiff
path: root/xdelta3/www/xdelta3.html
diff options
context:
space:
mode:
Diffstat (limited to 'xdelta3/www/xdelta3.html')
-rwxr-xr-xxdelta3/www/xdelta3.html89
1 files changed, 0 insertions, 89 deletions
diff --git a/xdelta3/www/xdelta3.html b/xdelta3/www/xdelta3.html
deleted file mode 100755
index 3bddfd9..0000000
--- a/xdelta3/www/xdelta3.html
+++ /dev/null
@@ -1,89 +0,0 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3<head>
4 <title>Xdelta3 delta compression library (BETA)</title>
5 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
6 <link rel="stylesheet" type="text/css" href="xdelta3.css"/>
7</head>
8<body>
9
10<!-- $Format: "$WWWLeftNavBar$" $ --!>
11<table cellpadding="20px" width=700> <tr> <td class="leftbdr" valign=top height=600 width=100> <div class="leftbody"> <h1>Xdelta</h1> <a href="xdelta3.html">overview</a><br> <a href="xdelta3-cmdline.html">command&nbsp;line</a><br> <a href="xdelta3-api-guide.html">api&nbsp;guide</a><br> <br><a href="http://xdelta.org">xdelta.org</a></h2> </div> </td> <td valign=top width=500>
12
13<!-- Copyright (C) 2003 and onward. Joshua P. MacDonald --!>
14
15<h1>version three?</h1>
16
17Xdelta3 is the third and latest release of Xdelta, which is a set of tools and
18APIs for reading and writing compressed <em>deltas</em>. Deltas encode the
19differences between two versions of a document. This release features a
20completely new compression engine, several algorithmic improvements, a fully
21programmable interface modelled after zlib, in addition to a command-line
22utility, use of the RFC3284 (VCDIFF) encoding, a python extension, and now
2364-bit support.<p>
24
25Xdelta3 is <em>tiny</em>. A minimal, fully functional VCDIFF decoder library
26pipes in at 16KB. The command-line utility complete with encoder/decoder
27tools, external compression support, and the <code>djw</code> secondary
28compression routines, is just under 60KB, slightly larger than a
29<code>gzip</code> executable.<p>
30
31Xdelta3 has few dependencies because it's capable of stand-alone file
32compression (i.e., what zlib and gzip do). The stand-alone compression of
33Xdelta3/VCDIFF is 10-20% worse than <code>gzip</code>, you may view this as
34paying for the convenience-cost of having a single encoding, tool, and api
35designed to do both <em>data-compression</em> and <em>differencing</em> at
36once.<p>
37
38The Xdelta3 command-line tool, <code>xdelta3</code>, supports several
39convenience routines. Delta compression works when the two inputs are
40similar, but often we would like to compute the difference between two
41compressed documents. <code>xdelta3</code> has (optional) support to
42recognize externally compressed inputs and process them correctly. This
43support is facilitated, in part, using the VCDIFF <em>application header</em>
44field to store <code>xdelta3</code> meta-data, which includes the original
45file names (if any) and codes to incidate whether the inputs were externally
46compressed. Applications may provide their own application header.<p>
47
48<h1>what are version one and version two?</h1>
49
50Many shortcomings in the Xdelta1.x release are fixed in its replacement,
51Xdelta3. Xdelta1 used both a simplistic compression algorithm and a
52simplistic encoding. For example, Xdelta1 compresses the entire document at
53once and thus uses memory proportional to the input size.<p>
54
55The Xdelta1 compression engine made no attempt to find matching strings
56smaller than say 16 or 32 bytes, and the encoding does not attempt to
57efficiently encode the <code>COPY</code> and <code>ADD</code> instructions
58which constitute a delta. For documents with highly similar data, however,
59these techniques degrade performance by a relatively insignificant amount.
60(Xdelta1.x compresses the delta with Zlib to improve matters, but this
61dependency stinks.)<p>
62
63Despite leaving much to be desired, Xdelta1 showed that you can do well
64without great complexity; as it turns out, the particulars of the compression
65aengine are a relatively insignificant compared to the difficulty of
66programming an application that uses delta-compression. Better solve that
67first.<p>
68
69What we want are <em>systems</em> that manage compressed storage and network
70communication. The second major release, Xdelta2, addresses these issues.
71Xdelta2 features a storage interface -- part database and part file system --
72which allows indexing and labeling compressed documents. The feature set is
73similar to RCS. The Xdelta2 interface supports efficient algorithms for
74<em>extracting</em> deltas between any pair of versions in storage. The
75extraction technique also does not rely on hierarchy or centralizing the
76namespace, making the techniques ideal for peer-to-peer communication and
77proxy architectures. I am grateful to Mihut Ionescu for implementing the
78Xproxy HTTP delta-compressing proxy system based on this interface and
79studying the benefits of delta-compression in that context. Xdelta2 stressed
80the Xdelta1 compression engine beyond its limits; so Xdelta3 is designed as
81the ideal replacement. The Xdelta2 techniques are yet to be ported to the new
82implementation.<p>
83
84</td>
85</tr>
86</table>
87
88</body>
89</html>