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