Releases: Enet4/dicom-rs
Releases · Enet4/dicom-rs
0.2.0
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 aStatefulReader
type;Printer
type is aStatefulWriter
(#35) - [core] Updated
smallvec
to1.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 parentdicom
crate
- This allows you to use DICOM-rs in environments which do not yet support
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.0dicom-core
: 0.2.0dicom-encoding
: 0.2.0dicom-transfer-syntax-registry
: 0.2.0dicom-parser
: 0.2.0dicom-object
: 0.2.0dicom-dictionary-std
: 0.2.0dcmdump
: 0.2.0dicom-dictionary-builder
: 0.1.1
New crates:
dicom-ul
: 0.1.0dicom-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).