Monday, February 15, 2010
Re: 3.0y (source)
Version 3.0y fixes several regressions introduced in 3.0w related
to the new support for streaming the source file from a FIFO. This
was a long-requested feature and I'm pleased to report that now,
with the fixes in 3.0y, it appears to be working quite well. The
upshot of this feature is that you can encode or decode based on
a compressed source file, without decompressing it to an intermediate
file. In fact, you can expect the same compression with or without
a streaming source file.
There were also reports of the encoder becoming I/O bound in previous
releases, caused by the encoder improperly seeking backwards farther
than the settings (namely, the -B flag) allowed. This is also fixed,
and there's a new test to ensure it won't happen again.
Update: The built-in support for automatic decompression of inputs
is interacting badly with the new source handling logic, results
in poor compression.
Sunday, October 25, 2009
Re: 3.0w (source)
With such a good state of affairs (i.e., no bug reports), I was
able to tackle a top-requested feature (59, 73). Many of you have
asked to be able to encode deltas using a FIFO as the source file,
because it means you can encode/decode from a compressed-on-disk
source file when you don't have enough disk space for a temporary
uncompressed copy. This is now supported, with one caveat.
When decoding with a non-seekable source file, the -B flag, which
determines how much space is dedicated to its block cache, must be
set at least as large as was used for encoding. If the decoder
cannot proceed because -B was not set large enough, you will see:
xdelta3: non-seekable source: copy is too far back (try raising
-B): XD3_INTERNAL
The stream->src->size field has been eliminated. Internally, a new
stream->src->eof_known state has been introduced. This was a big
improvement in code quality because, now, the source and target
files are treated the same with respect to external (de)compression
and several branches of code are gone for good.
Pkgsrc changes:
- Updated HOMEPAGE. Changes were collected from this page.
- Needs GNU make.
- LICENSE is GPLv2
- Added basic support for "make test".
Changes since version 3.0q:
===========================
Xdelta-3.0u release notes:
* New xdelta3 merge command (issue 36)
* Windows stdin/stdout-related fixes (issue 34)
* Fix API-only infinite loop (issue 70)
* Various portability and build fixes (gcc4, DJGPP, MinGW, Big-endian,
Solaris, C++)
* New regression test (yeah!)
Xdelta-3.0t release notes:
* Improves compression by avoiding inefficient small copies (e.g.,
copies of length 4 at a distance >= 2^14 are skipped)
* Fixes an uninitialized array element in -S djw which did not cause
a crash, but caused less than ideal compression and test failures
* Fixes bugs in xdelta3 recode, tests added
* All tests pass under Valgrind
Xdelta-3.0s release notes:
* Faster! Several optimizations to avoid unnecessary arithmetic
* xdelta3 -1 has faster/poorer compression (xdelta3 -2 is the former
configuration)
* -S djw exposes secondary compression levels as -S djw1 .. -S djw9
* Removes "source file too large for external decompression" error check
* API support for transcoding other formats into VCDIFF
Xdelta-3.0r release notes:
* Fixes an encoder crash caused by -S djw (secondary compressor) on
certain data, new tests for code-length overflow
* Adds new recode command for re-encoding a delta with different
secondary compression settings
* Fixes API-specific bugs related to non-blocking calls to
xd3_encode_input and xd3_decode_input
* Adds new examples/encoder_decoder_test.c program for the non-blocking API
compatible with 1.x so it gets it's own package. Based on patch from "BK"
received in PR 36191.
-
Given two binary files, create a compressed binary diff of them. Also
provides the ability to patch the diff back to the original file to create
the new file.