Skip to content

v0.10.0

Latest

Choose a tag to compare

@Enet4 Enet4 released this 27 Jun 11:45

DICOM-rs 0.10.0

This milestone has finally arrived! DICOM-rs 0.10.0 comes with dependency updates, an updated Rust compiler version requirement, a revised support for DICOM over TLS, a Move SCU tool, and support for generic extended negotiation at the upper layer protocol, not to mention a bunch of fixes and improvements.

Changes

  • The minimum supported Rust version (MSRV) has been raised to 1.85.0 for all library crates with default features.
    As before, you might need a more recent version in order to build the tools, or build the library crates with extra features. (#757)
  • [ul] Implement generic Extended Negotiation (#734 @pgimeno4d)
  • Rayon was being included even when the Cargo feature rayon was disabled. Now it has been excluded from codec implementations, so that it is only really included with the rayon feature enabled. (#785)
  • Support for DICOM over TLS in tools dicom-storescu and dicom-storescp has been gated on Cargo feature "tls" (#789)
  • [ts-registry] Cargo feature openjpeg-sys-threads now also implies openjpeg-sys (#791 @bowenxuuu)
  • [ul] The association error type was adjusted in a way which may break existing pattern matches on error variants (#793)
  • [app-common] The dicom-app-common library has been revised to fix some bugs and provide better TLS support to existing tools. (#794)
    • This is only a breaking change to projects depending directly on app-common.

New

  • New crate dicom-movescu provides a CLI tool to transfer DICOM objects around via DIMSE (#707 @Enet4 & @knopkem)
  • [encoding] Add function to access frame pixeldata (#738 @feliwir)
  • [parser] Add adaptive VR decoder for explicit/implicit mismatch (#756 @nathannncurtis)
  • [object] Add read_to parameter, that allows to read certain dicom file, without excluding chosen tag (#763 @qarmin)
  • [pixeldata] Add constructors for 8-bit LUTs (#764)
  • [ul] Implement role negotiation (#765 @pgimeno4d)
  • [pixeldata] Updated Cargo feature set to consider the Cargo features jxl-oxide and zune-jpegxl (#785)

Fixes

  • [object] Resolve Collector API Missing Offset Table (#759 @beatrice-b-m)
  • [ul] Safeguard PDU reading from invalid sub-item lengths (#760)
  • [echoscu] Release association before closing the socket (#762)
  • [pixeldata] Fix linear LUT transform based on window level (#764)
  • [object] Reimplement PartialEq for FileMetaTable (#775)
  • [ul] Fix miscellaneous issues of varying importance (#772 @pgimeno4d)
  • [encoding] Check for overflow of u16 before writing the header (#777 @pgimeno4d)
  • [ul] Fix more Max PDU confusion (#771 @pgimeno4d)
  • [parser] Remove use of recursion in data set reader, as a means of protection from possibly malicious files (#774 @pgimeno4d)
  • [ul] Make buffer allocations more precise (#778 @pgimeno4d)
  • [ul] Fix AsyncPdataWriter hanging in some cases (#783 @naterichman)
  • [ul] Revise some TLS client connectivity checks and improve association error type (#793)
  • [encoding] Fix invalid array declaration in encode_tag (#797 @qarmin)

Enhancements

  • [ul] Expose called_ae_title method on server association structs (#755 @naterichman)
  • [ul/storescu] Add a clearer error messages for TLS/non-TLS connection mismatches (#779 @naterichman)
  • [dictionary-std] Update tag dictionary (#790)

Miscellaneous

  • Project maintenance: update dependencies and bump MSRV (#757)
  • Update clippy.toml with the latest MSRV (#761)
  • [ul] (test) tolerate peer-first socket close on association release (#766 @sjswerdloff)
  • [object] [ul] Update implementation class UID and version name for 0.10.0 (#769)
  • [ul] Move extended_negotiation_filter_impl to the Association trait (#770 @pgimeno4d)
  • [ts-registry] Updated dependencies of pixel data decoders and encoders: jxl-oxide 0.12, jpeg-encoder 0.6.1 or 0.7, zune-jpegxl 0.5 (#786)
  • Update contributor guidelines (#801)

📦 New crates

  • dicom-movescu 0.10.0

📦 Updated crates

  • dicom-core 0.10.0
  • dicom-dictionary-std 0.10.0
  • dicom-encoding 0.10.0
  • dicom-parser 0.10.0
  • dicom-transfer-syntax-registry 0.10.0
  • dicom-ul 0.10.0
  • dicom-scpproxy 0.10.0
  • dicom-object 0.10.0
  • dicom-json 0.10.0
  • dicom-dump 0.10.0
  • dicom-pixeldata 0.10.0
  • dicom-app-common 0.10.0
  • dicom-echoscu 0.10.0
  • dicom-findscu 0.10.0
  • dicom-storescp 0.10.0
  • dicom-storescu 0.10.0
  • dicom-toimage 0.10.0
  • dicom-fromimage 0.10.0
  • dicom-dictionary-builder 0.10.0
  • dicom 0.10.0

🙏 Thanks

It is acknowledged that it is not simply the code that creates more code, but the offered work and effort deposited on the project by more than 40 contributors since the beginning of the project.

Thank you again @pgimeno4d and @naterichman for the continued contributions to network support.

We also welcome @sjswerdloff, @nathannncurtis, @knopkem, and @shepmaster to the full list of DICOM-rs contributors.

What's next

As the number of reports progressively increase, the next versions will likely involve a lot of maintenance and bug squashing for better resilience.

Please be aware that the contributor guidelines have been updated.

Full Changelog: v0.9.1...v0.10.0