v0.5.0
This release marks yet another major milestone for the DICOM-rs project, featuring extended support for DICOM date and time values, a new library crate (dicom-pixeldata
), more tools (dicom-toimage
, dicom-fromimage
, dicom-dump
), and a multitude of improvements and bug fixes across the various crates.
Hopefully the release cycle of future versions will be shorter, so as to make each version bump less overwhelming.
Changes
- [core] The element API has been revamped to provide more accurate support for DICOM time and date values. (#137 #139 #143 #179 #185 #196 @jmlaka) (#213 #214)
- Instead of returning
chrono
instances, most methods now return custom types with awareness of partially defined dates and times (e.g.2014
being different from2014-01-01
). Methods which returnchrono
dates and times are still available under different names. - Date and time ranges can also be retrieved from DICOM primitive values.
- Instead of returning
- [object] The
dicom_object::pixeldata
module has been marked for removal. Seedicom-pixeldata
instead! (#133) - [core]
to_str
methods now automatically trim trailing whitespace from the inner string value (same behavior asto_clean_str
, which is now deprecated). (#198 @mfreeborn) - [dump] The crate
dcmdump
is deprecated in favor of the newdicom-dump
crate (#173 @charbeljc) - Error handling has been updated to use SNAFU version 0.7 (#202)
- [encoding] Some APIs were changed to accommodate pixel data decoding and encoding adapters. (#152 @pevers)
- [ul] The client association API was changed for more reliable control of presentation context handling and negotiation (#217 @natdash)
- [parser] The parser crate was submitted to a clean-up which affected constructors and type parameters of some structs. (#239)
New
- New crate
dicom-pixeldata
gives you APIs for working with pixel data, including turning them into images and multi-dimensional arrays (#112 @pevers) (#153 #220 #229)- Support for some encapsulated pixel data encodings is available as native implementations,
including RLE lossless (#152 @pevers) and various kinds of JPEG (#228 @ingwinlu). - To extend support for other transfer syntaxes, an integration with GDCM is available via the
gdcm
feature (#131 #176) (#222 @yigitsoy) - This crate includes a LUT implementation with common pixel data transformations (#234)
- Support for some encapsulated pixel data encodings is available as native implementations,
- New tool
dicom-fromimage
(#210) - New tool
dicom-toimage
(#203) - New crate
dicom-dump
which functions both as a tool and as a library (#173 @charbeljc) (#227) - Logging is now done project wide using
tracing
(#236) - [parser] A new lazy data set reader abstraction was added. This is still experimental and not yet used by the ecosystem, but will eventually play a key role in future DICOM object implementations (#126)
- [object] New
OpenFileOptions
API for specifying additional options to the file opening process (#199) - [object] New methods for element manipulation were added,
includingelement_opt
,element_by_name_opt
, andremove_element
. (#237 #224) - [dump] Can now dump more than one file at a time (#207 @natdash)
- [dump] Added option
--color=(auto|always|never)
(#161 @charbeljc) - [storescu] Can now send more than one file at a time (#211 @natdash)
Fixes and Enhancements
- Made transfer syntax registry more flexible against UIDs with null characters (#157 @BastienVigneron)
dump
was revamped with width adjustments and format updates (#142)- [object] Clarified magic code check error (invalid DICOM file) #150
- [storescu] Fixed issues in the PData value sending routine (#158 @charbeljc)
- [scpproxy] Fixed PDU transmission issues (#162 @charbeljc)
- [parser] Fixed encoder padding for even length data (#159)
- [parser] Fixed data set sequence reading routine for deeply nested data sets (#168)
- [object] Use length property for in-memory DICOM object construction (#171)
- [parser] Adjusted dataset writer to not trust the length reported in the file header (#172)
- [core] Fixed signature of
PrimitiveValue::new_i32
(#178 @jmlaka) - [parser] Updated text codec of stateful encoder (#156)
- [ul] Solved bugs related with PDU sending and receiving (#165)
- [object]
InMemDicomObject::with_meta
was fixed (#225) - [dictionary-builder] [dictionary-std] Updated data element dictionary and builder (#191)
- Corrected documentation for primitive values by (#197 @mfreeborn)
- [dump] Fixed
set_virtual_terminal
call on Windows (#208) - [dump] Removed control code in text values (#205 @aaronzs)
- Dependendy usage was constrained for faster builds (#235)
Miscellaneous
- [encoding] Converted doc comment and fixed doctest of
SpecificCharacterSet::from_code
(#223) - Updated
inventory
to 0.2 and adjusted the transfer syntax collection factory (#219) - Updated
byteordered
to v0.6 (#186) - Updated deprecations for 0.5.0 (#190)
- Made piece of code more compatible (#192 @jmlaka)
- Added association test for Store SCU/SCP (#218)
- Cargo clippy lint fixes (#195)
- Use patched version of dicom-test-files (#231)
Crates
Updated crates:
dicom
0.5.0dicom-core
0.5.0dicom-encoding
0.5.0dicom-transfer-syntax-registry
0.5.0dicom-dictionary-std
0.5.0dicom-parser
0.5.0dicom-object
0.5.0dicom-dump
0.5.0dcmdump
0.5.0 (deprecated)dicom-ul
0.4.0dicom-scpproxy
0.4.0dicom-dictionary-builder
0.3.0dicom-echoscu
0.2.0dicom-storescu
0.2.0
New crates:
dicom-pixeldata
0.1.0fromimage
0.1.0toimage
0.1.0
Thanks
This major version would not have been made possible with the combined effort of several people. In this version, I would like to add a special thank you to:
- Juráj Mlaka (@jmlaka) for bringing desirable changes to how DICOM date and time values are accessed and manipulated, including support for date-time ranges;
- Peter Evers (@pevers) for driving the much anticipated pixeldata initiative;
Moreover, a warm gratitude to the development efforts done by the following first contributors of DICOM-rs:
Full Changelog: v0.4.0...v0.5.0