XDelta NEWS -- history of user-visible changes. -*- Text -*-
$Date: Fri, 29 Jun 2001 06:01:08 -0700 $
$ReleaseVersion: 1.1.3 $
Please send bug reports to xdelta-bugs@XCF.Berkeley.EDU. See the file
`README' for a description of how to report bugs.
** Changes since version 1.1.2
* Correct error message format for the case when gzread fails trying
to automatically decompress a corrupted GZIP file. The situation
itself--corrupt GZIP files--should be dealt with the -p (--pristine)
option, which disables GZIP file recognition. Reported by Ben
* Apply a patch from Klaus Dittrich for building on HPUX with the
native compiler. There is now a script called "contrib/build_hpux".
** Changes since version 1.1.1
* This code release is a distant fork of the 2.0 release. It will
hopefully be replaced.
* When 'patch' supplies its default TO file name recorded in the
delta, it still generates a unique file name to avoid overwriting an
existing copy. Use the 'xdelta info' command to see what file names
are contained in the delta.
* The code for writing patches to stdout was broken in the case where
gzip compression is used. Writing patches to stdout has therefore
been disabled. The problem is a limitation in the gzdopen/gzwrite
functions provided by zlib--you cannot determine how many bytes have
been written to the file descriptor without dup-ing the FD
beforehand and then lseek-ing afterwards, which does not work
correctly if the output file is not seekable.
* By default, Xdelta uses a hard-coded 16 byte block size. If you're
working with large files, try #undef XDELTA_HARDCODE_SIZE in
xdelta.h then use -s BLOCKSIZE (--blocksize=BLOCKSIZE), which should
be a power of 2.
* New test program in the 'test' subdirectory, which runs comparisons
against "diff --rcs -a" and also verifies the "xdelta patch"
* Incorporate DJGPP patches from Richard Dawe <firstname.lastname@example.org>.
You can find his versions directly at:
* Updated xdelta(1) man page.
* Updated autoconf (2.50), automake (1.4-p4), libtool (1.4) scripts,
which includes updated config.guess and config.sub scripts.
* Correct some backward compatibility issues: strcmp() was not being
tested == 0 for formats older than 1.0.4.
* Update GLIB version requirement, now 1.2.8.
* We really need support for 64bit file sizes... perhaps the next
** Changes since version 1.1.0
* No one was were able to build the 1.1.0 release because it depended
on a version of glib which will not be distributed for some time.
This version backs out those dependencies and now requires
** Changes since version 1.0.6
* The 64M limit on file sizes has been lifted. File lengths are now
limited by the size of a 32-bit integer.
* The internal data structures were changed and some of the
experimental bits of the interface have been moved out of libxdelta,
resulting in a simpler interface. Old patch files are still
** Changes since version 1.0.5
* There are 8 bytes of space in the patch format's header that are
reserved for future use. They are not currently used, but were also
not being initialized, making it possible for two deltas produced in
the same manner to differ. This was exposed by comparing deltas
produced between the same files on Windows and Linux. With this
patch, the results should be identical.
** Changes since version 1.0.4
* The code now compiles natively under Windows. I used MS VC++ 5.0.
It depends on glib and zlib, but I don't feel like documenting
the build process yet. I have had some trouble with the zlib DLLs
and had to build my own, so you can't build it yourself yet. There
is a pre-built version at
* Many changes required to keep Xdelta working with PRCS 2. Mostly
this involved keeping up to date with some code that is shared
between the two. All the shared code is now in the "libedsio"
subdirectory, which stands for "Error Delivery and Serialized IO".
** Changes since version 1.0.3
* Slight change in file format to improve detection of and error
messages regarding corrupt deltas (specifically, those left behing
when an xdelta process is killed while computing a delta). This
means 1.0.0-1.0.3 will not read these new deltas, they will report a
bad magic number.
* Improve several error messages related to corrupt deltas.
** Changes since version 1.0.2
* Fix a few bugs, especially one related to the implementation of -m,
and a couple more which were shaken out by testing on a pair of
emacs releases (~55M each). These changes only affect the xdelta
application, the library is unchanged.
* Add a new command `xdelta info' that lists information about a
delta, for example:
$ xdelta info some.patch
xdelta: version 1.0.3 found patch version 1.0 in some.patch
xdelta: patch contents are compressed
xdelta: patch from: from
xdelta: patch from length: 53309440
xdelta: patch from md5: c0ddcb6904d40da7cf1eae5e6bdbbc01
xdelta: patch to: to
xdelta: patch to length: 55377920
xdelta: patch to md5: 00b3dd4d1a9b450bc5b8991b183013fb
xdelta: patch insert length: 2436426
xdelta: patch inst count: 253649
** Changes since version 1.0.1
* Fix minor typos, and build improvements. There is now a gtk-style
'xdelta-config' program and autoconf macro to locate the library.
** Changes since version 1.0.0
* Fix incorrect usage report in --help output for the patch command.
* Abort when directories are specified, there is no recursive mode.
* Now requires glib-1.1.5.
* The new ``pristine'' option (-p, --pristine) disables
automatic uncompression of compressed input data, and is for use
when data integrity is being externally verified. This enables a
tool written by Manish Singh (email@example.com) to compute deltas
between the Debian dpkg utility's .deb format.
* A draft paper describing its algorithms, rational, advanced
features, and future work is now available at
** Changes since version 0.24
* This version is a complete rewrite, and removes some of the features
available in version 0. Featuring:
- A completely new and much improved library interface. This code is
a complete rewrite.
- An optimized implementation of the XDelta algorithm.
- A drastic memory reduction.
- The library stream-processes files where possible and uses a page-
based interface when seeking is required (allowing the application
to run in bounded memory on large files).
- There is now a little documentation. A man page and the
beginnings of texinfo documentation.
- Includes several advanced features used by PRCS version 2, see the
documentation for more information.
- Includes a minimal implementation of the Rsync algorithm, also used
by PRCS version 2.
- Uses an abstract file handle interface, the library has very few
system dependencies. This allows the library client to compute
MD5 checksums in a single-pass as XDelta reads files, use pre-
computed checksums, or disable checksum verification entirely.
- Compression and file-unarchival have been removed from the library,
these features are orthogonal.
At the application level:
- GDBM archive experiment has been removed. This functionality is
implemented directly in PRCS version 2 using the present library
- Base 64 encoding support has been removed for technical reasons.
- Can no longer accept patches from stdin, due to the same
technical reasons (the patch instruction index is stored at the
end of the file, requiring seeking).
- Automatic detection and un-archival of RPM and dpkg file formats
has been removed. Automatic uncompression of gzipped files is
- The GIMP plugin is no longer supported.