XDelta NEWS -- history of user-visible changes. -*- Text -*-
$Date: Sun, 24 Feb 2002 11:31:12 -0800 $
$ReleaseVersion: 1.1.4 $

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.3

* Add an implementation of xdp_generator_free() for users of the
  libxdelta API.  Previously there were no such users of the 1.x API,
  but Elliot Lee <sopwith@redhat.com> has written a program for
  providing delta operations on RPM files.  See http://@@@

* The man page now documents return values.

** 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
  Escoto.

* 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"
  command.

* Incorporate DJGPP patches from Richard Dawe <richdawe@bigfoot.com>.
  You can find his versions directly at:

      ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/xdlt112b.zip
      ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/xdlt112s.zip

* 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
  version?


** 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
  glib-1.2.1.


** 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
  supported.


** 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

     ftp://ftp.xcf.berkeley.edu/pub/xdelta/xdelta-1.0.5.win32.zip

* 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 (yosh@gimp.org) 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
  ftp://ftp.xcf.berkeley.edu/pub/xdelta/xdelta.ps.

** 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
    interface.
  - 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
    still supported.
  - The GIMP plugin is no longer supported.
