Skip to content

v0.8.0

Latest
Compare
Choose a tag to compare
@Enet4 Enet4 released this 06 Nov 14:49
· 37 commits to master since this release

DICOM-rs 0.8.0

This is a major release of DICOM-rs, boasting an ample collection of new capabilities. Highlights are async support for network applications (via Tokio), and support for a bunch of new transfer syntaxes, including the brand new one for JPEG XL!
Images in JPEG-LS, High Throughput JPEG 2000 (HTJ2K), and JPEG XL can now be decoded, and pixel data can be encoded to JPEG-LS and JPEG XL Lossless.

Changes

  • A minimal Rust compiler version policy is now implemented (#587 @qarmin)
    • 1.72.0 is the minimum version supported by all library crates with the default features. Binary crates or additional features may affect compatibility and require a more recent version of the compiler.
  • [ul,storescp,storescu] New async implementation of dicom_ul, with application in tools dicom-storescu and dicom-storescp. (#542 @naterichman)
    • While the association API for synchronous I/O has not changed. there were breaking changes in the isolated PDU reading functions.
  • [encoding] The expected behavior of pixel data decoding for single sample per pixel images was clarified (#593)
  • [dictionary-std] Updated tags and uids (#578,#594)
    • A few tag keywords have changed from the upstream source.

New

  • [ts-registry] Support for JPEG-LS image decoding via CharLS (#534 @dougyau)
  • [ts-registry] High-Throughput JPEG 2000 (HTJ2K) transfer syntaxes with decoding support via OpenJPEG (#499)
  • [ts-registry] JPEG XL transfer syntaxes with native support for decoding via jxl-oxide and encoding via zune-jpegxl (#571)
  • [ts-registry] JPEG-LS pixel data encoder via CharLS (#573)
  • [ul] Add connection timeout (#569,#570 @jmlaka)
  • [object] New method FileDicomObject::update_meta (#572)
  • [pixeldata] Add support for pixel-first planar configuration (#575 @abustany)
  • [fromimage] Add --encapsulate option to encase a file in a DICOM object without converting it to native pixel data (#579)
  • [parser] Add configurable strategy for handling odd length data elements (#567)
  • [object] Constructive operations through the attribute operations API now create nested sequences recursively, so that intermediate sequence elements do not have to be created first (#574)

Fixes

  • [core] Require DICOM times to encode with the given precision even for 0 microseconds (#557)
  • [object] Adjust file meta information group length calculation (#566)
  • [pixeldata] Fix discrepancy between multi and single frame decode_pixel_data in GDCM integration (#562 @thomas-tribus)
  • [pixeldata] Update meta information group length in dicom-transcode output (#572)
  • [ul] Fix issues around dicom_ul::get_client_pdu (#590)
  • [scpproxy] Tweak handling of connection closed event (#590)
  • Fix documentation and dictionary typos found via codespell (#558 @DimitriPapadopoulos)

Enhancements

Miscellaneous

  • [parser] Recover API compatibility (#583)
  • [ul] Rework API (#582,#592)
  • [object,ul] Update implementation class UID and version name (#584,#591)
  • Clippy linting (#580,#586)

📦 Updated crates

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

🙏 Thanks

A word of thanks to the new DICOM-rs contributors @DimitriPapadopoulos and @abustany.

And one more word of thanks to veteran contributors @naterichman for bringing async network support to the ecosystem, and @dougyau for the integration with CharLS, which enabled JPEG-LS support.

Full Changelog: v0.7.1...v0.8.0