Skip to content

v0.9.0

Latest

Choose a tag to compare

@Enet4 Enet4 released this 04 Oct 13:56
· 12 commits to master since this release

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] PersonName can now hold both borrowed and owned strings (#635 @AlexTMjugador)
  • [encoding] Remove PartialEq derive on TransferSyntaxFactory, since it made no sense in the first place (#656)
  • [encoder/ts-registry] Fix submit_ele_transfer_syntax! so that it is usable, and extend Codec with helper functions (#640)
  • [pixeldata] The main pixeldata Error type 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 DicomObject trait has been revised to offer a usable high-level abstraction over DICOM object implementations (#524)
  • [core] Retrieval of fraction of second from DicomTime has been revised (#666 @pongis)
    • Method fraction no longer exists, instead use fraction_ms and fraction_micro to retrieve the fraction of a second regardless of the underlying precision.
  • [pixeldata] ndarray has been updated to 0.16.1 (#697)
  • [ul] Network applications are no longer bounded by a maximum PDU length of 131072 (#689)
  • [parser] New DataSetWriterOptions lets 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.
  • [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 FromStr for DicomDate and DicomTime (#666)
  • [ul] Add requestor_max_pdu_length() and acceptor_max_pdu_length() methods to ServerAssociation (#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 TransferSyntaxIndex from dicom_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-core 0.9.0
  • dicom-dictionary-std 0.9.0
  • dicom-encoding 0.9.0
  • dicom-parser 0.9.0
  • dicom-transfer-syntax-registry 0.9.0
  • dicom-ul 0.9.0
  • dicom-scpproxy 0.9.0
  • dicom-object 0.9.0
  • dicom-json 0.9.0
  • dicom-dump 0.9.0
  • dicom-pixeldata 0.9.0
  • dicom-echoscu 0.9.0
  • dicom-storescu 0.9.0
  • dicom-storescp 0.9.0
  • dicom-findscu 0.9.0
  • dicom-toimage 0.9.0
  • dicom-fromimage 0.9.0
  • dicom-dictionary-builder 0.9.0
  • dicom 0.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