hashintel / hash

🚀 The open-source, multi-tenant, self-building knowledge graph
https://hash.dev
Other
1.08k stars 83 forks source link

Update Rust crate `image` to 0.25.0 #5661

Closed hash-worker[bot] closed 18 hours ago

hash-worker[bot] commented 18 hours ago

This PR contains the following updates:

Package Type Update Change
image workspace.dependencies minor 0.24.9 -> 0.25.0

Release Notes

image-rs/image (image) ### [`v0.25.5`](https://redirect.github.com/image-rs/image/blob/HEAD/CHANGES.md#Version-0255) [Compare Source](https://redirect.github.com/image-rs/image/compare/v0.25.4...v0.25.5) Features: - Added support for decoding 10-bit and 12-bit AVIF - Initial, opt-in serde support for an enum. This may be extended to other types in the future. Bug fixes: - [Multiple bug fixes in AVIF decoding](https://redirect.github.com/image-rs/image/pull/2373) - The `rayon` feature now correctly toggles the use of `rayon` when encoding AVIF. (Previously it would be either always on or always off depending on the version of the `ravif` crate in your dependency tree.) - "jfif" file extension for JPEG images is now recognized ### [`v0.25.4`](https://redirect.github.com/image-rs/image/blob/HEAD/CHANGES.md#Version-0254) [Compare Source](https://redirect.github.com/image-rs/image/compare/v0.25.3...v0.25.4) Features: - Much faster decoding of lossless WebP due to a variety of optimizations. Our benchmarks show 2x to 2.5x improvement. - Added support for orientation metadata, so that e.g. smartphone camera images could be displayed correctly: - Added `ImageDecoder::orientation()` and implemented orientation metadata extraction for JPEG, WebP and TIFF formats - Added `DynamicImage::apply_orientation()` to apply the orientation to an image - Added support for extracting Exif metadata from images via `ImageDecoder::exif_metadata()`, and implemented it for JPEG and WebP formats - Added `ImageEncoder::set_icc_profile()` and implemented it for WebP format. Pull requests with implementations for other formats are welcome. - Added `DynamicImage::fast_blur()` for a linear-time approximation of Gaussian blur, which is much faster at larger blur radii Bug fixes: - Fixed some APNG images being decoded incorrectly - Fixed the iterator over animated WebP frames to return `None` instead of an error when the end of the animation is reached ### [`v0.25.3`](https://redirect.github.com/image-rs/image/blob/HEAD/CHANGES.md#Version-0253) [Compare Source](https://redirect.github.com/image-rs/image/compare/v0.25.2...v0.25.3) Yanked! This version accidentally missed a commit that should have been included with the release. The `Orientation` struct should be in the appropriate module instead of the top-level. This release won't be supported. ### [`v0.25.2`](https://redirect.github.com/image-rs/image/blob/HEAD/CHANGES.md#Version-0252) [Compare Source](https://redirect.github.com/image-rs/image/compare/v0.25.1...v0.25.2) Features: - Added the HDR encoder to supported formats in generic write methods with the `hdr` feature enabled. Supports 32-bit float RGB color only, for now. - When cloning `ImageBuffer`, `DynamicImage` and `Frame` the existing buffer will now be reused if possible. - Added `image::ImageReader` as an alias. - Implement `ImageEncoder` for `HdrEncoder`. Structural changes - Switch from `byteorder` to `byteorder-lite`, consolidating some casting unsafety to `bytemuck`. - Many methods on `DynamicImage` and buffers gained `#[must_use]` indications. Bug fixes: - Removed test data included in the crate archive. - The WebP animation decoder stops when reaching the indicate frame count. - Fixed bugs in the `bmp` decoder. - Format support gated on the `exr` feature now compiles in isolation. ### [`v0.25.1`](https://redirect.github.com/image-rs/image/blob/HEAD/CHANGES.md#Version-0251) [Compare Source](https://redirect.github.com/image-rs/image/compare/v0.25.0...v0.25.1) Bug fixes: - Fixed corrupt JPEG output when attempting to encode images containing an alpha channel. - Only accept ".ff" file extension for farbfeld images. - Correct farbfeld feature flag for `ImageFormat::{reading_enabled, writing_enabled}`. - Disable strict mode for JPEG decoder. - Add nasm feature to optionally enable faster AVIF encoding. ### [`v0.25.0`](https://redirect.github.com/image-rs/image/blob/HEAD/CHANGES.md#Version-0250) [Compare Source](https://redirect.github.com/image-rs/image/compare/v0.24.9...v0.25.0) Breaking changes: - Added `BufRead` + `Seek` bound on many decoders. - Use `ExtendedColorType` instead of `ColorType` when encoding. - Removed `ImageOutputFormat`, `GenericImageView::bounds`, and several other deprecated items. - Removed incremental decoding support and changed `ImageDecoder` so the trait is object safe. - Pixel types are now `repr(transparent)` rather than `repr(C)`. - Made color_quant dependency optional. - Renamed some feature flags. Structural changes: - Increased MSRV to 1.67.1 Codec changes: - Switched to image-webp for WebP encoding. - Switched to zune-jpeg for JPEG decoding. - Made the HDR decoder produce f32 images. - Removed DXT encoding and decoding support.

