$treeview $search $mathjax $extrastylesheet
librsync
2.3.0
$projectbrief
|
$projectbrief
|
$searchbox |
00001 # librsync NEWS 00002 00003 ## librsync 2.3.0 00004 00005 Released 2020-04-07 00006 00007 * Bump minor version from 2.2.1 to 2.3.0 to reflect additional rs_sig_args() 00008 and strong_len=-1 support. 00009 00010 * Add public rs_sig_args() function for getting the recommend signature args 00011 from the file size. Added support to rdiff for `--sum-size=-1` to indicate 00012 "use minimum size safe against random block collisions". Added warning 00013 output for sum-sizes that are too small to be safe. Fixed possible rdiff 00014 bug affecting popt parsing on non-little-endian platforms. (dbaarda, 00015 https://github.com/librsync/librsync/pull/109) 00016 00017 * Fixed yet more compiler warnings for various platforms/compilers. 00018 (Adsun701, texierp, https://github.com/librsync/librsync/pull/187, 00019 https://github.com/librsync/librsync/pull/188) 00020 00021 * Improved cmake popt handling to find popt dependencies using PkgConfig. 00022 (ffontaine, https://github.com/librsync/librsync/pull/186) 00023 00024 * Tidied internal code and improved tests for netint.[ch], tube.c, and 00025 hashtable.h. (dbaarda, https://github.com/librsync/librsync/pull/183 00026 https://github.com/librsync/librsync/pull/185). 00027 00028 * Improved C99 compatibility. Add `-std=c99 -pedantic` to `CMAKE_C_FLAGS` for 00029 gcc and clang. Fix all C99 warnings by making all code C99 compliant. Tidy 00030 all CMake checks, #cmakedefines, and #includes. Fix 64bit support for 00031 mdfour checksums (texierp, dbaarda, 00032 https://github.com/librsync/librsync/pull/181, 00033 https://github.com/librsync/librsync/pull/182) 00034 00035 * Usage clarified in rdiff (1) man page. (AaronM04, 00036 https://github.com/librsync/librsync/pull/180) 00037 00038 ## librsync 2.2.1 00039 00040 Released 2019-10-16 00041 00042 * Fix #176 hangs calculating deltas for files larger than 4GB. (dbaarda, 00043 https://github.com/librsync/librsync/pull/177) 00044 00045 ## librsync 2.2.0 00046 00047 Released 2019-10-12 00048 00049 * Bump minor version from 2.1.0 to 2.2.0 to reflect additional RabinKarp 00050 rollsum support. 00051 00052 * Fix MSVC builds by adding missing LIBRSYNC_EXPORT to variables in 00053 librsync.h, add -DLIBRSYNC_STATIC_DEFINE to the sumset_test target, 00054 and correctly install .dll files in the bin directory. 00055 (adsun701, https://github.com/librsync/librsync/pull/161) 00056 00057 * Add RabinKarp rollsum support and make it the default. RabinKarp is a much 00058 better rolling hash, which reduces the risk of hash collision corruption 00059 and speeds up delta calculations. The rdiff cmd gets a new `-R 00060 (rollsum|rabinkarp)` argument with the default being `rabinkarp`, Use `-R 00061 rollsum` to generate backwards-compatible signatures. (dbaarda, 00062 https://github.com/librsync/librsync/issues/3) 00063 00064 * Use single-byte literal commands for small inserts in deltas. This makes 00065 each small insert use 1 less byte in deltas. (dbaarda, 00066 https://github.com/librsync/librsync/issues/120) 00067 00068 * Fix multiple warnings (cross-)compiling for windows. (Adsun701, 00069 https://github.com/librsync/librsync/pull/165, 00070 https://github.com/librsync/librsync/pull/166) 00071 00072 * Change rs_file_size() to report -1 instead of 0 for unknown file sizes (not 00073 a regular file). (dbaarda https://github.com/librsync/librsync/pull/168) 00074 00075 * Add cmake BUILD_SHARED_LIBS option for static library support. 00076 BUILD_SHARED_LIBS defaults to ON, and can be set to OFF using `ccmake .` to 00077 build librsync as a static library. (dbaarda 00078 https://github.com/librsync/librsync/pull/169) 00079 00080 * Fix compile errors and add .gitignore entries for MSVS 2019. Fixes 00081 hashtable.h to be C99 compliant. (ardovm 00082 https://github.com/librsync/librsync/pull/170) 00083 00084 ## librsync 2.1.0 00085 00086 Released 2019-08-19 00087 00088 * Bump minor version from 2.0.3 to 2.1.0 to reflect additions to librsync.h. 00089 00090 * Fix exporting of private symbols from librsync library. Add export of 00091 useful large file functions `rs_file_open()`, `rs_file_close()`, and 00092 `rs_file_size()` to librsync.h. Add export of `rs_signature_log_stats()` to 00093 log signature hashtable hit/miss stats. Improve rdiff error output. 00094 (dbaarda, https://github.com/librsync/librsync/issues/130) 00095 00096 * Updated release process to include stable tarballs. (dbaarda, 00097 https://github.com/librsync/librsync/issues/146) 00098 00099 * Remove redundant and broken `--paranoia` argument from rdiff. (dbaarda, 00100 https://github.com/librsync/librsync/issues/155) 00101 00102 * Fix memory leak of `rs_signature_t->block_sigs` when freeing signatures. 00103 (telles-simbiose, https://github.com/librsync/librsync/pull/147) 00104 00105 * Document delta file format. (zmj, 00106 https://github.com/librsync/librsync/issues/46) 00107 00108 * Fix up doxygen comments. (dbaarda, 00109 https://github.com/librsync/librsync/pull/151) 00110 00111 ## librsync 2.0.2 00112 00113 Released 2018-02-27 00114 00115 * Improve CMake install paths configuration (wRAR, 00116 https://github.com/librsync/librsync/pull/133) and platform support 00117 checking when cross-compiling (fornwall, 00118 https://github.com/librsync/librsync/pull/136). 00119 00120 * Fix Unaligned memory access for rs_block_sig_init() (dbaarda, 00121 https://github.com/librsync/librsync/issues/135). 00122 00123 * Fix hashtable_test.c name collision for key_t in sys/types.h on some 00124 platforms (dbaarda, https://github.com/librsync/librsync/issues/134) 00125 00126 * Format code with consistent style, adding `make tidy` and `make 00127 tidyc` targets for reformating code and comments. (dbaarda, 00128 https://github.com/librsync/librsync/issues/125) 00129 00130 * Removed perl as a build dependency. Note it is still required for some 00131 tests. (dbaarda, https://github.com/librsync/librsync/issues/75) 00132 00133 * Update RPM spec file for v2.0.2 and fix cmake man page install. (deajan, 00134 https://github.com/librsync/librsync/issues/47) 00135 00136 ## librsync 2.0.1 00137 00138 Released 2017-10-17 00139 00140 * Extensively reworked Doxygen documentation, now available at 00141 http://librsync.sourcefrog.net/ (Martin Pool) 00142 00143 * Removed some declarations from librsync.h that were unimplemented or no 00144 longer ever useful: `rs_work_options`, `rs_accum_value`. Remove 00145 declaration of unimplemented `rs_mdfour_file()`. (Martin Pool) 00146 00147 * Remove shipped `snprintf` code: no longer acutally linked after changing to 00148 CMake, and since it's part of C99 it should be widely available. 00149 (Martin Pool) 00150 00151 * Document that Ninja (http://ninja-build.org/) is supported under CMake. 00152 It's a bit faster and nicer than Make. (Martin Pool) 00153 00154 * `make check` (or `ninja check` etc) will now build and run the tests. 00155 Previously due to a CMake limitation, `make test` would only run existing 00156 tests and could fail if they weren't built. 00157 (Martin Pool, https://github.com/librsync/librsync/issues/49) 00158 00159 * Added cmake options to exclude rdiff target and compression from build. 00160 See install documentation for details. Thanks to Michele Bertasi. 00161 00162 * `popt` is only needed when `rdiff` is being built. (gulikoza) 00163 00164 * Improved large file support for platforms using different variants 00165 of `fseek` (`fseeko`, `fseeko64`, `_fseeki64`), `fstat` (`fstat64`, 00166 `_fstati64`), and `fileno` (`_fileno`). (dbaarda, charlievieth, 00167 gulikoza, marius-nicolae) 00168 00169 * `rdiff -s` option now shows bytes read/written and speed. (gulikoza). 00170 For delta operations it also shows hashtable match statistics. (dbaarda) 00171 00172 * Running rdiff should not overwrite existing files (signatures, deltas and 00173 new patched files) by default. If the destination file exists, rdiff will 00174 now exit with an error. Add new option -f (--force) to overwrite existing 00175 files. (gulikoza) 00176 00177 * Improve signature memory allocation (doubling size instead of calling 00178 realloc for every sig block) and added support for preallocation. See 00179 streaming.md job->estimated_signature_count for usage when using the 00180 library. `rdiff` uses this by default if possible. (gulikoza, dbaarda) 00181 00182 * Significantly tidied signature handling code and testing, resulting in more 00183 consistent error handling behaviour, and making it easier to plug in 00184 alternative weak and strong sum implementations. Also fixed "slack delta" 00185 support for delta calculation with no signature. (dbaarda) 00186 00187 * `stdint.h` and `inttypes.h` from C99 is now required. Removed redundant 00188 librsync-config.h header file. (dbaarda) 00189 00190 * Lots of small fixes for windows platforms and building with MSVC. 00191 (lasalvavida, mbrt, dbaarda) 00192 00193 * New open addressing hashtable implementation that significantly speeds up 00194 delta operations, particularly for large files. Also fixed degenerate 00195 behaviour with large number of duplicate blocks like runs of zeros 00196 in sparse files. (dbaarda) 00197 00198 * Optional support with cmake option for using libb2 blake2 implementation. 00199 Also updated included reference blake2 implementation with bug fixes 00200 (dbaarda). 00201 00202 * Improved default values for input and output buffer sizes. The defaults are 00203 now --input-size=0 and --output-size=0, which will choose recommended 00204 default sizes based on the --block-size and the operation being performed. 00205 (dbaarda) 00206 00207 * Fixed hanging for truncated input files. It will now correctly report an 00208 error indicating an unexpected EOF was encountered. (dbaarda, 00209 https://github.com/librsync/librsync/issues/32) 00210 00211 * Fixed #13 so that faster slack delta's are used for signatures of 00212 empty files. (dbaarda, 00213 https://github.com/librsync/librsync/issues/13) 00214 00215 * Fixed #33 so rs_job_iter() doesn't need calling twice with eof=1. 00216 Also tidied and optimized it a bit. (dbaarda, 00217 https://github.com/librsync/librsync/issues/33) 00218 00219 * Fixed #55 remove excessive rs_fatal() calls, replacing checks for 00220 programming errors with assert statements. Now rs_fatal() will only 00221 be called for rare unrecoverable fatal errors like malloc failures or 00222 impossibly large inputs. (dbaarda, 00223 https://github.com/librsync/librsync/issues/55) 00224 00225 ## librsync 2.0.0 00226 00227 Released 2015-11-29 00228 00229 Note: despite the major version bump, this release has few changes and should 00230 be binary and API compatible with the previous version. 00231 00232 * Bump librsync version number to 2.0, to match the library 00233 soname/dylib version. 00234 (Martin Pool, https://github.com/librsync/librsync/issues/48) 00235 00236 ## librsync 1.0.1 (2015-11-21) 00237 00238 * Better performance on large files. (VictorDenisov) 00239 00240 * Add comment on usage of rs_build_hash_table(), and assert correct use. 00241 Callers must call rs_build_hash_table() after loading the signature, 00242 and before calling rs_delta_begin(). 00243 Thanks to Paul Harris <paulharris@computer.org> 00244 00245 * Switch from autoconf to CMake. 00246 00247 Thanks to Adam Schubert. 00248 00249 ## librsync 1.0.0 (2015-01-23) 00250 00251 * SECURITY: CVE-2014-8242: librsync previously used a truncated MD4 00252 "strong" check sum to match blocks. However, MD4 is not cryptographically 00253 strong. It's possible that an attacker who can control the contents of one 00254 part of a file could use it to control other regions of the file, if it's 00255 transferred using librsync/rdiff. For example this might occur in a 00256 database, mailbox, or VM image containing some attacker-controlled data. 00257 00258 To mitigate this issue, signatures will by default be computed with a 00259 256-bit BLAKE2 hash. Old versions of librsync will complain about a 00260 bad magic number when given these signature files. 00261 00262 Backward compatibility can be obtained using the new 00263 `rdiff sig --hash=md4` 00264 option or through specifying the "signature magic" in the API, but 00265 this should not be used when either the old or new file contain 00266 untrusted data. 00267 00268 Deltas generated from those signatures will also use BLAKE2 during 00269 generation, but produce output that can be read by old versions. 00270 00271 See https://github.com/librsync/librsync/issues/5 00272 00273 Thanks to Michael Samuel <miknet.net> for reporting this and offering an 00274 initial patch. 00275 00276 * Various build fixes, thanks Timothy Gu. 00277 00278 * Improved rdiff man page from Debian. 00279 00280 * Improved librsync.spec file for building RPMs. 00281 00282 * Fixed bug #1110812 'internal error: job made no progress'; on large 00283 files. 00284 00285 * Moved hosting to https://github.com/librsync/librsync/ 00286 00287 * Travis-CI.org integration test at https://travis-ci.org/librsync/librsync/ 00288 00289 * You can set `$LIBTOOLIZE` before running `autogen.sh`, for example on 00290 OS X Homebrew where it is called `glibtoolize`. 00291 00292 ## 0.9.7 (released 2004-10-10) 00293 00294 * Yet more large file support fixes. 00295 00296 * `extern "C"` guards in librsync.h to let it be used from C++. 00297 00298 * Removed Debian files from dist tarball. 00299 00300 * Changed rdiff to an installed program on "make install". 00301 00302 * Refactored delta calculation code to be cleaner and faster. 00303 00304 * \#879763: Fixed mdfour to work on little-endian machines which don't 00305 like unaligned word access. This should make librsync work on 00306 pa-risc, and it makes it slightly faster on ia64. 00307 00308 * \#1022764: Fix corrupted encoding of some COPY commands in large 00309 files. 00310 00311 * \#1024881: Print long integers directly, rather than via casts to 00312 double. 00313 00314 * Fix printf formats for size_t: both the format and the argument 00315 should be cast to long. 00316 00317 ## 0.9.6 00318 00319 * Large file support fixes. 00320 00321 * [v]snprintf or _[v]snprintf autoconf replacement function fix. 00322 00323 * Changed installed include file from rsync.h to librsync.h. 00324 00325 * Migration to sourceforge for hosting. 00326 00327 * Rollsum bugfix that produces much smaller deltas. 00328 00329 * Memory leaks bugfix patches. 00330 00331 * mdfour bigendian and >512M bugfix, plus optimisations patch. 00332 00333 * autoconf/automake updates and cleanups for autoconf 2.53. 00334 00335 * Windows compilation patch, heavily modified. 00336 00337 * MacOSX compilation patch, modified to autoconf vararg macro fix. 00338 00339 * Debian package build scripts patch. 00340 00341 ## 0.9.5 00342 00343 * Bugfix patch from Shirish Hemant Phatak 00344 00345 ## 0.9.4: (library 1.1.0) 00346 00347 * Fixes for rsync.h from Thorsten Schuett <thorsten.schuett@zib.de> 00348 00349 * RLL encoding fix from Shirish Hemant Phatak <shirish@nustorage.com> 00350 00351 * RPM spec file by Peter J. Braam <braam@clusterfs.com> 00352 00353 * No (intentional) changes to binary API. 00354 00355 ## 0.9.3 00356 00357 * Big speed improvements in MD4 routines and generation of weak 00358 checksums. 00359 00360 * Patch to build on FreeBSD by Jos Backus <josb@cncdsl.com> 00361 00362 * Suggestions to build on Solaris 2.6 from Alberto Accomazzi 00363 <aaccomazzi@cfa.harvard.edu> 00364 00365 * Add rs_job_drive, a generic mechanism for turning the library into 00366 blocking mode. rs_whole_run now builds on top of this. The 00367 filebuf interface has changed a little to accomodate it. 00368 00369 * Generating and loading signatures now generates statistics. 00370 00371 * More test cases. 00372 00373 * I suspect there may be a bug in rolling checksums, but it probably 00374 only causes inefficiency and not corruption. 00375 00376 * Portability fixes for alphaev67-dec-osf5.1; at the moment builds 00377 but does not work because librsync tries to do unaligned accesses. 00378 00379 * Works on sparc64-unknown-linux-gnu (Debian/2.2) 00380 00381 ## 0.9.2 00382 00383 * Improve delta algorithm so that deltas are actually 00384 delta-compressed, rather than faked. 00385 00386 ## 0.9.1 00387 00388 * Rename the library to `librsync'. 00389 00390 * Portability fixes. 00391 00392 * Include the popt library, and use it to build rdiff if the library 00393 is not present on the host. 00394 00395 * Add file(1) magic for rdiff. 00396 00397 * Add more to the manual pages. 00398 00399 * It's no longer necessary to call rs_buffers_init on a stream before 00400 starting to use it: all the internal data is kept in the job, not 00401 in the stream. 00402 00403 * Rename rs_stream_t to rs_buffers_t, a more obvious name. Pass the 00404 buffers to every rs_job_iter() call, rather than setting it at 00405 startup. Similarly for all the _begin() functions. 00406 00407 * rs_job_new also takes the initial state function. 00408 00409 * Return RS_PARAM_ERROR when library is misused. 00410 00411 ## 0.9.0 00412 00413 * Redesign API to be more like zlib/bzlib. 00414 00415 * Put all command-line functions into a single rdiff(1) program. 00416 00417 * New magic number `rs6' 00418 00419 * Change to using popt for command line parsing. 00420 00421 * Use Doxygen for API documentation. 00422 00423 ## 0.5.7 00424 00425 * Changes stats string format. 00426 00427 * Slightly improved test cases 00428 00429 ## 0.5.6 00430 00431 * Don't install debugging tools into /usr/local/bin; leave them in 00432 the source directory. 00433 00434 * Fix libhsync to build on (sgi-mips, IRIX64, gcc, GNU Make) 00435 00436 * Include README.CVS in tarball 00437 00438 * Back out of using libtool and shared libraries, as it is 00439 unnecessary at this stage, complicates installation and slows down 00440 compilation. 00441 00442 * Use mapptr when reading data to decode, so that decoding should 00443 have less latency and be more reliable. 00444 00445 * Cope better on systems that are missing functions like snprintf. 00446 00447 ## 0.5.5 00448 00449 * Put genuine search encoding back into the nad algorithm, and 00450 further clean up the nad code. Literals are now sent out using a 00451 literal buffer integrated with the input mapptr so that data is not 00452 copied. Checksums are still calculated from scratch each time 00453 rather than by rolling -- this is very slow but simple. 00454 00455 * Reshuffle test cases so that they use files generated by hsmapread, 00456 rather than the source directory. This makes the tests quicker and 00457 more reproducible, hopefully without losing coverage. Further 00458 develop the test driver framework. 00459 00460 * Add hsdumpsums debugging tool. 00461 00462 * Hex strings (eg strong checksums) are broken up by underscores for 00463 readability. 00464 00465 * Stats now go to the log rather than stdout. 00466 00467 * mapptr acts properly when we're skipping/rewinding to data already 00468 present in the buffer -- it does a copy if required, but not 00469 necessarily real IO. 00470 00471 ## 0.5.4 00472 00473 * Improved mapptr input code 00474 00475 * Turn on more warnings if using gcc 00476 00477 * More test cases 00478 00479 ## 0.5.3 00480 00481 * Improvements to mapptr to make it work better for network IO. 00482 00483 * Debug trace code is compiled in unless turned off in ./configure 00484 (although most programs will not write it out unless asked.) 00485 00486 * Add libhsyncinfo program to show compiled-in settings and version. 00487 00488 * Add test cases that run across localhost TCP sockets. 00489 00490 * Improved build code; should now build easily from CVS through 00491 autogen.sh. 00492 00493 * Improved trace code. 00494 00495 * Clean up to build on sparc-sun-solaris2.8, and in the process clean 00496 up the handling of bytes vs chars, and of building without gcc 00497 00498 * Reverse build scripts so that driver.sh calls the particular 00499 script. 00500 00501 ## 0.5.2 00502 00503 * Use mapptr for input. 00504 00505 * Implement a new structure for encoding in nad.c. It doesn't 00506 encode at the moment, but it's much more maintainable. 00507 00508 * More regression cases. 00509 00510 * Clean up build process. 00511 00512 ## 0.5.0 00513 00514 * Rewrite hs_inbuf and hs_encode to make them simpler and more 00515 reliable. 00516 00517 * Test cases for input handling. 00518 00519 * Use the map_ptr idea for input from both streams and files. 00520 00521 ## 0.4.1 00522 00523 * automake/autoconf now works cleanly when the build directory is 00524 different to the source directory. 00525 00526 * --enable-ccmalloc works again. 00527 00528 ## 0.4.0 00529 00530 * A much better regression suite. 00531 00532 * CHECKSUM token includes the file's checksum up to the current 00533 location, to aid in self-testing. 00534 00535 * Various bug fixes, particularly to do with short IO returns.