1.0.1: Aug 01, 2011

* added XZ decompression support

* all warnings were cleaned out flagged by 4.5.2

* convert_delta didn't bail on unidentifiable formats- now does.

1.0
bug fixes, and re-enabling of hr_size option in api.
main changes
* invalid bucket ordering/generation; end result was poisoning of certain buckets (thus unusable for matches lookup), and wasteful
  entries in the hash.
* bit of optimization, inlining in of certain common funcs, change of algo choice for certain searches where applicable

Aside from that, bumped it to 1.0; it's been feature complete for a long while, stuff I'm intending beyond it are refinements of
existing code.

0.7.1
bug fixes, since -Wall wasn't enabled during previous build (it's enabled by default now).
* removed an exit that slipped in via a macro in libdiffball/api.c
* simple_reconstruct now properly catches unknown format id's, and returns UNSUPPORTED_OPT
* cfile bug with flag_lseek_needed, that was doing exactly opposite of what was required
* removed the configure.orig from make dist generation (created due to removing cxx checks in configure.in).
  This accounts for the massive bump in tarball size for 0.7, and decrease back down to sane levels

0.7
* Hard to state this release.  Main work was done in about 2 days time, but it's pretty much across the board.
Cleaned up libdiffball quite a bit, chunked libcfile out of it fex; added header installs also, since I think the api is usable at 
this point (namely, I'm not going to be changing it much).

Added memory alias cfiles; basically allows you to wrap a cfile struct around char *, which is useful if everything is done in memory.
Covers both read, and write.

reworked the hell out of the directory layout; main intention is to split libcfile off sometime in the near future when I 
decide it's time to implement stacked transforms (someday when portage isn't sucking up my time).

Couple of quiet bugs in the background were fixed, nothing anyone ever saw however.  Quite a bit of worst case error memory leaks
were also corrected, since this is the first version where the libs are actually usable (namely cause headers are included).

Aside from that, addition of a rather high level api;
difference(cfile *reference, cfile *version, cfile *out, couple-o-opts)
reconstruct(cfile *base, cfile **patches, unsigned char patch_count, cfile *out, couple-o-opts);
if you don't use the opts, just set them to zero.  automatically assumes sane defaults.

Cleaned up a lot of nifty macro tricks, that gcc doesn't like (iow, gcc4 compilation should fly now, although it'll whine about 
invalid signed/unsigned complaints).

Finally, punted that worthless libtool added c++ check.  Hate that check, slightly more worthless then the fortran check (at 
least the fortan check isn't a failure when unfound).

That's all.
Eat the pudding.

0.6.5
* Bug fixes.  bufferless reconstruction should work without issue now.
* Further code cleanup in preparation for attempting largefile (>2gb) support.
* convert_delta got a new feature; no longer limited to specifying only one patch for conversion.  You can now specify
  < 255 patches, and the patches are collapsed down into a single patch.  Doesn't do any optimization, but at this point 
  there really isn't any optimization done on the command lists.  Expect that sometime prior to 0.7

0.6.2 and under
* Reconstruction via multiple patches is now supported for all supported patch formats- no limitations on mixing formats also.
  I'd suspect a bug or two linger, but not many (been threw a fair amount of testing).
  
  No temps files used, each patch's command are merged into a single buffer in memory, rather then using intermediate files.

  Only limitation is number of registered dcb srcs; 256 is the current max.
  For switching/bdiff/bdelta/gdiff/xdelta, 256 patches are allowed.
  For bdiff, dependant on the version, figure 128- bsdiff is broken down into multiple bz2'd segments, so for reconstructing
  from a bsdiff patch patcher must maintain 2 decompressors into the file.

* Reading from compressed (gzip and bzip2, currently) patches/files is now supported, and pretty well tested.
  *NOTE* this is mainly for patcher, and convert_delta.  Using compressed srcs for differ/diffball isn't sane (due to issues 
  w/ seeking detailed below).

* During reconstruction, it's now possible to reorder commands so that file(s) used to reconstruct the target, are read linearly- 
  in general usage, this isn't needed unless src(s) are compressed, or multiple overlay-format patches are being applied 
  (ex: 2 bsdiff patches being applied).
  
  When a source is compressed, this makes a world of difference- gzip/bzip2 cseek implementations either decompress their 
  way forward to the desired location, or destruct the decompressor, re-init it, and read from the beginning of the cfile to the 
  desired position. 

  That behaviour sucks, but is something of the norm.  zlib's gzseek is implemented this way for instance.
  The commands are reordered such that copies from a src are in sequential order- writes to the reconstructed file are random.
  
  This isn't as quick as I'd like it to be, but its worst case is *much* saner then for dealing w/ seeking in compressed srcs.
  I would suspect it's performance could be tuned a bit, but currently it is better then the alternative.

* Default behaviour for applying single patches is now to _not_ read in the entire patch commands; now it just executes them as 
  it encounters them, unless A) applying multiple patches, B) decompressing files, C) reorder for read seq write random is in effect.
  Decreases memory usage nicely, and doesn't affect performance.

* One Half Pass Correcting alg implementation has been rewritten- basically the same, just minus an extra set of buffers.
  Quicker overall, and some long standing corner cases accessing beyond the buffers has been fixed.
  
* Lots of adjustments to CommandBuffer, and cfile.  Mostly expanding functionality, although there have been optimizations fixes.
  Introduced a DCB_registered_src struct- this is an abstraction to allow for overlay commands, and standard commands.
  Basically, things are saner/cleaner.  That, and a package wide reduction of intermediate buffers.
