librsync  2.0.1
NEWS.md
1 # librsync NEWS
2 
3 ## librsync 2.0.1
4 
5 NOT RELEASED YET
6 
7  * Extensively reworked Doxygen documentation, now available at
8  http://librsync.sourcefrog.net/
9  (Martin Pool)
10 
11  * Removed some declarations from librsync.h that were unimplemented or no
12  longer ever useful: `rs_work_options`, `rs_accum_value`.
13  Remove declaration of unimplemented `rs_mdfour_file()`.
14  (Martin Pool)
15 
16  * Remove shipped `snprintf` code: no longer acutally linked after changing to
17  CMake, and since it's part of C99 it should be widely available.
18  (Martin Pool)
19 
20  * Document that Ninja (http://ninja-build.org/) is supported under CMake.
21  It's a bit faster and nicer than Make.
22  (Martin Pool)
23 
24  * `make check` (or `ninja check` etc) will now build and run the tests.
25  Previously due to a CMake limitation, `make test` would only run existing
26  tests and could fail if they weren't built.
27  (Martin Pool, https://github.com/librsync/librsync/issues/49)
28 
29  * Added cmake options to exclude rdiff target and compression from build.
30  See install documentation for details.
31  Thanks to Michele Bertasi.
32 
33  * `popt` is only needed when `rdiff` is being built. (gulikoza)
34 
35  * Use `fseeko64` on mingw. (gulikoza)
36 
37  * `rdiff -s` option now shows bytes read/written and speed. (gulikoza)
38 
39  * Running rdiff should not overwrite existing files (signatures, deltas and
40  new patched files) by default. If the destination file exists, rdiff will
41  now exit with an error. (gulikoza)
42  Add new option -f (--force) to overwrite existing files.
43 
44  * Add signature memory preallocation (instead of calling realloc for
45  every sig block). See streaming.md job->estimated_signature_count for
46  usage when using the library. `rdiff` uses this by default if possible.
47 
48  * `stdint.h` from C99 is now required.
49 
50 ## librsync 2.0.0
51 
52 Released 2015-11-29
53 
54 Note: despite the major version bump, this release has few changes and should
55 be binary and API compatible with the previous version.
56 
57  * Bump librsync version number to 2.0, to match the library
58  soname/dylib version.
59  (Martin Pool, https://github.com/librsync/librsync/issues/48)
60 
61 ## librsync 1.0.1 (2015-11-21)
62 
63  * Better performance on large files. (VictorDenisov)
64 
65  * Add comment on usage of rs_build_hash_table(), and assert correct use.
66  Callers must call rs_build_hash_table() after loading the signature,
67  and before calling rs_delta_begin().
68  Thanks to Paul Harris <paulharris@computer.org>
69 
70  * Switch from autoconf to CMake.
71 
72  Thanks to Adam Schubert.
73 
74 ## librsync 1.0.0 (2015-01-23)
75 
76  * SECURITY: CVE-2014-8242: librsync previously used a truncated MD4
77  "strong" check sum to match blocks. However, MD4 is not cryptographically
78  strong. It's possible that an attacker who can control the contents of one
79  part of a file could use it to control other regions of the file, if it's
80  transferred using librsync/rdiff. For example this might occur in a
81  database, mailbox, or VM image containing some attacker-controlled data.
82 
83  To mitigate this issue, signatures will by default be computed with a
84  256-bit BLAKE2 hash. Old versions of librsync will complain about a
85  bad magic number when given these signature files.
86 
87  Backward compatibility can be obtained using the new
88  `rdiff sig --hash=md4`
89  option or through specifying the "signature magic" in the API, but
90  this should not be used when either the old or new file contain
91  untrusted data.
92 
93  Deltas generated from those signatures will also use BLAKE2 during
94  generation, but produce output that can be read by old versions.
95 
96  See https://github.com/librsync/librsync/issues/5
97 
98  Thanks to Michael Samuel <miknet.net> for reporting this and offering an
99  initial patch.
100 
101  * Various build fixes, thanks Timothy Gu.
102 
103  * Improved rdiff man page from Debian.
104 
105  * Improved librsync.spec file for building RPMs.
106 
107  * Fixed bug #1110812 'internal error: job made no progress'; on large
108  files.
109 
110  * Moved hosting to https://github.com/librsync/librsync/
111 
112  * Travis-CI.org integration test at https://travis-ci.org/librsync/librsync/
113 
114  * You can set `$LIBTOOLIZE` before running `autogen.sh`, for example on
115  OS X Homebrew where it is called `glibtoolize`.
116 
117 ## 0.9.7 (released 2004-10-10)
118 
119  * Yet more large file support fixes.
120 
121  * `extern "C"` guards in librsync.h to let it be used from C++.
122 
123  * Removed Debian files from dist tarball.
124 
125  * Changed rdiff to an installed program on "make install".
126 
127  * Refactored delta calculation code to be cleaner and faster.
128 
129  * \#879763: Fixed mdfour to work on little-endian machines which don't
130  like unaligned word access. This should make librsync work on
131  pa-risc, and it makes it slightly faster on ia64.
132 
133  * \#1022764: Fix corrupted encoding of some COPY commands in large
134  files.
135 
136  * \#1024881: Print long integers directly, rather than via casts to
137  double.
138 
139  * Fix printf formats for size_t: both the format and the argument
140  should be cast to long.
141 
142 ## 0.9.6
143 
144  * Large file support fixes.
145 
146  * [v]snprintf or _[v]snprintf autoconf replacement function fix.
147 
148  * Changed installed include file from rsync.h to librsync.h.
149 
150  * Migration to sourceforge for hosting.
151 
152  * Rollsum bugfix that produces much smaller deltas.
153 
154  * Memory leaks bugfix patches.
155 
156  * mdfour bigendian and >512M bugfix, plus optimisations patch.
157 
158  * autoconf/automake updates and cleanups for autoconf 2.53.
159 
160  * Windows compilation patch, heavily modified.
161 
162  * MacOSX compilation patch, modified to autoconf vararg macro fix.
163 
164  * Debian package build scripts patch.
165 
166 ## 0.9.5
167 
168  * Bugfix patch from Shirish Hemant Phatak
169 
170 ## 0.9.4: (library 1.1.0)
171 
172  * Fixes for rsync.h from Thorsten Schuett <thorsten.schuett@zib.de>
173 
174  * RLL encoding fix from Shirish Hemant Phatak <shirish@nustorage.com>
175 
176  * RPM spec file by Peter J. Braam <braam@clusterfs.com>
177 
178  * No (intentional) changes to binary API.
179 
180 ## 0.9.3
181 
182  * Big speed improvements in MD4 routines and generation of weak
183  checksums.
184 
185  * Patch to build on FreeBSD by Jos Backus <josb@cncdsl.com>
186 
187  * Suggestions to build on Solaris 2.6 from Alberto Accomazzi
188  <aaccomazzi@cfa.harvard.edu>
189 
190  * Add rs_job_drive, a generic mechanism for turning the library into
191  blocking mode. rs_whole_run now builds on top of this. The
192  filebuf interface has changed a little to accomodate it.
193 
194  * Generating and loading signatures now generates statistics.
195 
196  * More test cases.
197 
198  * I suspect there may be a bug in rolling checksums, but it probably
199  only causes inefficiency and not corruption.
200 
201  * Portability fixes for alphaev67-dec-osf5.1; at the moment builds
202  but does not work because librsync tries to do unaligned accesses.
203 
204  * Works on sparc64-unknown-linux-gnu (Debian/2.2)
205 
206 ## 0.9.2
207 
208  * Improve delta algorithm so that deltas are actually
209  delta-compressed, rather than faked.
210 
211 ## 0.9.1
212 
213  * Rename the library to `librsync'.
214 
215  * Portability fixes.
216 
217  * Include the popt library, and use it to build rdiff if the library
218  is not present on the host.
219 
220  * Add file(1) magic for rdiff.
221 
222  * Add more to the manual pages.
223 
224  * It's no longer necessary to call rs_buffers_init on a stream before
225  starting to use it: all the internal data is kept in the job, not
226  in the stream.
227 
228  * Rename rs_stream_t to rs_buffers_t, a more obvious name. Pass the
229  buffers to every rs_job_iter() call, rather than setting it at
230  startup. Similarly for all the _begin() functions.
231 
232  * rs_job_new also takes the initial state function.
233 
234  * Return RS_PARAM_ERROR when library is misused.
235 
236 ## 0.9.0
237 
238  * Redesign API to be more like zlib/bzlib.
239 
240  * Put all command-line functions into a single rdiff(1) program.
241 
242  * New magic number `rs6'
243 
244  * Change to using popt for command line parsing.
245 
246  * Use Doxygen for API documentation.
247 
248 ## 0.5.7
249 
250  * Changes stats string format.
251 
252  * Slightly improved test cases
253 
254 ## 0.5.6
255 
256  * Don't install debugging tools into /usr/local/bin; leave them in
257  the source directory.
258 
259  * Fix libhsync to build on (sgi-mips, IRIX64, gcc, GNU Make)
260 
261  * Include README.CVS in tarball
262 
263  * Back out of using libtool and shared libraries, as it is
264  unnecessary at this stage, complicates installation and slows down
265  compilation.
266 
267  * Use mapptr when reading data to decode, so that decoding should
268  have less latency and be more reliable.
269 
270  * Cope better on systems that are missing functions like snprintf.
271 
272 ## 0.5.5
273 
274  * Put genuine search encoding back into the nad algorithm, and
275  further clean up the nad code. Literals are now sent out using a
276  literal buffer integrated with the input mapptr so that data is not
277  copied. Checksums are still calculated from scratch each time
278  rather than by rolling -- this is very slow but simple.
279 
280  * Reshuffle test cases so that they use files generated by hsmapread,
281  rather than the source directory. This makes the tests quicker and
282  more reproducible, hopefully without losing coverage. Further
283  develop the test driver framework.
284 
285  * Add hsdumpsums debugging tool.
286 
287  * Hex strings (eg strong checksums) are broken up by underscores for
288  readability.
289 
290  * Stats now go to the log rather than stdout.
291 
292  * mapptr acts properly when we're skipping/rewinding to data already
293  present in the buffer -- it does a copy if required, but not
294  necessarily real IO.
295 
296 ## 0.5.4
297 
298  * Improved mapptr input code
299 
300  * Turn on more warnings if using gcc
301 
302  * More test cases
303 
304 ## 0.5.3
305 
306  * Improvements to mapptr to make it work better for network IO.
307 
308  * Debug trace code is compiled in unless turned off in ./configure
309  (although most programs will not write it out unless asked.)
310 
311  * Add libhsyncinfo program to show compiled-in settings and version.
312 
313  * Add test cases that run across localhost TCP sockets.
314 
315  * Improved build code; should now build easily from CVS through
316  autogen.sh.
317 
318  * Improved trace code.
319 
320  * Clean up to build on sparc-sun-solaris2.8, and in the process clean
321  up the handling of bytes vs chars, and of building without gcc
322 
323  * Reverse build scripts so that driver.sh calls the particular
324  script.
325 
326 ## 0.5.2
327 
328  * Use mapptr for input.
329 
330  * Implement a new structure for encoding in nad.c. It doesn't
331  encode at the moment, but it's much more maintainable.
332 
333  * More regression cases.
334 
335  * Clean up build process.
336 
337 ## 0.5.0
338 
339  * Rewrite hs_inbuf and hs_encode to make them simpler and more
340  reliable.
341 
342  * Test cases for input handling.
343 
344  * Use the map_ptr idea for input from both streams and files.
345 
346 ## 0.4.1
347 
348  * automake/autoconf now works cleanly when the build directory is
349  different to the source directory.
350 
351  * --enable-ccmalloc works again.
352 
353 ## 0.4.0
354 
355 * A much better regression suite.
356 
357 * CHECKSUM token includes the file's checksum up to the current
358  location, to aid in self-testing.
359 
360 * Various bug fixes, particularly to do with short IO returns.