Skip to content

Releases: trungminhdo4-glitch/mmap-chunker-core

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 21 Aug 10:57
83fcc9b

mmap-chunker-core v0.2.6

Prebuilt native libraries for C, Python, Go, and other FFI consumers,
plus standalone mmap-chunker CLI archives.

Native archives contain the C header, dynamic library, static library, and licenses.
CLI archives contain the versioned mmap-chunker executable and licenses.
Every archive has an accompanying .sha256 checksum file.

Python wheels and the sdist for this version are published on PyPI
(project mmap-chunker-core), not duplicated here.

What's Changed

Full Changelog: v0.2.5...v0.2.6

v0.2.5

Choose a tag to compare

@github-actions github-actions released this 20 Aug 10:15

mmap-chunker-core v0.2.5

Prebuilt native libraries for C, Python, Go, and other FFI consumers,
plus standalone mmap-chunker CLI archives.

Native archives contain the C header, dynamic library, static library, and licenses.
CLI archives contain the versioned mmap-chunker executable and licenses.
Every archive has an accompanying .sha256 checksum file.

Python wheels and the sdist for this version are published on PyPI
(project mmap-chunker-core), not duplicated here.

What's Changed

Full Changelog: v0.2.4...v0.2.5

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 16 Aug 15:38
6ef6b39

mmap-chunker-core v0.2.4

Prebuilt native libraries for C, Python, Go, and other FFI consumers,
plus standalone mmap-chunker CLI archives.

Native archives contain the C header, dynamic library, static library, and licenses.
CLI archives contain the versioned mmap-chunker executable and licenses.
Every archive has an accompanying .sha256 checksum file.

What's Changed

Full Changelog: v0.2.3...v0.2.4

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 14 Aug 15:57
f9b67bc

mmap-chunker-core v0.2.3

Prebuilt native libraries for C, Python, Go, and other FFI consumers,
plus standalone mmap-chunker CLI archives.

Native archives contain the C header, dynamic library, static library, and licenses.
CLI archives contain the versioned mmap-chunker executable and licenses.
Every archive has an accompanying .sha256 checksum file.

What's Changed

Full Changelog: v0.2.2...v0.2.3

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 14 Aug 10:01
b87d305

mmap-chunker-core v0.2.2

Prebuilt native libraries for C, Python, Go, and other FFI consumers.

Each archive contains the C header, dynamic library, static library, and licenses.
Every archive has an accompanying .sha256 checksum file.

What's Changed

New Contributors

Full Changelog: v0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 09 Aug 22:16

mmap-chunker-core v0.2.1

Prebuilt native libraries for C, Python, Go, and other FFI consumers.

Each archive contains the C header, dynamic library, static library, and licenses.
Every archive has an accompanying .sha256 checksum file.

Full Changelog: v0.2.0...v0.2.1

mmap-chunker-core v0.2.0

Choose a tag to compare

@trungminhdo4-glitch trungminhdo4-glitch released this 08 Aug 17:52

Highlights

  • Safe dependency-free SWAR delimiter search
  • Arithmetic fixed-size chunking with O(1) boundary metadata
  • Record-aligned N-way partition planning for parallel consumers
  • C ABI evolved additively to v1.2
  • Expanded Linux, Windows, macOS and Rust 1.77 validation

Fixed-size chunking

  • mmap_engine_scan_fixed(handle, chunk_size) — C ABI function
  • Exact fixed byte ranges, no delimiter scan required
  • Arithmetic chunk boundaries via scanner::fixed_chunk_count and scanner::fixed_chunk_bounds
  • O(1) layout metadata — boundary positions computed arithmetically, no scan
  • Zero-copy CChunkView views preserved
  • Last chunk may be shorter; chunk size 0 clamps to 1

