Releases: ratal/mdfr
Releases · ratal/mdfr
More writing features and bug fixes
New Features
- MDF4 writing: CA block, CH block, DS/CL and CV/CU compositions, SR blocks, and Data Stream channels
- Unfinalised MDF4 file reading
- Channel Variants and Union array parsing
- Frequency sync channel type support
- Data stream mode for large files
- Schema-based typed metadata (
MdComment) for HD, FH, CN, CG, CC, SI, EV, AT, CH, DG blocks - Python:
PyErrexposed for conversion into Python exceptions
Bug Fixes
- Fixed VLSD reading regression
- Fixed value range conversion not matching MDF spec
- Fixed DL/HL/DZ block handling for VLSC channels
- Fixed UTF-16 wrong endianness
- Fixed half-float (f16) reading
- Fixed critical safety issues in the C API
Performance
- ~28% faster read on simple files
- Optimised performance for files with many channels
- Optimised VLSC sorted/unsorted data parsing
- Optimised CV and CU channel handling
Refactoring
- Split
mdfinfo4into per-block-type sub-modules - Endianness representation made less ambiguous
- Replaced
expect()/unwrap()calls with proper error propagation ChannelData::Displaymade fault-tolerant (logs errors instead of panicking)
Testing & CI
- Added tests for BigEndian channels (via LD blocks), Complex32, and ArrayDFloat64
- Increased overall test coverage
- Switched CI from nightly to stable Rust toolchain
- Added more Python version targets for wheel generation
- Updated all Cargo dependencies
Further MDF 4.3 implementations
Added reading:
- Event signals
- Data Description (partial as relying on external description)
- Data Stream
- Nested dynamic data composition
- Compressed embedded attachments
- Sample Reduction
Added writing
- Events
- Attachments
- VLSD/VLSC
- File History
- Source Information
- Channel Arrrays
- Channel History
- Guard Block
Enhanced testing and added block by block type specific metadata parsing (inline with schema)
Refactored code into several files as it was becoming really too big for mdf4.x
MDF 4.3 changes introduction
Added MDF v4.3 main new features:
- Variable Length signal data with Size Channel along with new VDBlock and GDBlock
- Dynamic data with Data Stream block and related Channel List, Channel Variant and Channel Union -> SOMEIP or DDS raw data should be readable
- New compression algorithms supported: ZStd and LZ4 in both Attachment and DZBlock
- Unicode with BOM support
hdf5 export feature
Mdf3 conversion bug fix
Fixed bug for value to text conversion
Improved debugging display of ChannelData, parquet export testing
Arrow-rs replacing Arrow2
- Replaced arrow2 by arrow-rs as arrow2 is an archived project. Created dedicated tensor and complex structs around arrow to better align with mdf specifics.
- refactored parquet export
- added get_channel_dtype()
- added features management by cargo (polars, numpy and parquet)
Arrow2 in ChannelData
Switched from ndarray to arrow2 to store channel data in memory, removing conversion and allowing direct memory access with C API or other tools like polars. Gained parsing 40% performance on typical mdf files.
Added more anyhow contexts in order to improve troubleshooting errors