librsync  2.0.2
NEWS.md
1 # librsync NEWS
2 
3 ## librsync 2.0.2
4 
5 Released 2018-02-27
6 
7  * Improve CMake install paths configuration (wRAR,
8  https://github.com/librsync/librsync/pull/133) and platform support
9  checking when cross-compiling (fornwall,
10  https://github.com/librsync/librsync/pull/136).
11 
12  * Fix Unaligned memory access for rs_block_sig_init() (dbaarda,
13  https://github.com/librsync/librsync/issues/135).
14 
15  * Fix hashtable_test.c name collision for key_t in sys/types.h on some
16  platforms (dbaarda, https://github.com/librsync/librsync/issues/134)
17 
18  * Format code with consistent style, adding `make tidy` and `make
19  tidyc` targets for reformating code and comments. (dbaarda,
20  https://github.com/librsync/librsync/issues/125)
21 
22  * Update RPM spec file for v2.0.2 and fix cmake man page install. (deajan,
23  https://github.com/librsync/librsync/issues/47)
24 
25 ## librsync 2.0.1
26 
27 Released 2017-10-17
28 
29  * Extensively reworked Doxygen documentation, now available at
30  http://librsync.sourcefrog.net/ (Martin Pool)
31 
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)
35 
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.
38  (Martin Pool)
39 
40  * Document that Ninja (http://ninja-build.org/) is supported under CMake.
41  It's a bit faster and nicer than Make. (Martin Pool)
42 
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)
47 
48  * Added cmake options to exclude rdiff target and compression from build.
49  See install documentation for details. Thanks to Michele Bertasi.
50 
51  * `popt` is only needed when `rdiff` is being built. (gulikoza)
52 
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)
57 
58  * `rdiff -s` option now shows bytes read/written and speed. (gulikoza).
59  For delta operations it also shows hashtable match statistics. (dbaarda)
60 
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
64  files. (gulikoza)
65 
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)
70 
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)
75 
76  * `stdint.h` and `inttypes.h` from C99 is now required. Removed redundant
77  librsync-config.h header file. (dbaarda)
78 
79  * Lots of small fixes for windows platforms and building with MSVC.
80  (lasalvavida, mbrt, dbaarda)
81 
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)
86 
87  * Optional support with cmake option for using libb2 blake2 implementation.
88  Also updated included reference blake2 implementation with bug fixes
89  (dbaarda).
90 
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.
94  (dbaarda)
95 
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)
99 
100  * Fixed #13 so that faster slack delta's are used for signatures of
101  empty files. (dbaarda,
102  https://github.com/librsync/librsync/issues/13)
103 
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)
107 
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)
113 
114 ## librsync 2.0.0
115 
116 Released 2015-11-29
117 
118 Note: despite the major version bump, this release has few changes and should
119 be binary and API compatible with the previous version.
120 
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)
124 
125 ## librsync 1.0.1 (2015-11-21)
126 
127  * Better performance on large files. (VictorDenisov)
128 
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>
133 
134  * Switch from autoconf to CMake.
135 
136  Thanks to Adam Schubert.
137 
138 ## librsync 1.0.0 (2015-01-23)
139 
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.
146 
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.
150 
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
155  untrusted data.
156 
157  Deltas generated from those signatures will also use BLAKE2 during
158  generation, but produce output that can be read by old versions.
159 
160  See https://github.com/librsync/librsync/issues/5
161 
162  Thanks to Michael Samuel <miknet.net> for reporting this and offering an
163  initial patch.
164 
165  * Various build fixes, thanks Timothy Gu.
166 
167  * Improved rdiff man page from Debian.
168 
169  * Improved librsync.spec file for building RPMs.
170 
171  * Fixed bug #1110812 'internal error: job made no progress'; on large
172  files.
173 
174  * Moved hosting to https://github.com/librsync/librsync/
175 
176  * Travis-CI.org integration test at https://travis-ci.org/librsync/librsync/
177 
178  * You can set `$LIBTOOLIZE` before running `autogen.sh`, for example on
179  OS X Homebrew where it is called `glibtoolize`.
180 
181 ## 0.9.7 (released 2004-10-10)
182 
183  * Yet more large file support fixes.
184 
185  * `extern "C"` guards in librsync.h to let it be used from C++.
186 
187  * Removed Debian files from dist tarball.
188 
189  * Changed rdiff to an installed program on "make install".
190 
191  * Refactored delta calculation code to be cleaner and faster.
192 
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.
196 
197  * \#1022764: Fix corrupted encoding of some COPY commands in large
198  files.
199 
200  * \#1024881: Print long integers directly, rather than via casts to
201  double.
202 
203  * Fix printf formats for size_t: both the format and the argument
204  should be cast to long.
205 
206 ## 0.9.6
207 
208  * Large file support fixes.
209 
210  * [v]snprintf or _[v]snprintf autoconf replacement function fix.
211 
212  * Changed installed include file from rsync.h to librsync.h.
213 
214  * Migration to sourceforge for hosting.
215 
216  * Rollsum bugfix that produces much smaller deltas.
217 
218  * Memory leaks bugfix patches.
219 
220  * mdfour bigendian and >512M bugfix, plus optimisations patch.
221 
222  * autoconf/automake updates and cleanups for autoconf 2.53.
223 
224  * Windows compilation patch, heavily modified.
225 
226  * MacOSX compilation patch, modified to autoconf vararg macro fix.
227 
228  * Debian package build scripts patch.
229 
230 ## 0.9.5
231 
232  * Bugfix patch from Shirish Hemant Phatak
233 
234 ## 0.9.4: (library 1.1.0)
235 
236  * Fixes for rsync.h from Thorsten Schuett <thorsten.schuett@zib.de>
237 
238  * RLL encoding fix from Shirish Hemant Phatak <shirish@nustorage.com>
239 
240  * RPM spec file by Peter J. Braam <braam@clusterfs.com>
241 
242  * No (intentional) changes to binary API.
243 
244 ## 0.9.3
245 
246  * Big speed improvements in MD4 routines and generation of weak
247  checksums.
248 
249  * Patch to build on FreeBSD by Jos Backus <josb@cncdsl.com>
250 
251  * Suggestions to build on Solaris 2.6 from Alberto Accomazzi
252  <aaccomazzi@cfa.harvard.edu>
253 
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.
257 
258  * Generating and loading signatures now generates statistics.
259 
260  * More test cases.
261 
262  * I suspect there may be a bug in rolling checksums, but it probably
263  only causes inefficiency and not corruption.
264 
265  * Portability fixes for alphaev67-dec-osf5.1; at the moment builds
266  but does not work because librsync tries to do unaligned accesses.
267 
268  * Works on sparc64-unknown-linux-gnu (Debian/2.2)
269 
270 ## 0.9.2
271 
272  * Improve delta algorithm so that deltas are actually
273  delta-compressed, rather than faked.
274 
275 ## 0.9.1
276 
277  * Rename the library to `librsync'.
278 
279  * Portability fixes.
280 
281  * Include the popt library, and use it to build rdiff if the library
282  is not present on the host.
283 
284  * Add file(1) magic for rdiff.
285 
286  * Add more to the manual pages.
287 
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
290  in the stream.
291 
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.
295 
296  * rs_job_new also takes the initial state function.
297 
298  * Return RS_PARAM_ERROR when library is misused.
299 
300 ## 0.9.0
301 
302  * Redesign API to be more like zlib/bzlib.
303 
304  * Put all command-line functions into a single rdiff(1) program.
305 
306  * New magic number `rs6'
307 
308  * Change to using popt for command line parsing.
309 
310  * Use Doxygen for API documentation.
311 
312 ## 0.5.7
313 
314  * Changes stats string format.
315 
316  * Slightly improved test cases
317 
318 ## 0.5.6
319 
320  * Don't install debugging tools into /usr/local/bin; leave them in
321  the source directory.
322 
323  * Fix libhsync to build on (sgi-mips, IRIX64, gcc, GNU Make)
324 
325  * Include README.CVS in tarball
326 
327  * Back out of using libtool and shared libraries, as it is
328  unnecessary at this stage, complicates installation and slows down
329  compilation.
330 
331  * Use mapptr when reading data to decode, so that decoding should
332  have less latency and be more reliable.
333 
334  * Cope better on systems that are missing functions like snprintf.
335 
336 ## 0.5.5
337 
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.
343 
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.
348 
349  * Add hsdumpsums debugging tool.
350 
351  * Hex strings (eg strong checksums) are broken up by underscores for
352  readability.
353 
354  * Stats now go to the log rather than stdout.
355 
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
358  necessarily real IO.
359 
360 ## 0.5.4
361 
362  * Improved mapptr input code
363 
364  * Turn on more warnings if using gcc
365 
366  * More test cases
367 
368 ## 0.5.3
369 
370  * Improvements to mapptr to make it work better for network IO.
371 
372  * Debug trace code is compiled in unless turned off in ./configure
373  (although most programs will not write it out unless asked.)
374 
375  * Add libhsyncinfo program to show compiled-in settings and version.
376 
377  * Add test cases that run across localhost TCP sockets.
378 
379  * Improved build code; should now build easily from CVS through
380  autogen.sh.
381 
382  * Improved trace code.
383 
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
386 
387  * Reverse build scripts so that driver.sh calls the particular
388  script.
389 
390 ## 0.5.2
391 
392  * Use mapptr for input.
393 
394  * Implement a new structure for encoding in nad.c. It doesn't
395  encode at the moment, but it's much more maintainable.
396 
397  * More regression cases.
398 
399  * Clean up build process.
400 
401 ## 0.5.0
402 
403  * Rewrite hs_inbuf and hs_encode to make them simpler and more
404  reliable.
405 
406  * Test cases for input handling.
407 
408  * Use the map_ptr idea for input from both streams and files.
409 
410 ## 0.4.1
411 
412  * automake/autoconf now works cleanly when the build directory is
413  different to the source directory.
414 
415  * --enable-ccmalloc works again.
416 
417 ## 0.4.0
418 
419 * A much better regression suite.
420 
421 * CHECKSUM token includes the file's checksum up to the current
422  location, to aid in self-testing.
423 
424 * Various bug fixes, particularly to do with short IO returns.
Description of input and output buffers.
Definition: librsync.h:300
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)...
Definition: job.c:96
Bad value passed in to library, probably an application bug.
Definition: librsync.h:181
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...
Definition: job.c:155