Skip to content

v0.9.0

Choose a tag to compare

@jeandet jeandet released this 01 Apr 20:51
· 320 commits to main since this release

What's new

Features

  • SIMD-optimized time conversions — AVX512/AVX2/SSE2 runtime dispatch for CDF_EPOCH, EPOCH16, and TT2000 conversions
  • Improved Python error messages — actionable exception messages with context throughout the Python API
  • Keyword argument validation — Python API now rejects unexpected keyword arguments
  • Empty name rejection — Variables and Attributes can no longer be created with empty names

Bug fixes

  • Fix epoch16 to_epoch16 catastrophic cancellation losing sub-second precision
  • Fix leap_second() off-by-one error
  • Fix pre-1972 TT2000 handling
  • Fix RLE corruption for sequences of >256 zeros
  • Fix nomap container: swap corruption, const_iterator UB, asymmetric equality
  • Fix mmap MAP_FAILED not detected as invalid mapping, fd leak on failure
  • Fix null-check for libdeflate compressor
  • Fix record_count * record_size uint32_t overflow
  • Fix missing std::move in Variable constructors and rvalue assignment operators
  • Fix blk_iterator postfix operator++ calling step_forward(0)
  • Fix CDF_UCHAR shape handling
  • Fix cdf_map.__getitem__ to raise KeyError instead of silently inserting
  • Fix missing CPR record for empty compressed variables (#52)
  • Fix ZSTD error checking and meson ZSTD build

Modernization

  • Three rounds of C++20 modernization: concepts, structured bindings, std::ranges, if constexpr, std::visit with overload pattern
  • Apple Clang 15 compatibility fix (Visitor deduction guide)

CI

  • Bump codecov/codecov-action v5→v6, cibuildwheel 3.2→3.4, actions/upload-artifact v6→v7, actions/download-artifact v7→v8

Full Changelog: v0.8.6...v0.9.0