Configuration

📅 Schedule: Branch creation - "before 4am every weekday,every weekend" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.



This PR has been generated by Renovate Bot.

github-actions[bot] commented 18 hours ago

Benchmark results

@rust/hash-graph-benches – Integrations

## representative_read_entity | Function | Value | Mean | Flame graphs | |----------|-------|------|--------------| | entity_by_id | entity type ID: `https://blockprotocol.org/@alice/types/entity-type/book/v/1` | $$16.7 \mathrm{ms} \pm 214 \mathrm{μs}\left({\color{gray}-0.753 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity/entity_by_id/entity+type+ID_+`https___blockprotocol.org_@alice_types_entity-t/flamegraph.svg) | | entity_by_id | entity type ID: `https://blockprotocol.org/@alice/types/entity-type/person/v/1` | $$16.0 \mathrm{ms} \pm 201 \mathrm{μs}\left({\color{gray}-4.482 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity/entity_by_id/entity+type+ID_+`https___blockprotocol.org_@alice_types_entity-t_5/flamegraph.svg) | | entity_by_id | entity type ID: `https://blockprotocol.org/@alice/types/entity-type/block/v/1` | $$16.4 \mathrm{ms} \pm 171 \mathrm{μs}\left({\color{gray}0.108 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity/entity_by_id/entity+type+ID_+`https___blockprotocol.org_@alice_types_entity-t_4/flamegraph.svg) | | entity_by_id | entity type ID: `https://blockprotocol.org/@alice/types/entity-type/page/v/2` | $$16.8 \mathrm{ms} \pm 184 \mathrm{μs}\left({\color{gray}2.43 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity/entity_by_id/entity+type+ID_+`https___blockprotocol.org_@alice_types_entity-t_8/flamegraph.svg) | | entity_by_id | entity type ID: `https://blockprotocol.org/@alice/types/entity-type/building/v/1` | $$16.4 \mathrm{ms} \pm 212 \mathrm{μs}\left({\color{gray}4.14 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity/entity_by_id/entity+type+ID_+`https___blockprotocol.org_@alice_types_entity-t_7/flamegraph.svg) | | entity_by_id | entity type ID: `https://blockprotocol.org/@alice/types/entity-type/organization/v/1` | $$16.6 \mathrm{ms} \pm 185 \mathrm{μs}\left({\color{gray}2.29 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity/entity_by_id/entity+type+ID_+`https___blockprotocol.org_@alice_types_entity-t_9/flamegraph.svg) | | entity_by_id | entity type ID: `https://blockprotocol.org/@alice/types/entity-type/song/v/1` | $$16.8 \mathrm{ms} \pm 230 \mathrm{μs}\left({\color{gray}0.481 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity/entity_by_id/entity+type+ID_+`https___blockprotocol.org_@alice_types_entity-t_6/flamegraph.svg) | | entity_by_id | entity type ID: `https://blockprotocol.org/@alice/types/entity-type/uk-address/v/1` | $$15.9 \mathrm{ms} \pm 162 \mathrm{μs}\left({\color{lightgreen}-6.743 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity/entity_by_id/entity+type+ID_+`https___blockprotocol.org_@alice_types_entity-t_2/flamegraph.svg) | | entity_by_id | entity type ID: `https://blockprotocol.org/@alice/types/entity-type/playlist/v/1` | $$16.2 \mathrm{ms} \pm 168 \mathrm{μs}\left({\color{gray}-2.217 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity/entity_by_id/entity+type+ID_+`https___blockprotocol.org_@alice_types_entity-t_3/flamegraph.svg) | ## representative_read_multiple_entities | Function | Value | Mean | Flame graphs | |----------|-------|------|--------------| | entity_by_property | depths: DT=255, PT=255, ET=255, E=255 | $$70.0 \mathrm{ms} \pm 489 \mathrm{μs}\left({\color{gray}1.57 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/entity_by_property/depths_+DT=255,+PT=255,+ET=255,+E=255/flamegraph.svg) | | entity_by_property | depths: DT=0, PT=0, ET=0, E=0 | $$40.9 \mathrm{ms} \pm 297 \mathrm{μs}\left({\color{gray}1.91 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/entity_by_property/depths_+DT=0,+PT=0,+ET=0,+E=0/flamegraph.svg) | | entity_by_property | depths: DT=2, PT=2, ET=2, E=2 | $$59.2 \mathrm{ms} \pm 334 \mathrm{μs}\left({\color{gray}1.74 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/entity_by_property/depths_+DT=2,+PT=2,+ET=2,+E=2/flamegraph.svg) | | entity_by_property | depths: DT=0, PT=0, ET=0, E=2 | $$44.7 \mathrm{ms} \pm 216 \mathrm{μs}\left({\color{gray}1.29 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/entity_by_property/depths_+DT=0,+PT=0,+ET=0,+E=2/flamegraph.svg) | | entity_by_property | depths: DT=0, PT=0, ET=2, E=2 | $$50.4 \mathrm{ms} \pm 436 \mathrm{μs}\left({\color{gray}1.09 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/entity_by_property/depths_+DT=0,+PT=0,+ET=2,+E=2/flamegraph.svg) | | entity_by_property | depths: DT=0, PT=2, ET=2, E=2 | $$54.9 \mathrm{ms} \pm 320 \mathrm{μs}\left({\color{gray}1.28 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/entity_by_property/depths_+DT=0,+PT=2,+ET=2,+E=2/flamegraph.svg) | | link_by_source_by_property | depths: DT=255, PT=255, ET=255, E=255 | $$106 \mathrm{ms} \pm 576 \mathrm{μs}\left({\color{gray}-0.827 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/link_by_source_by_property/depths_+DT=255,+PT=255,+ET=255,+E=255/flamegraph.svg) | | link_by_source_by_property | depths: DT=0, PT=0, ET=0, E=0 | $$43.3 \mathrm{ms} \pm 140 \mathrm{μs}\left({\color{gray}2.25 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/link_by_source_by_property/depths_+DT=0,+PT=0,+ET=0,+E=0/flamegraph.svg) | | link_by_source_by_property | depths: DT=2, PT=2, ET=2, E=2 | $$97.9 \mathrm{ms} \pm 574 \mathrm{μs}\left({\color{gray}0.078 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/link_by_source_by_property/depths_+DT=2,+PT=2,+ET=2,+E=2/flamegraph.svg) | | link_by_source_by_property | depths: DT=0, PT=0, ET=0, E=2 | $$81.1 \mathrm{ms} \pm 596 \mathrm{μs}\left({\color{gray}1.44 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/link_by_source_by_property/depths_+DT=0,+PT=0,+ET=0,+E=2/flamegraph.svg) | | link_by_source_by_property | depths: DT=0, PT=0, ET=2, E=2 | $$89.4 \mathrm{ms} \pm 498 \mathrm{μs}\left({\color{gray}0.076 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/link_by_source_by_property/depths_+DT=0,+PT=0,+ET=2,+E=2/flamegraph.svg) | | link_by_source_by_property | depths: DT=0, PT=2, ET=2, E=2 | $$93.8 \mathrm{ms} \pm 588 \mathrm{μs}\left({\color{gray}0.386 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_multiple_entities/link_by_source_by_property/depths_+DT=0,+PT=2,+ET=2,+E=2/flamegraph.svg) | ## representative_read_entity_type | Function | Value | Mean | Flame graphs | |----------|-------|------|--------------| | get_entity_type_by_id | Account ID: `d4e16033-c281-4cde-aa35-9085bf2e7579` | $$1.37 \mathrm{ms} \pm 4.20 \mathrm{μs}\left({\color{gray}0.050 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/representative_read_entity_type/get_entity_type_by_id/Account+ID_+`d4e16033-c281-4cde-aa35-9085bf2e7579`/flamegraph.svg) | ## scaling_read_entity_complete_one_depth | Function | Value | Mean | Flame graphs | |----------|-------|------|--------------| | entity_by_id | 50 entities | $$546 \mathrm{ms} \pm 3.60 \mathrm{ms}\left({\color{red}110 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_one_depth/entity_by_id/50+entities/flamegraph.svg) | | entity_by_id | 5 entities | $$25.1 \mathrm{ms} \pm 109 \mathrm{μs}\left({\color{gray}0.028 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_one_depth/entity_by_id/5+entities/flamegraph.svg) | | entity_by_id | 1 entities | $$20.0 \mathrm{ms} \pm 105 \mathrm{μs}\left({\color{gray}-1.960 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_one_depth/entity_by_id/1+entities/flamegraph.svg) | | entity_by_id | 10 entities | $$49.8 \mathrm{ms} \pm 1.33 \mathrm{ms}\left({\color{red}59.8 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_one_depth/entity_by_id/10+entities/flamegraph.svg) | | entity_by_id | 25 entities | $$71.2 \mathrm{ms} \pm 297 \mathrm{μs}\left({\color{gray}-0.788 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_one_depth/entity_by_id/25+entities/flamegraph.svg) | ## scaling_read_entity_linkless | Function | Value | Mean | Flame graphs | |----------|-------|------|--------------| | entity_by_id | 1 entities | $$1.88 \mathrm{ms} \pm 6.24 \mathrm{μs}\left({\color{gray}1.53 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_linkless/entity_by_id/1+entities/flamegraph.svg) | | entity_by_id | 100 entities | $$1.95 \mathrm{ms} \pm 7.68 \mathrm{μs}\left({\color{gray}-4.356 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_linkless/entity_by_id/100+entities/flamegraph.svg) | | entity_by_id | 10 entities | $$1.89 \mathrm{ms} \pm 7.41 \mathrm{μs}\left({\color{gray}-0.276 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_linkless/entity_by_id/10+entities/flamegraph.svg) | | entity_by_id | 1000 entities | $$2.82 \mathrm{ms} \pm 20.6 \mathrm{μs}\left({\color{gray}0.920 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_linkless/entity_by_id/1000+entities/flamegraph.svg) | | entity_by_id | 10000 entities | $$13.7 \mathrm{ms} \pm 92.0 \mathrm{μs}\left({\color{gray}0.897 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_linkless/entity_by_id/10000+entities/flamegraph.svg) | ## scaling_read_entity_complete_zero_depth | Function | Value | Mean | Flame graphs | |----------|-------|------|--------------| | entity_by_id | 50 entities | $$5.27 \mathrm{ms} \pm 24.4 \mathrm{μs}\left({\color{red}28.5 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_zero_depth/entity_by_id/50+entities/flamegraph.svg) | | entity_by_id | 5 entities | $$1.88 \mathrm{ms} \pm 11.6 \mathrm{μs}\left({\color{gray}-0.471 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_zero_depth/entity_by_id/5+entities/flamegraph.svg) | | entity_by_id | 1 entities | $$1.86 \mathrm{ms} \pm 9.71 \mathrm{μs}\left({\color{gray}-0.680 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_zero_depth/entity_by_id/1+entities/flamegraph.svg) | | entity_by_id | 10 entities | $$2.12 \mathrm{ms} \pm 11.8 \mathrm{μs}\left({\color{gray}2.06 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_zero_depth/entity_by_id/10+entities/flamegraph.svg) | | entity_by_id | 25 entities | $$3.27 \mathrm{ms} \pm 22.4 \mathrm{μs}\left({\color{gray}-0.456 \mathrm{\\%}}\right) $$ | [Flame Graph](https://benchmarks.hash.dev/2692ad24a20b7f71c166a02c9f14670bec1a6060/scaling_read_entity_complete_zero_depth/entity_by_id/25+entities/flamegraph.svg) |