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 )