All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Remove include to fix upload so source files build correctly
- Derive a
Debug
implementation forslow5::EnumField
- MSRV verified at 1.70 on ARM MacOS
- Add support for new compression algorithm
slow5::SignalCompression::ExZd
- Control log output from slow5lib with
slow5::log
- Testing for all combinations of compression
- Additional
Debug
implementations - Bump MSRV to 1.70
- Mark
slow5::RecordCompression
andslow5::SignalCompression
as non-exhaustive. This is to help future proof from new compression algorithms forcing a semantic versioning major release. - Update
slow5lib-sys
to version0.10.0
- Update
slow5-rs
to version0.12.0
- Make
RawSignalIter
andPicoAmpsSignalIter
iterators public
- bump
slow5lib
submodule to v1.1.0 - bump
slow5lib-sys
to v0.9.0
- Switch from deprecated
bindgen::Builder
rustfmt_bindings method to formatter
- reader:
AuxEnumLabelIter
andFileReader::iter_aux_enum_label
for iterating through the labels for an enum auxiliary field - reader:
AttrKeyIter
andFileReader::iter_attr_keys
for iterating through the keys of all the attributes - auxiliary:
EnumField
type for getting/setting enum values for auxiliary fields - parallel: Add
Send
impl forFileReader
,RecordIter
, andRecord
- parallel: parallel read example for reading records in parallel with rayon
ParallelBridge
- field: Add
impl Vec<B> for B: Into<Vec<u8>>
as a convience for theFieldType::Enum
variant - errors: Additional errors for dealing with auxiliary setting
- serde: Add
Serialize
implementation forRecord
and optionalserde
dependency
- record:
RecordIter
now holds aFileReader
instead of a*mut slow5_file
- deps:
zstd
is now an optional dependency, enabled by default but can be disabled by settingdefault-features = false
- deps:
bindgen
dependency upgraded to 0.63 - aux: AuxFieldSetExt is pub
- write:
WriteOptions::aux
can now add enums - record:
Record::get_aux_field
now takes a implInto<Vec<u8>>
which should make the turbofish syntax less awkward
- aux: Removed the
to_slow5_t
required method onAuxField
since it wasn't necessary and making dealing with enums harder
- mem: Fixed potential memory leaks during error paths
- auxiliary: Added support for string (char *) and array auxiliary fields.
- reader + writer: Error for invalid file path based on the file extension.
- compression: File*::record_compression + File*::signal_compression to check what compression was used.
- all: Debug implementations for public types
- header: HeaderExt for using File* as a Header
- record: AuxFieldSetExt trait for specifying which types are allowed to be used to set auxiliary fields.
- writer: FileWriter returns Err(Slow5Error::Slow5CompressionError) if compression options are set for SLOW5 file output
- record: Record::set_aux_field value must implement AuxFieldSetExt instead of AuxField
- header: aux_names_iter will always return and for SLOW5 files with no auxiliary fields, it just returns an empty iterator
- record: Fixed bug in Record::set_aux_field where no error would occur but value would not get written to file. Fixed by extending lifetime of String used to set the aux_field and storing it in FileWriter.
- Fixed link to documentation on crates.io
- aux: AuxField trait map Rust types and C types that can represent auxiliary fields, currently only supports primitive data types
- writer: WriteOptions is a builder for FileWriter with auxiliary fields, attributes, and compression
- writer: Added FileWriter::header to get access to SLOW5 header
- record: Added Record::get_aux_field and Record::set_aux_field for accessing Record auxiliary fields
- record: Added PicoAmpsSignalIter and RawSignalIter for signal data iteration
- reader: Added ReadIdIter and FileReader::read_id_iter to iterate over all read ids in a SLOW5 file
- headers: Added AuxNamesIter and Header::aux_names_iter for going over auxiliary name keys
- docs: Fill out documentation for more items
- api: RecordPointer wraps the raw pointer and try to avoid leaking API
- examples: New example slow5 and blow5 files for testing and examples
- examples: auxiliary_field.rs to model slow5lib example
- record: RecordIter returns a Record
- sys: slowlib-sys now compiles with SIMD based on architecture, or disables it entirely. So it should now compile on more archtectures.
- writer: FileWriter::write_record remove, didn't add much and overlaps with add_record
- record: picoamps argument to some of the Record/RecordView
- record: remove SignalIterExt and combine with RecordExt
- record: remove SignalIter and replace with Raw and PicoAmp version
- header: remove HeaderView since all header attributes will be initialized at the beginning and no reason to mutate it afterwards.
- record: RecordBuilder::builder(), now moved to Record::builder to follow builder pattern
- record: RecordView removed because it was only used for iteration but ended creating a use-after-free bug so allocation is required anyways
- bug: use-after-free bug in RecordIter removed