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
rayonwas disabled. Now it has been excluded from codec implementations, so that it is only really included with therayonfeature enabled. (#785) - Support for DICOM over TLS in tools
dicom-storescuanddicom-storescphas been gated on Cargo feature "tls" (#789) - [ts-registry] Cargo feature
openjpeg-sys-threadsnow also impliesopenjpeg-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-movescuprovides 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_toparameter, 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-oxideandzune-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
PartialEqforFileMetaTable(#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
AsyncPdataWriterhanging 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_titlemethod 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_implto 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-movescu0.10.0
📦 Updated crates
dicom-core0.10.0dicom-dictionary-std0.10.0dicom-encoding0.10.0dicom-parser0.10.0dicom-transfer-syntax-registry0.10.0dicom-ul0.10.0dicom-scpproxy0.10.0dicom-object0.10.0dicom-json0.10.0dicom-dump0.10.0dicom-pixeldata0.10.0dicom-app-common0.10.0dicom-echoscu0.10.0dicom-findscu0.10.0dicom-storescp0.10.0dicom-storescu0.10.0dicom-toimage0.10.0dicom-fromimage0.10.0dicom-dictionary-builder0.10.0dicom0.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