Revision history for CRoaring

0.2.3  2026-04-29T23:39:52+01:00
    - Bump github actions to use node 24.

0.2.2  2026-04-15T23:43:15+01:00
    - Build.rakumod: detect system glibc via `ldd --version` and
      fall back to source compile when it's older than the prebuilt
      target (currently v2.35, matching the ubuntu-22.04 CI runner).
      Previously, users on Ubuntu 20.04 / Debian 11 / RHEL 8 /
      Amazon Linux 2 downloaded a prebuilt .so that loaded but
      failed at first symbol use with "GLIBC_2.xx not found". The
      guard fires before the download so affected users just see a
      one-line note and a ~20s source compile instead.
      CROARING_BINARY_ONLY=1 now hard-fails with a clear message on
      old-glibc systems rather than producing a broken install.
    - New CI workflow .github/workflows/glibc-fallback.yml: runs
      `zef install .` inside an ubuntu:20.04 container (glibc 2.31)
      and asserts both that the fallback message appears in the
      build log and that the source-compiled .so loads + works.

0.2.1  2026-04-14T23:02:44+01:00
    - Windows prebuilt download: swap `shell "curl '$url' ..."` for
      `run 'curl', ..., $url` with an arg list. cmd.exe treats single
      quotes as literal characters, which mangled the URL + caused
      curl to parse the Windows drive letter in the output path as
      a malformed URL scheme. The shell-less invocation sidesteps
      cmd.exe/bash quoting quirks entirely.
    - SHA256 check rewritten against the same shell-free pattern:
      `run 'certutil'` / `run 'shasum'` with stdout captured via
      pipe. Windows digest parsing now tolerates both the unspaced
      (Win10+) and space-separated-bytes (older Windows) certutil
      output formats.

0.2.0  2026-04-14T22:48:19+01:00
    - Prebuilt-binary-first install path. Build.rakumod now attempts
      to download a statically-linked .dylib / .so / .dll from the
      repo's GitHub Releases for the detected (OS, arch) pair before
      falling back to source compilation.
    - SHA256 verification against bundled resources/checksums.txt;
      refuses any prebuilt whose hash isn't recorded (hard security
      boundary — no downloaded checksums trusted).
    - Cache downloaded artefacts in $XDG_CACHE_HOME/CRoaring-binaries/
      (or $HOME/.cache/ fallback) so reinstalls skip the network.
    - Hardened source-compile fallback: macOS uses @rpath install
      name for relocatability; Linux + macOS strip symbols.
    - New env knobs: CROARING_BUILD_FROM_SOURCE=1 to skip prebuilts;
      CROARING_BINARY_ONLY=1 to refuse fallback; CROARING_BINARY_URL
      to override the release base URL; CROARING_CACHE_DIR to
      override the cache location; CROARING_LIB for runtime lib path
      override.
    - New workflow .github/workflows/build-binaries.yml: builds and
      publishes prebuilt artefacts for six platforms (macOS arm64,
      macOS x86_64, Linux x86_64/aarch64 glibc, Windows x86_64/arm64)
      on manual dispatch or binaries-* tag push.
    - README: documented the two install paths, env vars, supported
      platforms, and the independent binary-release version scheme
      (binaries-croaring-<upstream>-r<recipe-rev>).

0.1.3  2026-04-07T19:46:26+01:00
    - Fixed Windows build: cd to vendor dir before cl/link so .obj files are co-located

0.1.2  2026-04-07T19:39:47+01:00
    - Fixed Windows DLL symbol exports using .def file + separate compile/link
    - Build.rakumod uses two-step cl/link on Windows for correct /DEF: handling

0.1.1  2026-04-07T19:29:18+01:00
    - Added Windows CI support using MSVC via compnerd/gha-setup-vsdevenv

0.1.0  2026-04-07T18:40:37+01:00
    - Initial release
    - NativeCall bindings for CRoaring compressed bitmaps
    - Vendored C amalgamation with Build.rakumod
    - Set operations: and, or, xor, andnot
    - Bulk operations: add-many, from-array, from-range
    - Pagination: select, slice, slice-reverse
    - Serialization: portable format serialize/deserialize
    - C helpers: radix sort, merge, dedupe, bitmap-based remove
    - Deterministic dispose + GC-based DESTROY
