7 * Improve CMake install paths configuration (wRAR,
9 checking when cross-compiling (fornwall,
12 * Fix Unaligned memory access
for rs_block_sig_init() (dbaarda,
15 * Fix hashtable_test.c name collision
for key_t in sys/types.h on some
16 platforms (dbaarda, https:
18 * Format code with consistent style, adding `make tidy` and `make
19 tidyc` targets
for reformating code and comments. (dbaarda,
22 * Update RPM spec file
for v2.0.2 and fix cmake man page install. (deajan,
29 * Extensively reworked Doxygen documentation, now available at
32 * Removed some declarations from librsync.h that were unimplemented or no
33 longer ever useful: `rs_work_options`, `rs_accum_value`. Remove
34 declaration of unimplemented `rs_mdfour_file()`. (Martin Pool)
36 * Remove shipped `snprintf` code: no longer acutally linked after changing to
37 CMake, and since it
's part of C99 it should be widely available.
40 * Document that Ninja (http://ninja-build.org/) is supported under CMake.
41 It's a bit faster and nicer than Make. (Martin Pool)
43 * `make check` (or `ninja check` etc) will now build and run the tests.
44 Previously due to a CMake limitation, `make test` would only run existing
45 tests and could fail
if they weren
't built.
46 (Martin Pool, https://github.com/librsync/librsync/issues/49)
48 * Added cmake options to exclude rdiff target and compression from build.
49 See install documentation for details. Thanks to Michele Bertasi.
51 * `popt` is only needed when `rdiff` is being built. (gulikoza)
53 * Improved large file support for platforms using different variants
54 of `fseek` (`fseeko`, `fseeko64`, `_fseeki64`), `fstat` (`fstat64`,
55 `_fstati64`), and `fileno` (`_fileno`). (dbaarda, charlievieth,
56 gulikoza, marius-nicolae)
58 * `rdiff -s` option now shows bytes read/written and speed. (gulikoza).
59 For delta operations it also shows hashtable match statistics. (dbaarda)
61 * Running rdiff should not overwrite existing files (signatures, deltas and
62 new patched files) by default. If the destination file exists, rdiff will
63 now exit with an error. Add new option -f (--force) to overwrite existing
66 * Improve signature memory allocation (doubling size instead of calling
67 realloc for every sig block) and added support for preallocation. See
68 streaming.md job->estimated_signature_count for usage when using the
69 library. `rdiff` uses this by default if possible. (gulikoza, dbaarda)
71 * Significantly tidied signature handling code and testing, resulting in more
72 consistent error handling behaviour, and making it easier to plug in
73 alternative weak and strong sum implementations. Also fixed "slack delta"
74 support for delta calculation with no signature. (dbaarda)
76 * `stdint.h` and `inttypes.h` from C99 is now required. Removed redundant
77 librsync-config.h header file. (dbaarda)
79 * Lots of small fixes for windows platforms and building with MSVC.
80 (lasalvavida, mbrt, dbaarda)
82 * New open addressing hashtable implementation that significantly speeds up
83 delta operations, particularly for large files. Also fixed degenerate
84 behaviour with large number of duplicate blocks like runs of zeros
85 in sparse files. (dbaarda)
87 * Optional support with cmake option for using libb2 blake2 implementation.
88 Also updated included reference blake2 implementation with bug fixes
91 * Improved default values for input and output buffer sizes. The defaults are
92 now --input-size=0 and --output-size=0, which will choose recommended
93 default sizes based on the --block-size and the operation being performed.
96 * Fixed hanging for truncated input files. It will now correctly report an
97 error indicating an unexpected EOF was encountered. (dbaarda,
98 https://github.com/librsync/librsync/issues/32)
100 * Fixed #13 so that faster slack delta's are used
for signatures of
101 empty files. (dbaarda,
104 * Fixed #33 so
rs_job_iter() doesn
't need calling twice with eof=1.
105 Also tidied and optimized it a bit. (dbaarda,
106 https://github.com/librsync/librsync/issues/33)
108 * Fixed #55 remove excessive rs_fatal() calls, replacing checks for
109 programming errors with assert statements. Now rs_fatal() will only
110 be called for rare unrecoverable fatal errors like malloc failures or
111 impossibly large inputs. (dbaarda,
112 https://github.com/librsync/librsync/issues/55)
118 Note: despite the major version bump, this release has few changes and should
119 be binary and API compatible with the previous version.
121 * Bump librsync version number to 2.0, to match the library
122 soname/dylib version.
123 (Martin Pool, https://github.com/librsync/librsync/issues/48)
125 ## librsync 1.0.1 (2015-11-21)
127 * Better performance on large files. (VictorDenisov)
129 * Add comment on usage of rs_build_hash_table(), and assert correct use.
130 Callers must call rs_build_hash_table() after loading the signature,
131 and before calling rs_delta_begin().
132 Thanks to Paul Harris <paulharris@computer.org>
134 * Switch from autoconf to CMake.
136 Thanks to Adam Schubert.
138 ## librsync 1.0.0 (2015-01-23)
140 * SECURITY: CVE-2014-8242: librsync previously used a truncated MD4
141 "strong" check sum to match blocks. However, MD4 is not cryptographically
142 strong. It's possible that an attacker who can control the contents of one
143 part of a file could use it to control other regions of the file,
if it
's
144 transferred using librsync/rdiff. For example this might occur in a
145 database, mailbox, or VM image containing some attacker-controlled data.
147 To mitigate this issue, signatures will by default be computed with a
148 256-bit BLAKE2 hash. Old versions of librsync will complain about a
149 bad magic number when given these signature files.
151 Backward compatibility can be obtained using the new
152 `rdiff sig --hash=md4`
153 option or through specifying the "signature magic" in the API, but
154 this should not be used when either the old or new file contain
157 Deltas generated from those signatures will also use BLAKE2 during
158 generation, but produce output that can be read by old versions.
160 See https://github.com/librsync/librsync/issues/5
162 Thanks to Michael Samuel <miknet.net> for reporting this and offering an
165 * Various build fixes, thanks Timothy Gu.
167 * Improved rdiff man page from Debian.
169 * Improved librsync.spec file for building RPMs.
171 * Fixed bug #1110812 'internal error: job made no progress
'; on large
174 * Moved hosting to https://github.com/librsync/librsync/
176 * Travis-CI.org integration test at https://travis-ci.org/librsync/librsync/
178 * You can set `$LIBTOOLIZE` before running `autogen.sh`, for example on
179 OS X Homebrew where it is called `glibtoolize`.
181 ## 0.9.7 (released 2004-10-10)
183 * Yet more large file support fixes.
185 * `extern "C"` guards in librsync.h to let it be used from C++.
187 * Removed Debian files from dist tarball.
189 * Changed rdiff to an installed program on "make install".
191 * Refactored delta calculation code to be cleaner and faster.
193 * \#879763: Fixed mdfour to work on little-endian machines which don't
194 like unaligned word access. This should make librsync work on
195 pa-risc, and it makes it slightly faster on ia64.
197 * \#1022764: Fix corrupted encoding of some COPY commands in large
200 * \#1024881: Print
long integers directly, rather than via casts to
203 * Fix printf formats
for size_t: both the format and the argument
204 should be cast to
long.
208 * Large file support fixes.
210 * [v]snprintf or _[v]snprintf autoconf replacement
function fix.
212 * Changed installed include file from rsync.h to librsync.h.
214 * Migration to sourceforge
for hosting.
216 * Rollsum bugfix that produces much smaller deltas.
218 * Memory leaks bugfix patches.
220 * mdfour bigendian and >512M bugfix, plus optimisations patch.
222 * autoconf/automake updates and cleanups
for autoconf 2.53.
224 * Windows compilation patch, heavily modified.
226 * MacOSX compilation patch, modified to autoconf vararg macro fix.
228 * Debian package build scripts patch.
232 * Bugfix patch from Shirish Hemant Phatak
234 ## 0.9.4: (library 1.1.0)
236 * Fixes
for rsync.h from Thorsten Schuett <thorsten.schuett@zib.de>
238 * RLL encoding fix from Shirish Hemant Phatak <shirish@nustorage.com>
240 * RPM spec file by Peter J. Braam <braam@clusterfs.com>
242 * No (intentional) changes to binary API.
246 * Big speed improvements in MD4 routines and generation of weak
249 * Patch to build on FreeBSD by Jos Backus <josb@cncdsl.com>
251 * Suggestions to build on Solaris 2.6 from Alberto Accomazzi
252 <aaccomazzi@cfa.harvard.edu>
254 * Add
rs_job_drive, a
generic mechanism
for turning the library into
255 blocking mode. rs_whole_run now builds on top of
this. The
256 filebuf interface has changed a little to accomodate it.
258 * Generating and loading signatures now generates statistics.
262 * I suspect there may be a bug in rolling checksums, but it probably
263 only causes inefficiency and not corruption.
265 * Portability fixes
for alphaev67-dec-osf5.1; at the moment builds
266 but does not work because librsync tries to
do unaligned accesses.
268 * Works on sparc64-unknown-linux-gnu (Debian/2.2)
272 * Improve delta algorithm so that deltas are actually
273 delta-compressed, rather than faked.
277 * Rename the library to `librsync
'.
281 * Include the popt library, and use it to build rdiff if the library
282 is not present on the host.
284 * Add file(1) magic for rdiff.
286 * Add more to the manual pages.
288 * It's no longer necessary to call rs_buffers_init on a stream before
289 starting to use it: all the
internal data is kept in the job, not
292 * Rename rs_stream_t to
rs_buffers_t, a more obvious name. Pass the
293 buffers to every
rs_job_iter() call, rather than setting it at
294 startup. Similarly
for all the _begin() functions.
296 * rs_job_new also takes the initial state
function.
302 * Redesign API to be more like zlib/bzlib.
304 * Put all command-line functions into a single rdiff(1) program.
306 * New magic number `rs6
'
308 * Change to using popt for command line parsing.
310 * Use Doxygen for API documentation.
314 * Changes stats string format.
316 * Slightly improved test cases
320 * Don't install debugging tools into /usr/local/bin; leave them in
321 the source directory.
323 * Fix libhsync to build on (sgi-mips, IRIX64, gcc, GNU Make)
325 * Include README.CVS in tarball
327 * Back out of
using libtool and shared libraries, as it is
328 unnecessary at
this stage, complicates installation and slows down
331 * Use mapptr when reading data to decode, so that decoding should
332 have less latency and be more reliable.
334 * Cope better on systems that are missing functions like snprintf.
338 * Put genuine search encoding back into the nad algorithm, and
339 further clean up the nad code. Literals are now sent out
using a
340 literal buffer integrated with the input mapptr so that data is not
341 copied. Checksums are still calculated from scratch each time
342 rather than by rolling --
this is very slow but simple.
344 * Reshuffle test cases so that they use files generated by hsmapread,
345 rather than the source directory. This makes the tests quicker and
346 more reproducible, hopefully without losing coverage. Further
347 develop the test driver framework.
349 * Add hsdumpsums debugging tool.
351 * Hex strings (eg strong checksums) are broken up by underscores
for
354 * Stats now go to the log rather than stdout.
356 * mapptr acts properly when we
're skipping/rewinding to data already
357 present in the buffer -- it does a copy if required, but not
362 * Improved mapptr input code
364 * Turn on more warnings if using gcc
370 * Improvements to mapptr to make it work better for network IO.
372 * Debug trace code is compiled in unless turned off in ./configure
373 (although most programs will not write it out unless asked.)
375 * Add libhsyncinfo program to show compiled-in settings and version.
377 * Add test cases that run across localhost TCP sockets.
379 * Improved build code; should now build easily from CVS through
382 * Improved trace code.
384 * Clean up to build on sparc-sun-solaris2.8, and in the process clean
385 up the handling of bytes vs chars, and of building without gcc
387 * Reverse build scripts so that driver.sh calls the particular
392 * Use mapptr for input.
394 * Implement a new structure for encoding in nad.c. It doesn't
395 encode at the moment, but it
's much more maintainable.
397 * More regression cases.
399 * Clean up build process.
403 * Rewrite hs_inbuf and hs_encode to make them simpler and more
406 * Test cases for input handling.
408 * Use the map_ptr idea for input from both streams and files.
412 * automake/autoconf now works cleanly when the build directory is
413 different to the source directory.
415 * --enable-ccmalloc works again.
419 * A much better regression suite.
421 * CHECKSUM token includes the file's checksum up to the current
422 location, to aid in
self-testing.
424 * Various bug fixes, particularly to
do with
short IO returns.
Description of input and output buffers.
rs_result rs_job_iter(rs_job_t *job, rs_buffers_t *buffers)
Run a rs_job state machine until it blocks (RS_BLOCKED), returns an error, or completes (RS_DONE)...
Bad value passed in to library, probably an application bug.
rs_result rs_job_drive(rs_job_t *job, rs_buffers_t *buf, rs_driven_cb in_cb, void *in_opaque, rs_driven_cb out_cb, void *out_opaque)
Actively process a job, by making callbacks to fill and empty the buffers until the job is done...