Skip to content

Releases: jeffhuen/RustyCSV

v0.3.10

04 Mar 04:38

Choose a tag to compare

Bump version to 0.3.10: Input size guard, strategy docs, pinned rustler

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

v0.3.9

16 Feb 19:46

Choose a tag to compare

See CHANGELOG.md

v0.3.8

12 Feb 04:03

Choose a tag to compare

Bump version to 0.3.8: Add musl/alpine compatibility for mimalloc

v0.3.7

03 Feb 20:32

Choose a tag to compare

Fix version: use 0.3.7 (Cargo doesn't support 4-part versions)

v0.3.6

03 Feb 05:07

Choose a tag to compare

Update Cargo.lock for v0.3.6

v0.3.5

02 Feb 15:51

Choose a tag to compare

Eliminate all unsafe from application code and bump to v0.3.5

- Replace hand-rolled enif_make_sub_binary FFI with rustler's safe
  Binary::make_subbinary().into() API (enabled by upstream PR #719)
- Remove CLMUL (x86_64) and PMULL (aarch64) std::arch intrinsics from
  SIMD scanner; use portable shift-and-xor cascade on all targets
  (benchmarked with no measurable difference on 15MB/100K-row workloads)
- Pin rustler dependency to git master pending 0.37.3 hex release
- Update README, ARCHITECTURE, BENCHMARK, and CHANGELOG docs

The only remaining unsafe is the GlobalAlloc trait impl behind the
opt-in memory_tracking feature flag (benchmarking only, not for
production use).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v0.3.4

02 Feb 07:48

Choose a tag to compare

Add Rust nightly to CI workflow

CI clippy and cargo test need nightly for portable_simd feature.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v0.3.3

30 Jan 06:04

Choose a tag to compare

Harden NIF safety and bump to v0.3.3

Replace all unwrap() calls in production Rust NIF code with match +
early return, enforce with cfg_attr(not(test), deny(clippy::unwrap_used,
clippy::expect_used)). Add cargo clippy and cargo test to CI. Add
property-based tests (StreamData) and concurrent access tests. Update
all moduledocs to document dirty CPU scheduling, concurrency safety,
and dedicated rayon thread pool.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v0.3.2

30 Jan 01:42

Choose a tag to compare

Harden NIF safety and bump to v0.3.2

Five internal safety fixes, all on by default with zero configuration:

- Mutex poisoning recovery: streaming NIFs raise :mutex_poisoned instead
  of panicking the VM when a previous call panicked under the lock
- Dirty CPU scheduling: 12 NIFs that process unbounded input now run on
  dirty CPU schedulers to avoid blocking normal BEAM schedulers
- Sub-binary bounds check: make_subbinary validates start+len<=input_len
  with debug_assert and a release-mode empty-binary safety net
- Dedicated rayon thread pool: parallel parsing uses a named rustycsv-*
  pool instead of the global rayon pool, avoiding contention
- Bounded streaming buffer: 256 MB default cap with :buffer_overflow
  raise, configurable via :max_buffer_size option

Also fixes Error::Term -> Error::RaiseTerm so buffer overflow and mutex
poisoning actually raise exceptions instead of silently returning error
tuples. Adds 12 new streaming safety tests and fixes a flawed assertion
in edge_cases_test.exs that could never fail.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v0.3.1

29 Jan 07:19

Choose a tag to compare

Fix Rust formatting in general strategy

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>