Record partition planning

  • mmap_engine_partition_records(handle, num_partitions, delimiter) — C ABI function
  • Approximately balanced N-way ranges computed from absolute file-position targets
  • Record-aligned boundaries: no record is split across partitions
  • Absolute-target algorithm prevents cumulative size drift across partitions
  • Giant records may reduce actual partition count (boundaries collapse, no empty partitions)
  • All partition boundaries computed independently from floor(file_len * i / N)
  • Metadata cost: O(N) scan, bounded to file length
  • Library plans ranges; it does not create worker threads/processes

Performance

  • Internal single-byte delimiter search now uses safe 64-bit SWAR
  • Corrected benchmarks showed substantial improvements in byte search and in-memory boundary construction on tested Windows x86_64 workloads

C ABI v1.2

Additive API additions — existing v1.0 functions remain available:

mmap_engine_scan_fixed          — fixed-size arithmetic chunking
mmap_engine_partition_records   — record-aligned N-way partition planning

New capability bits:

CAP_FIXED_SIZE_CHUNKING   (bit 3)
CAP_RECORD_PARTITIONING   (bit 4)

mmap_engine_abi_version() returns 0x00010002.

Validation

  • 110 Rust tests (108 unit + 2 integration)
  • 30 external C ABI assertions
  • Ubuntu, Windows, macOS CI
  • Rust 1.77 MSRV
  • ABI symbol regression gate
  • Zero Rust runtime dependencies

mmap-chunker-core v0.1.0

Choose a tag to compare

@trungminhdo4-glitch trungminhdo4-glitch released this 08 Aug 11:04

mmap-chunker-core v0.1.0

Initial public release of a zero-dependency Rust library for memory-mapped file chunking with a stable C ABI.

Highlights

  • Cross-platform native mmap: Windows (\CreateFileMappingW) and POSIX (\mmap/munmap) implementations
  • Zero-copy chunk views: \CChunkView\ references mapped memory directly — no data copying
  • Configurable delimiter scanning: single-byte delimiters (newline, comma, tab, pipe, NUL, etc.)
  • Stable C ABI v1: 8 public functions with additive-only compatibility policy
  • ABI version discovery: runtime \mmap_engine_abi_version()\ returns (major << 16) | minor\
  • Capability detection: \mmap_engine_capabilities()\ returns feature bitmask (zero-copy, configurable delimiter, error strings)
  • Thread-local error diagnostics: \mmap_engine_last_error()\ provides human-readable error strings per thread
  • Panic containment: all FFI boundaries use \catch_unwind; \mmap_engine_free()\ aborts on unrecoverable panic
  • Static + dynamic library: \staticlib\ and \cdylib\ crate types

Validated platforms

Platform Rust tests C ABI consumer Status
Windows x86_64 GNU 47/47 15/15 (local) Passed
Linux x86_64 (Ubuntu) 47/47 15/15 (CI) Passed
macOS Targeted, unvalidated

Test coverage

  • 47 Rust tests (45 unit + 2 integration) including property tests for concatenation, gap-freedom, determinism, monotonic offsets, and delimiter variants
  • 15 external C ABI assertions via \�xamples/c_consumer.c\ (compiled with gcc 15.2.0 locally + cc in Ubuntu CI)
  • 53 Python ctypes integration tests (local, companion module)

Dependencies

Zero runtime dependencies. Pure Rust with direct OS syscall FFI.

Files

  • \src/lib.rs, \src/mmap.rs, \src/scanner.rs, \src/ffi.rs\ — core library
  • \mmap_chunker.h\ — public C header with full API docs, threading contract, and ABI stability notes
  • \�xamples/c_consumer.c\ — real external C ABI consumer (15 assertions)
  • \ ests/c_abi_test.rs\ — Rust-side C ABI integration tests
  • \ ests/benchmark.rs\ — mmap vs \ s::read\ performance comparison

Known limitations

  • Full-file mmap only (no windowed mapping)
  • Single-byte delimiter only
  • Read-only access
  • Eager chunk computation (no lazy/streaming iteration)