v2.0.1
版本发布时间: 2017-10-17 09:52:14
librsync/librsync最新发布版本:v2.3.4(2023-02-19 13:14:51)
Overview
Although this is only a minor point release it is long overdue and includes a large number of performance improvements and bug fixes. It should be significantly faster than any earlier version, particularly for large files. It should also be more robust and reliable. People are strongly encouraged to upgrade.
Included Changes
-
Extensively reworked Doxygen documentation, now available at http://librsync.sourcefrog.net/ (Martin Pool)
-
Removed some declarations from librsync.h that were unimplemented or no longer ever useful:
rs_work_options
,rs_accum_value
. Remove declaration of unimplementedrs_mdfour_file()
. (Martin Pool) -
Remove shipped
snprintf
code: no longer acutally linked after changing to CMake, and since it's part of C99 it should be widely available. (Martin Pool) -
Document that Ninja (http://ninja-build.org/) is supported under CMake. It's a bit faster and nicer than Make. (Martin Pool)
-
make check
(orninja check
etc) will now build and run the tests. Previously due to a CMake limitation,make test
would only run existing tests and could fail if they weren't built. (Martin Pool, https://github.com/librsync/librsync/issues/49) -
Added cmake options to exclude rdiff target and compression from build. See install documentation for details. Thanks to Michele Bertasi.
-
popt
is only needed whenrdiff
is being built. (gulikoza) -
Improved large file support for platforms using different variants of
fseek
(fseeko
,fseeko64
,_fseeki64
),fstat
(fstat64
,_fstati64
), andfileno
(_fileno
). (dbaarda, charlievieth, gulikoza, marius-nicolae) -
rdiff -s
option now shows bytes read/written and speed. (gulikoza). For delta operations it also shows hashtable match statistics. (dbaarda) -
Running rdiff should not overwrite existing files (signatures, deltas and new patched files) by default. If the destination file exists, rdiff will now exit with an error. Add new option -f (--force) to overwrite existing files. (gulikoza)
-
Improve signature memory allocation (doubling size instead of calling realloc for every sig block) and added support for preallocation. See streaming.md job->estimated_signature_count for usage when using the library.
rdiff
uses this by default if possible. (gulikoza, dbaarda) -
Significantly tidied signature handling code and testing, resulting in more consistent error handling behaviour, and making it easier to plug in alternative weak and strong sum implementations. Also fixed "slack delta" support for delta calculation with no signature. (dbaarda)
-
stdint.h
andinttypes.h
from C99 is now required. Removed redundant librsync-config.h header file. (dbaarda) -
Lots of small fixes for windows platforms and building with MSVC. (lasalvavida, mbrt, dbaarda)
-
New open addressing hashtable implementation that significantly speeds up delta operations, particularly for large files. Also fixed degenerate behaviour with large number of duplicate blocks like runs of zeros in sparse files. (dbaarda)
-
Optional support with cmake option for using libb2 blake2 implementation. Also updated included reference blake2 implementation with bug fixes (dbaarda).
-
Improved default values for input and output buffer sizes. The defaults are now --input-size=0 and --output-size=0, which will choose recommended default sizes based on the --block-size and the operation being performed. (dbaarda)
-
Fixed hanging for truncated input files. It will now correctly report an error indicating an unexpected EOF was encountered. (dbaarda, https://github.com/librsync/librsync/issues/32)
-
Fixed #13 so that faster slack delta's are used for signatures of empty files. (dbaarda, https://github.com/librsync/librsync/issues/13)
-
Fixed #33 so rs_job_iter() doesn't need calling twice with eof=1. Also tidied and optimized it a bit. (dbaarda, https://github.com/librsync/librsync/issues/33)
-
Fixed #55 remove excessive rs_fatal() calls, replacing checks for programming errors with assert statements. Now rs_fatal() will only be called for rare unrecoverable fatal errors like malloc failures or impossibly large inputs. (dbaarda, https://github.com/librsync/librsync/issues/55)
Known Issues
- The rpm and debian package configs are very out of date.