librsync  2.3.4
NEWS.md
1 # NEWS
2 
3 ## librsync 2.3.4
4 
5 Released 2023-02-19
6 
7  * Fix #248 by putting `#include "config.h"` with `/* IWYU pragma: keep */` in
8  most `src/*.c` files. Add `/* IWYU pragma: keep */` to includes in
9  `src/fileutil.c` that are needed on some platforms but not others so we can
10  remove the special exemptions to skip this file for the iwyu and iwyu-fix
11  targets in `CMakeLists.txt`. Also add some typecasts to `rollsum.[ch]` and
12  `patch.c` to silence warnings on Windows. (dbaarda,
13  https://github.com/librsync/librsync/pull/249)
14 
15 ## librsync 2.3.3
16 
17 Released 2023-02-16
18 
19  * Fix #244 Add windows build to stable release. Updated CONTRIBUTING.md
20  release instructions to be clearer and include instructions on how to
21  upload the win64 install artifact from the github "Check" action. (dbaarda,
22  https://github.com/librsync/librsync/pull/245)
23 
24  * Update github actions and fix `iwyu` build target. Update `checkout` and
25  `upload-artifact` to v3. Update `lint.yml` installed packages for fixed
26  iwyu deps. Fix `iwyu` build target to ignore `fileutil.c` and use neater
27  clang output with noisy "note:" output removed. Run `make iwyu-fix` to fix
28  includes for `tests/rabinkarp_perf.c`. (dbaarda,
29  https://github.com/librsync/librsync/pull/243)
30 
31  * Add missing word to README.md. (AvdN,
32  https://github.com/librsync/librsync/pull/237)
33 
34  * Make delta directly process the input stream if it has enough data. Delta
35  operations will only accumulate data into the internal scoop buffer if the
36  input buffer is too small, otherwise it will process the input directly.
37  This makes delta calculations 5%~15% faster by avoiding extra data copying.
38  (dbaarda, https://github.com/librsync/librsync/pull/234)
39 
40  * Add .gitignore for `.cmake` created by LSP on Windows. (sourcefrog,
41  https://github.com/librsync/librsync/pull/232)
42 
43  * Upload build and install artifacts from Github actions. This means we get
44  downloadable build and install artifacts for all platforms from the "Check"
45  action. (sourcefrog, https://github.com/librsync/librsync/pull/231)
46 
47  * Improve documentation so that Doxygen generates more complete documentation
48  with diagrams, renders better, and is more navigable as markdown docs on
49  GitHub. (dbaarda, https://github.com/librsync/librsync/pull/230)
50 
51  * Add github action and make targets for clang-tidy and iwyu. Added
52  `clang-tidy` and `iwyu` make targets for checking code and includes, and
53  `iwyu-fix` for fixing includes. Added `lint.yml` GitHub action to run these
54  checks. Fixed all `clang-tidy` and `iwyu` warnings except for `fileutil.c`
55  with platform related include complications. Added consistent include
56  guards to all headers. Updated and improved documentation in
57  CONTRIBUTING.md to include these changes. (rizsotto, dbaarda,
58  https://github.com/librsync/librsync/pull/229)
59 
60  * Tidy rdiff integration test scripts. Made the filenames and shell arguments
61  for test scripts consistent. (dbaarda,
62  https://github.com/librsync/librsync/pull/227)
63 
64  * Add better cmake build type configuration support. Added `BuildType.cmake`
65  with better support for selecting the build type and making it default to
66  Debug. (dbaarda, https://github.com/librsync/librsync/pull/226)
67 
68  * Fix #215 Migrate from Travis to GitHub Actions. Added a check.yml GitHub
69  action with updated test/platform matrix including full testing of rdiff on
70  Windows. (rizsotto, dbaarda, https://github.com/librsync/librsync/pull/225)
71 
72  * Fix bash test scripts to work on Windows. Tweaked cmake configuration and
73  bash script tests so that full rdiff tests using libpopt from vcpkg work.
74  Running `cmake --target check` with rdiff compiled now works on windows.
75  (dbaarda, https://github.com/librsync/librsync/pull/224)
76 
77  * Remove obsolete unused tests. Removed some obsolete mdfour test data files
78  and `check-rdiff` perl script. (dbaarda,
79  https://github.com/librsync/librsync/pull/223)
80 
81  * Fix warning for later CMake versions. New CMake versions started
82  complaining about the filename `Findlibb2.cmake` not matching the LIBB2
83  variables being used. (rizsotto,
84  https://github.com/librsync/librsync/pull/221)
85 
86 ## librsync 2.3.2
87 
88 Released 2021-04-10
89 
90  * Fix #214 heap corruption for too small kbloom. This could have crashed
91  delta operations for very small files/signatures. Strangely it didn't seem
92  to cause problems for most compilers/platforms, but did trigger errors for
93  new versions of MSVC. (ljusten,
94  https://github.com/librsync/librsync/pull/213)
95 
96  * Fix #207 and add Travis Windows checks and improve compatibility. Turn on
97  `-Wconversion -Wno-sign-conversion` warnings for clang. Add MSVC compiler
98  flags to turn off posix warnings. Make all code compile clean with no
99  warnings on all Travis platforms. Added cmake config checking for windows
100  `io.h` and improve `fileutil.c` for MSVC. Fix broken error handling in
101  `rs_file_copy_cb()`. Improved trace output, making it less spamy and more
102  consistent. Add patch checking for invalid literal lengths. Improve
103  internal variable and argument types. Add explicit type conversions.
104  (dbaarda, https://github.com/librsync/librsync/pull/208)
105 
106  * Fix a bug so patch will now fail returning RS_CORRUPT on encountering a
107  zero length copy command instead of hanging. Make copy_cb() copying more
108  data than requested an assert-fail on debug builds, and a log-warning for
109  release builds. Make trace output a little less spammy about copy_cb()
110  return values. (dbaarda, https://github.com/librsync/librsync/pull/206)
111 
112 ## librsync 2.3.1
113 
114 Released 2020-05-19
115 
116  * Fix #198 cmake popt detection using pkg-config and #199 test scripts on
117  FreeBSD. Fixes and tidies FindPOPT.cmake and Findlibb2.cmake to use
118  pkg-config correctly and behave more like official FindPackage() cmake
119  modules. Makes all test scripts use /bin/sh instead of /bin/bash. (dbaarda,
120  mandree https://github.com/librsync/librsync/pull/200)
121 
122  * Change default block_len to always be a multiple of the blake2b 128 byte
123  blocksize for efficiency. Tidy and update docs to explain using
124  rs_sig_args() and rs_build_hash_table(), add rs_file_*() utils, and
125  document new magic types. Remove really obsolete entries in TODO.md. Update
126  to Doxygen 1.8.16. (dbaarda, https://github.com/librsync/librsync/pull/195)
127 
128  * Improve hashtable performance by adding a small optional bloom filter,
129  reducing max loadfactor from 80% to 70%, Fix hashcmp_count stats to include
130  comparing against empty buckets. This speeds up deltas by 20%~50%.
131  (dbaarda, https://github.com/librsync/librsync/pull/192,
132  https://github.com/librsync/librsync/pull/193,
133  https://github.com/librsync/librsync/pull/196)
134 
135  * Optimize rabinkarp_update() by correctly using unsigned constants and
136  manually unrolling the loop for best performance. (dbaarda,
137  https://github.com/librsync/librsync/pull/191)
138 
139 ## librsync 2.3.0
140 
141 Released 2020-04-07
142 
143  * Bump minor version from 2.2.1 to 2.3.0 to reflect additional rs_sig_args()
144  and strong_len=-1 support.
145 
146  * Add public rs_sig_args() function for getting the recommend signature args
147  from the file size. Added support to rdiff for `--sum-size=-1` to indicate
148  "use minimum size safe against random block collisions". Added warning
149  output for sum-sizes that are too small to be safe. Fixed possible rdiff
150  bug affecting popt parsing on non-little-endian platforms. (dbaarda,
151  https://github.com/librsync/librsync/pull/109)
152 
153  * Fixed yet more compiler warnings for various platforms/compilers.
154  (Adsun701, texierp, https://github.com/librsync/librsync/pull/187,
155  https://github.com/librsync/librsync/pull/188)
156 
157  * Improved cmake popt handling to find popt dependencies using PkgConfig.
158  (ffontaine, https://github.com/librsync/librsync/pull/186)
159 
160  * Tidied internal code and improved tests for netint.[ch], tube.c, and
161  hashtable.h. (dbaarda, https://github.com/librsync/librsync/pull/183
162  https://github.com/librsync/librsync/pull/185).
163 
164  * Improved C99 compatibility. Add `-std=c99 -pedantic` to `CMAKE_C_FLAGS` for
165  gcc and clang. Fix all C99 warnings by making all code C99 compliant. Tidy
166  all CMake checks, `#cmakedefines`, and `#includes`. Fix 64bit support for
167  mdfour checksums (texierp, dbaarda,
168  https://github.com/librsync/librsync/pull/181,
169  https://github.com/librsync/librsync/pull/182)
170 
171  * Usage clarified in rdiff (1) man page. (AaronM04,
172  https://github.com/librsync/librsync/pull/180)
173 
174 ## librsync 2.2.1
175 
176 Released 2019-10-16
177 
178  * Fix #176 hangs calculating deltas for files larger than 4GB. (dbaarda,
179  https://github.com/librsync/librsync/pull/177)
180 
181 ## librsync 2.2.0
182 
183 Released 2019-10-12
184 
185  * Bump minor version from 2.1.0 to 2.2.0 to reflect additional RabinKarp
186  rollsum support.
187 
188  * Fix MSVC builds by adding missing LIBRSYNC_EXPORT to variables in
189  librsync.h, add -DLIBRSYNC_STATIC_DEFINE to the sumset_test target,
190  and correctly install .dll files in the bin directory.
191  (adsun701, https://github.com/librsync/librsync/pull/161)
192 
193  * Add RabinKarp rollsum support and make it the default. RabinKarp is a much
194  better rolling hash, which reduces the risk of hash collision corruption
195  and speeds up delta calculations. The rdiff cmd gets a new `-R
196  (rollsum|rabinkarp)` argument with the default being `rabinkarp`, Use `-R
197  rollsum` to generate backwards-compatible signatures. (dbaarda,
198  https://github.com/librsync/librsync/issues/3)
199 
200  * Use single-byte literal commands for small inserts in deltas. This makes
201  each small insert use 1 less byte in deltas. (dbaarda,
202  https://github.com/librsync/librsync/issues/120)
203 
204  * Fix multiple warnings (cross-)compiling for windows. (Adsun701,
205  https://github.com/librsync/librsync/pull/165,
206  https://github.com/librsync/librsync/pull/166)
207 
208  * Change rs_file_size() to report -1 instead of 0 for unknown file sizes (not
209  a regular file). (dbaarda https://github.com/librsync/librsync/pull/168)
210 
211  * Add cmake BUILD_SHARED_LIBS option for static library support.
212  BUILD_SHARED_LIBS defaults to ON, and can be set to OFF using `ccmake .` to
213  build librsync as a static library. (dbaarda
214  https://github.com/librsync/librsync/pull/169)
215 
216  * Fix compile errors and add .gitignore entries for MSVS 2019. Fixes
217  hashtable.h to be C99 compliant. (ardovm
218  https://github.com/librsync/librsync/pull/170)
219 
220 ## librsync 2.1.0
221 
222 Released 2019-08-19
223 
224  * Bump minor version from 2.0.3 to 2.1.0 to reflect additions to librsync.h.
225 
226  * Fix exporting of private symbols from librsync library. Add export of
227  useful large file functions `rs_file_open()`, `rs_file_close()`, and
228  `rs_file_size()` to librsync.h. Add export of `rs_signature_log_stats()` to
229  log signature hashtable hit/miss stats. Improve rdiff error output.
230  (dbaarda, https://github.com/librsync/librsync/issues/130)
231 
232  * Updated release process to include stable tarballs. (dbaarda,
233  https://github.com/librsync/librsync/issues/146)
234 
235  * Remove redundant and broken `--paranoia` argument from rdiff. (dbaarda,
236  https://github.com/librsync/librsync/issues/155)
237 
238  * Fix memory leak of `rs_signature_t->block_sigs` when freeing signatures.
239  (telles-simbiose, https://github.com/librsync/librsync/pull/147)
240 
241  * Document delta file format. (zmj,
242  https://github.com/librsync/librsync/issues/46)
243 
244  * Fix up doxygen comments. (dbaarda,
245  https://github.com/librsync/librsync/pull/151)
246 
247 ## librsync 2.0.2
248 
249 Released 2018-02-27
250 
251  * Improve CMake install paths configuration (wRAR,
252  https://github.com/librsync/librsync/pull/133) and platform support
253  checking when cross-compiling (fornwall,
254  https://github.com/librsync/librsync/pull/136).
255 
256  * Fix Unaligned memory access for rs_block_sig_init() (dbaarda,
257  https://github.com/librsync/librsync/issues/135).
258 
259  * Fix hashtable_test.c name collision for key_t in sys/types.h on some
260  platforms (dbaarda, https://github.com/librsync/librsync/issues/134)
261 
262  * Format code with consistent style, adding `make tidy` and `make
263  tidyc` targets for reformating code and comments. (dbaarda,
264  https://github.com/librsync/librsync/issues/125)
265 
266  * Removed perl as a build dependency. Note it is still required for some
267  tests. (dbaarda, https://github.com/librsync/librsync/issues/75)
268 
269  * Update RPM spec file for v2.0.2 and fix cmake man page install. (deajan,
270  https://github.com/librsync/librsync/issues/47)
271 
272 ## librsync 2.0.1
273 
274 Released 2017-10-17
275 
276  * Extensively reworked Doxygen documentation, now available at
277  http://librsync.sourcefrog.net/ (Martin Pool)
278 
279  * Removed some declarations from librsync.h that were unimplemented or no
280  longer ever useful: `rs_work_options`, `rs_accum_value`. Remove
281  declaration of unimplemented `rs_mdfour_file()`. (Martin Pool)
282 
283  * Remove shipped `snprintf` code: no longer acutally linked after changing to
284  CMake, and since it's part of C99 it should be widely available.
285  (Martin Pool)
286 
287  * Document that Ninja (http://ninja-build.org/) is supported under CMake.
288  It's a bit faster and nicer than Make. (Martin Pool)
289 
290  * `make check` (or `ninja check` etc) will now build and run the tests.
291  Previously due to a CMake limitation, `make test` would only run existing
292  tests and could fail if they weren't built.
293  (Martin Pool, https://github.com/librsync/librsync/issues/49)
294 
295  * Added cmake options to exclude rdiff target and compression from build.
296  See install documentation for details. Thanks to Michele Bertasi.
297 
298  * `popt` is only needed when `rdiff` is being built. (gulikoza)
299 
300  * Improved large file support for platforms using different variants
301  of `fseek` (`fseeko`, `fseeko64`, `_fseeki64`), `fstat` (`fstat64`,
302  `_fstati64`), and `fileno` (`_fileno`). (dbaarda, charlievieth,
303  gulikoza, marius-nicolae)
304 
305  * `rdiff -s` option now shows bytes read/written and speed. (gulikoza).
306  For delta operations it also shows hashtable match statistics. (dbaarda)
307 
308  * Running rdiff should not overwrite existing files (signatures, deltas and
309  new patched files) by default. If the destination file exists, rdiff will
310  now exit with an error. Add new option -f (--force) to overwrite existing
311  files. (gulikoza)
312 
313  * Improve signature memory allocation (doubling size instead of calling
314  realloc for every sig block) and added support for preallocation. See
315  streaming.md job->estimated_signature_count for usage when using the
316  library. `rdiff` uses this by default if possible. (gulikoza, dbaarda)
317 
318  * Significantly tidied signature handling code and testing, resulting in more
319  consistent error handling behaviour, and making it easier to plug in
320  alternative weak and strong sum implementations. Also fixed "slack delta"
321  support for delta calculation with no signature. (dbaarda)
322 
323  * `stdint.h` and `inttypes.h` from C99 is now required. Removed redundant
324  librsync-config.h header file. (dbaarda)
325 
326  * Lots of small fixes for windows platforms and building with MSVC.
327  (lasalvavida, mbrt, dbaarda)
328 
329  * New open addressing hashtable implementation that significantly speeds up
330  delta operations, particularly for large files. Also fixed degenerate
331  behaviour with large number of duplicate blocks like runs of zeros
332  in sparse files. (dbaarda)
333 
334  * Optional support with cmake option for using libb2 blake2 implementation.
335  Also updated included reference blake2 implementation with bug fixes
336  (dbaarda).
337 
338  * Improved default values for input and output buffer sizes. The defaults are
339  now --input-size=0 and --output-size=0, which will choose recommended
340  default sizes based on the --block-size and the operation being performed.
341  (dbaarda)
342 
343  * Fixed hanging for truncated input files. It will now correctly report an
344  error indicating an unexpected EOF was encountered. (dbaarda,
345  https://github.com/librsync/librsync/issues/32)
346 
347  * Fixed #13 so that faster slack delta's are used for signatures of
348  empty files. (dbaarda,
349  https://github.com/librsync/librsync/issues/13)
350 
351  * Fixed #33 so rs_job_iter() doesn't need calling twice with eof=1.
352  Also tidied and optimized it a bit. (dbaarda,
353  https://github.com/librsync/librsync/issues/33)
354 
355  * Fixed #55 remove excessive rs_fatal() calls, replacing checks for
356  programming errors with assert statements. Now rs_fatal() will only
357  be called for rare unrecoverable fatal errors like malloc failures or
358  impossibly large inputs. (dbaarda,
359  https://github.com/librsync/librsync/issues/55)
360 
361 ## librsync 2.0.0
362 
363 Released 2015-11-29
364 
365 Note: despite the major version bump, this release has few changes and should
366 be binary and API compatible with the previous version.
367 
368  * Bump librsync version number to 2.0, to match the library
369  soname/dylib version.
370  (Martin Pool, https://github.com/librsync/librsync/issues/48)
371 
372 ## librsync 1.0.1 (2015-11-21)
373 
374  * Better performance on large files. (VictorDenisov)
375 
376  * Add comment on usage of rs_build_hash_table(), and assert correct use.
377  Callers must call rs_build_hash_table() after loading the signature,
378  and before calling rs_delta_begin().
379  Thanks to Paul Harris <paulharris@computer.org>
380 
381  * Switch from autoconf to CMake.
382 
383  Thanks to Adam Schubert.
384 
385 ## librsync 1.0.0 (2015-01-23)
386 
387  * SECURITY: CVE-2014-8242: librsync previously used a truncated MD4
388  "strong" check sum to match blocks. However, MD4 is not cryptographically
389  strong. It's possible that an attacker who can control the contents of one
390  part of a file could use it to control other regions of the file, if it's
391  transferred using librsync/rdiff. For example this might occur in a
392  database, mailbox, or VM image containing some attacker-controlled data.
393 
394  To mitigate this issue, signatures will by default be computed with a
395  256-bit BLAKE2 hash. Old versions of librsync will complain about a
396  bad magic number when given these signature files.
397 
398  Backward compatibility can be obtained using the new
399  `rdiff sig --hash=md4`
400  option or through specifying the "signature magic" in the API, but
401  this should not be used when either the old or new file contain
402  untrusted data.
403 
404  Deltas generated from those signatures will also use BLAKE2 during
405  generation, but produce output that can be read by old versions.
406 
407  See https://github.com/librsync/librsync/issues/5
408 
409  Thanks to Michael Samuel <miknet.net> for reporting this and offering an
410  initial patch.
411 
412  * Various build fixes, thanks Timothy Gu.
413 
414  * Improved rdiff man page from Debian.
415 
416  * Improved librsync.spec file for building RPMs.
417 
418  * Fixed bug #1110812 'internal error: job made no progress'; on large
419  files.
420 
421  * Moved hosting to https://github.com/librsync/librsync/
422 
423  * Travis-CI.org integration test at https://travis-ci.org/librsync/librsync/
424 
425  * You can set `$LIBTOOLIZE` before running `autogen.sh`, for example on
426  OS X Homebrew where it is called `glibtoolize`.
427 
428 ## 0.9.7 (released 2004-10-10)
429 
430  * Yet more large file support fixes.
431 
432  * `extern "C"` guards in librsync.h to let it be used from C++.
433 
434  * Removed Debian files from dist tarball.
435 
436  * Changed rdiff to an installed program on "make install".
437 
438  * Refactored delta calculation code to be cleaner and faster.
439 
440  * \#879763: Fixed mdfour to work on little-endian machines which don't
441  like unaligned word access. This should make librsync work on
442  pa-risc, and it makes it slightly faster on ia64.
443 
444  * \#1022764: Fix corrupted encoding of some COPY commands in large
445  files.
446 
447  * \#1024881: Print long integers directly, rather than via casts to
448  double.
449 
450  * Fix printf formats for size_t: both the format and the argument
451  should be cast to long.
452 
453 ## 0.9.6
454 
455  * Large file support fixes.
456 
457  * [v]snprintf or _[v]snprintf autoconf replacement function fix.
458 
459  * Changed installed include file from rsync.h to librsync.h.
460 
461  * Migration to sourceforge for hosting.
462 
463  * Rollsum bugfix that produces much smaller deltas.
464 
465  * Memory leaks bugfix patches.
466 
467  * mdfour bigendian and >512M bugfix, plus optimisations patch.
468 
469  * autoconf/automake updates and cleanups for autoconf 2.53.
470 
471  * Windows compilation patch, heavily modified.
472 
473  * MacOSX compilation patch, modified to autoconf vararg macro fix.
474 
475  * Debian package build scripts patch.
476 
477 ## 0.9.5
478 
479  * Bugfix patch from Shirish Hemant Phatak
480 
481 ## 0.9.4: (library 1.1.0)
482 
483  * Fixes for rsync.h from Thorsten Schuett <thorsten.schuett@zib.de>
484 
485  * RLL encoding fix from Shirish Hemant Phatak <shirish@nustorage.com>
486 
487  * RPM spec file by Peter J. Braam <braam@clusterfs.com>
488 
489  * No (intentional) changes to binary API.
490 
491 ## 0.9.3
492 
493  * Big speed improvements in MD4 routines and generation of weak
494  checksums.
495 
496  * Patch to build on FreeBSD by Jos Backus <josb@cncdsl.com>
497 
498  * Suggestions to build on Solaris 2.6 from Alberto Accomazzi
499  <aaccomazzi@cfa.harvard.edu>
500 
501  * Add rs_job_drive, a generic mechanism for turning the library into
502  blocking mode. rs_whole_run now builds on top of this. The
503  filebuf interface has changed a little to accomodate it.
504 
505  * Generating and loading signatures now generates statistics.
506 
507  * More test cases.
508 
509  * I suspect there may be a bug in rolling checksums, but it probably
510  only causes inefficiency and not corruption.
511 
512  * Portability fixes for alphaev67-dec-osf5.1; at the moment builds
513  but does not work because librsync tries to do unaligned accesses.
514 
515  * Works on sparc64-unknown-linux-gnu (Debian/2.2)
516 
517 ## 0.9.2
518 
519  * Improve delta algorithm so that deltas are actually
520  delta-compressed, rather than faked.
521 
522 ## 0.9.1
523 
524  * Rename the library to `librsync'.
525 
526  * Portability fixes.
527 
528  * Include the popt library, and use it to build rdiff if the library
529  is not present on the host.
530 
531  * Add file(1) magic for rdiff.
532 
533  * Add more to the manual pages.
534 
535  * It's no longer necessary to call rs_buffers_init on a stream before
536  starting to use it: all the internal data is kept in the job, not
537  in the stream.
538 
539  * Rename rs_stream_t to rs_buffers_t, a more obvious name. Pass the
540  buffers to every rs_job_iter() call, rather than setting it at
541  startup. Similarly for all the _begin() functions.
542 
543  * rs_job_new also takes the initial state function.
544 
545  * Return RS_PARAM_ERROR when library is misused.
546 
547 ## 0.9.0
548 
549  * Redesign API to be more like zlib/bzlib.
550 
551  * Put all command-line functions into a single rdiff(1) program.
552 
553  * New magic number `rs6'
554 
555  * Change to using popt for command line parsing.
556 
557  * Use Doxygen for API documentation.
558 
559 ## 0.5.7
560 
561  * Changes stats string format.
562 
563  * Slightly improved test cases
564 
565 ## 0.5.6
566 
567  * Don't install debugging tools into /usr/local/bin; leave them in
568  the source directory.
569 
570  * Fix libhsync to build on (sgi-mips, IRIX64, gcc, GNU Make)
571 
572  * Include README.CVS in tarball
573 
574  * Back out of using libtool and shared libraries, as it is
575  unnecessary at this stage, complicates installation and slows down
576  compilation.
577 
578  * Use mapptr when reading data to decode, so that decoding should
579  have less latency and be more reliable.
580 
581  * Cope better on systems that are missing functions like snprintf.
582 
583 ## 0.5.5
584 
585  * Put genuine search encoding back into the nad algorithm, and
586  further clean up the nad code. Literals are now sent out using a
587  literal buffer integrated with the input mapptr so that data is not
588  copied. Checksums are still calculated from scratch each time
589  rather than by rolling -- this is very slow but simple.
590 
591  * Reshuffle test cases so that they use files generated by hsmapread,
592  rather than the source directory. This makes the tests quicker and
593  more reproducible, hopefully without losing coverage. Further
594  develop the test driver framework.
595 
596  * Add hsdumpsums debugging tool.
597 
598  * Hex strings (eg strong checksums) are broken up by underscores for
599  readability.
600 
601  * Stats now go to the log rather than stdout.
602 
603  * mapptr acts properly when we're skipping/rewinding to data already
604  present in the buffer -- it does a copy if required, but not
605  necessarily real IO.
606 
607 ## 0.5.4
608 
609  * Improved mapptr input code
610 
611  * Turn on more warnings if using gcc
612 
613  * More test cases
614 
615 ## 0.5.3
616 
617  * Improvements to mapptr to make it work better for network IO.
618 
619  * Debug trace code is compiled in unless turned off in ./configure
620  (although most programs will not write it out unless asked.)
621 
622  * Add libhsyncinfo program to show compiled-in settings and version.
623 
624  * Add test cases that run across localhost TCP sockets.
625 
626  * Improved build code; should now build easily from CVS through
627  autogen.sh.
628 
629  * Improved trace code.
630 
631  * Clean up to build on sparc-sun-solaris2.8, and in the process clean
632  up the handling of bytes vs chars, and of building without gcc
633 
634  * Reverse build scripts so that driver.sh calls the particular
635  script.
636 
637 ## 0.5.2
638 
639  * Use mapptr for input.
640 
641  * Implement a new structure for encoding in nad.c. It doesn't
642  encode at the moment, but it's much more maintainable.
643 
644  * More regression cases.
645 
646  * Clean up build process.
647 
648 ## 0.5.0
649 
650  * Rewrite hs_inbuf and hs_encode to make them simpler and more
651  reliable.
652 
653  * Test cases for input handling.
654 
655  * Use the map_ptr idea for input from both streams and files.
656 
657 ## 0.4.1
658 
659  * automake/autoconf now works cleanly when the build directory is
660  different to the source directory.
661 
662  * --enable-ccmalloc works again.
663 
664 ## 0.4.0
665 
666 * A much better regression suite.
667 
668 * CHECKSUM token includes the file's checksum up to the current
669  location, to aid in self-testing.
670 
671 * Various bug fixes, particularly to do with short IO returns.