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