Skip to content

0.2.0

Compare
Choose a tag to compare
@Enet4 Enet4 released this 24 May 16:39
· 1670 commits to master since this release

This is the second release of the DICOM-rs ecosytem, encompassing a substantial amount of fixes, new capabilities, and API changes.

The listings presented below may not be exhaustive, please see the documentation and new API signatures for more details.

New features

  • [core] New experimental dicom_value! macro for constructing DICOM values out of standard Rust values. (#35)
  • [parser] Extended the API in order to enable printing data tokens into a data source. (#32)
  • [core/encoding/parser/object] Encapsulated pixel data can be read, written, and manipulated in memory as a sequence of raw data items. (#42)
  • [core/encoding/parser/object] DICOM objects can be saved to a file. (#32 #35)
  • [dcmdump] Should now support files with non-natively encoded pixel data
  • [ul] A first implementation of the DICOM upper-layer protocol (#4 @pauldotknopf)
  • [scpproxy] A proof of concept implementation of a Proxy SCP, which can be used for logging and diagnostics (#4 @pauldotknopf)
  • [dictionary-std] Updated data dictionary in accordance to the 2020b standard specification

Major changes

  • [encoding] decoders and encoders now provide triple-handshaking traits: Decode for decoding from any source, DecodeFrom<S> for decoding from a specific source, and likewise for encoders (#32)
  • [parser] DicomParser type is now a StatefulReader type; Printer type is a StatefulWriter (#35)
  • [core] Updated smallvec to 1.0.0 (#25)
  • [transfer-syntax-registry] Inventory-based implementation of the transfer syntax registry is now optional
    • This allows you to use DICOM-rs in environments which do not yet support inventory (e.g. WebAssembly)
    • [encoding/object/transfer-syntax-registry] disabled by default, enable the inventory-registry Cargo feature
    • [parent] inventory-registry is enabled by default in the parent dicom crate

Fixes

  • [parser] Prevent the parsing of empty values (#24)
  • [parser] Sequences and items with an explicit length are correctly parsed, without expecting a delimiter (#22)
  • [encoding] Fixed the decoding of DA values with only the year specifier (#33 @nicosalvato)
  • [object] Made file meta group table reading more robust, allowing a missing meta file version (#29)
  • [parser] Fixed the parsing of sequence values with preceding spaces (#7 @pauldotknopf)

Chores & Tweaks

  • Removed deprecated uses of Error#description and improved error display messages (#41 @robyoung)
  • Added a bit more documentation to existing crates (#38 @robyoung)
  • Added Clippy to CI (#13 @pauldotknopf)

Updated crates:

  • dicom: 0.2.0
  • dicom-core: 0.2.0
  • dicom-encoding: 0.2.0
  • dicom-transfer-syntax-registry: 0.2.0
  • dicom-parser: 0.2.0
  • dicom-object: 0.2.0
  • dicom-dictionary-std: 0.2.0
  • dcmdump: 0.2.0
  • dicom-dictionary-builder: 0.1.1

New crates:

  • dicom-ul: 0.1.0
  • dicom-scpproxy: 0.1.0

Thanks

Sincere thanks to those who have contributed to this version with pull requests, bug reports and discussion that led to this new pre-release milestone.

Future work according to the roadmap will likely incise on:

  • Borrowing and/or off-memory constructs of DICOM information to enable an implementation of efficient and lazy DICOM objects;
  • Improving the presentation of errors;
  • A first version of the pixel data manipulation API, so that objects can be intuitively interpreted as an image or a multi-dimensional array, as well as an implementation for trivial cases (native encoding with trivial photometric interpretations).