BsDiPa
view release on metacpan or search on metacpan
c-lib/README view on Meta::CPAN
+ perl/, s-bsdipa/: detect availability of I/O layers via compilation
test, instead of through existence of command line utilities.
- s-bspatch.c: verify all control tuples were consumed, plus tweaks.
This file is now ISC copyright.
- Add optional zstd (Zstandard, libzstd) _IO method support.
v0.9.0, 2025-12-24:
+ Breaks backward compatibility of bsdipa_patch() as that assumes
patches satisfy content constraints that are only satisfied by
bsdipa_diff() of v0.9.0!!
+ Import of Colin Percival's original qsufsort() algorithm; it was
replaced with libdivsufsort in FreeBSD, and Colin Percival pointed
me to this because of existing bugfixes. The original variant is
smaller code, but suffers from a performance penalty on large files
(about 15% for unrelated 5 megabyte binaries) -- it is faster for
small files, however, so having it around is very beneficial.
++ By default both algorithms are compiled in, their usage depends on
the data size.
v0.8.1, 2025-12-20:
+ Notes:
Not released, bsdipa_patch() includes a patch content constraint
test that is not satisfied before v0.9.0!
+ Warning:
Miscompilations (of libdivsufsort) with gcc 15.2.0 and -O3 and above!
As well as in sanitizer compilations.
(clang 21.1.6 ok.) (All on Linux.)
- Tighten tested constraints on patch content.
- Optimize away needless work when applying patch.
- Fix beflen!=0 aftlen==0 "algorithm error" in BSDiff resulting in SEGV.
- ZLIB I/O: allow compression config via cookie.
- perl: make official core_try_oneshot_set(), add core_diff_level_set().
- Add optional BZ2 (BZIP2, libbz2) _IO method support.
v0.8.0, 2025-07-03:
- ABI and API breakage.
- Fixes a cast that could have lost bits on systems with a 64-bit
bsdipa_off_t and a 32-bit size_t (if any).
- Adds an "is equal data" state.
- Adds optional XZ (LZMA2, liblzma, XZ utils) _IO method support.
- Adds I/O cookie support (yet only for XZ): cookie can be reused by
successive calls to diff/patch, which can aid in dramatical
reduction of resource aquire/release cycles.
- s-bsdipa is now a real program, with options, manual, test, etc.
- Coverity.com (project 31371 / s-bsdipa) still sees us 0.0.
v0.7.0, 2025-02-19:
- CHANGE: honour s_bsdipa_patch_ctx::pc_max_allowed_restored_len
already on the s-bsdipa-io.h layer, directly after having called
s_bsdipa_patch_parse_header(). (Ie, before the ".pc_patch_dat
allocation" even.)
- FIX for s-bsdipa example program: when compiled without NDEBUG
it would munmap(2) invalidated pointer/length combo.
v0.6.1, 2025-02-17:
- Coverity.com (project 31371 / s-bsdipa) FIXes for the s-bsdipa
example program: one unused value, one fd resource leak.
(Tool design changed without that being adopted in early design
stage: obviously not enough iterations and/or too much fuzz.)
- bsdipa_patch() CHANGE: until now field lengths were not verified
in the (unusual) .pc_patch_dat==NULL case, as the user was expected
to have done this before; instead, always check anything.
-- Do not increment minor number nonetheless, no ABI change.
v0.6.0, 2025-01-31:
- Adds struct s_bsdipa_patch_ctx::pc_max_allowed_restored_len, which
allows to configure the maximum allowed size of the restored data.
(Mostly for perl or other possible script/xy interfaces, the
C interface as such has s_bsdipa_header::h_before_len ...)
v0.5.3, 2025-01-17:
- FIXes totally false buffer usage blindlessly introduced to fix
(correct .. but nonetheless false) cpantesters.org assertion
failure. (That is: it is binary data so NUL termination is a fake,
.. but that is how it has to be, stupid!)
What a mess.
v0.5.2, 2025-01-09:
- CHANGE/FIX: ensure patch fits in _OFF_MAX, including control data.
s_bsdipa_patch_parse_header() did verify that on the patch side,
but on the diff side we yet did not care, as in theory the data
could have been stored in individual chunks.
- FIX: perl CPAN testers started failing (in a second round?)
due to assertion failures regarding SV_HAS_TRAILING_NUL and that
missing. Therefore ensure our memory results have one byte in
addition and do always terminate them.
- more perl module creation related tweaks.
v0.5.1, 2025-01-05:
- perl module creation related tweaks.
v0.5.0, 2024-12-26: (first release)
# s-ts-mode
( run in 0.552 second using v1.01-cache-2.11-cpan-71847e10f99 )