DICOM-rs 0.9.0
DICOM-rs 0.9.0 is here! Rather than being feature-heavy, this version introduces API changes considered necessary in order to bring quality-of-life improvements and open up for more features in the future.
Still, some new offerings are worth highlighting here: reading and writing deflated datasets, adjustments to data set writing for reliability, an improved upper layer protocol stack, and a new DICOM object trait which works for different types of objects.
Changes
- [core] 
PersonNamecan now hold both borrowed and owned strings (#635 @AlexTMjugador) - [encoding] Remove 
PartialEqderive onTransferSyntaxFactory, since it made no sense in the first place (#656) - [encoder/ts-registry] Fix 
submit_ele_transfer_syntax!so that it is usable, and extendCodecwith helper functions (#640) - [pixeldata] The main pixeldata 
Errortype has been made opaque (#661)- Please file an issue if introspection on the kind of error is important to your use case.
 
 - [ts-registry/object] The dataset adapter API was rewritten to be more dynamic (#438 @naterichman)
 - [ul] association methods 
presentation_contexts()now also return the abstract syntax of the negotiated presentation context (#687 @pgimeno4d) - [object] The 
DicomObjecttrait has been revised to offer a usable high-level abstraction over DICOM object implementations (#524) - [core] Retrieval of fraction of second from 
DicomTimehas been revised (#666 @pongis)- Method 
fractionno longer exists, instead usefraction_msandfraction_microto retrieve the fraction of a second regardless of the underlying precision. 
 - Method 
 - [pixeldata] 
ndarrayhas been updated to 0.16.1 (#697) - [ul] Network applications are no longer bounded by a maximum PDU length of 131072 (#689)
 - [parser] New 
DataSetWriterOptionslets you choose how to handle the writing of sequences and items with an explicit length (#645 @jmlaka)- By default, the behavior is to write all nested dataset sequences and items with an undefined length,
which is the safest option when manipulating and saving DICOM data sets. - With 
DataSetWriterOptions::NoChange,
you get the old behavior of writing all lengths as originally defined,
requiring objects to be updated whenever sequences and items are changed in size. 
 - By default, the behavior is to write all nested dataset sequences and items with an undefined length,
 - [dictionary-std] update data element and UID dictionaries (#696)
- Note: dictionary updates may incur breaking changes because some entries may occasionally have their keyword changed, and old retired entries may be removed from the standard altogether.
 
 
New
- [ts-registry/object] Baseline support for reading and writing files in deflate transfer syntaxes, such as Deflated Explicit VR Little Endian (#438 @naterichman)
 - [encoding] Add support for the GBK character set (#682 @momostarsky)
 - [parser] Add option to override per-VR character set usage (#676)
 - [core] Implement 
FromStrforDicomDateandDicomTime(#666) - [ul] Add 
requestor_max_pdu_length()andacceptor_max_pdu_length()methods toServerAssociation(#685 @pgimeno4d) 
Fixes
- [pixeldata] Fix cases of bit_allocation 1 for 
decode_pixel_data(#668 @Cryt1c) - [pixeldata] Correct photometric interpretation in transcoding process (#673)
 - [ul] Refactor association establishment and fix possibility of data loss in its process (#677 @naterichman)
 - [ul] Fix mixup in negotiated PDU lengths (#689 @Enet4 @pgimeno4d)
 - [parser] Do not clear length of pixel data fragment item starts (#693)
 
Enhancements
- [ts-registry] re-export trait 
TransferSyntaxIndexfromdicom_encoding(#688) - [parser/object] Flush writer(s) after writing file meta and dataset (#690 @naterichman)
 
Miscellaneous
- [object] Beta compiler lint fix (#670)
 - [pixeldata/ul] Update rstest to 0.26.1 (#697)
 - [object/ul] Update implementation class UID and version name for v0.9.0 (#695)
 - Update Cargo.lock (#699)
 
📦 Updated crates
dicom-core0.9.0dicom-dictionary-std0.9.0dicom-encoding0.9.0dicom-parser0.9.0dicom-transfer-syntax-registry0.9.0dicom-ul0.9.0dicom-scpproxy0.9.0dicom-object0.9.0dicom-json0.9.0dicom-dump0.9.0dicom-pixeldata0.9.0dicom-echoscu0.9.0dicom-storescu0.9.0dicom-storescp0.9.0dicom-findscu0.9.0dicom-toimage0.9.0dicom-fromimage0.9.0dicom-dictionary-builder0.9.0dicom0.9.0
🙏 Thanks
As always, here is another word of appreciation to the community of new and veteran contributors who help bring DICOM-rs to new levels. Thanks a million!
The new DICOM-rs contributors in 0.9.0 are:
Future work
This would now be the time to start working on new features. The prospects on this are very good already: TLS support in the DICOM network stack, a new move SCU tool, and more may hopefully become part of 0.9.1.
Full Changelog: v0.8.2...v0.9.0