Sitelet https://github.com/SixLabors/ImageSharp/pull/2189
Skip to content

Remove obsolete code - #2189

Merged
JimBobSquarePants merged 23 commits into
mainfrom
js/remove-obsolete-code
Sep 12, 2022
Merged

JimBobSquarePants merged 23 commits into
mainfrom
js/remove-obsolete-code

Conversation

@JimBobSquarePants

Copy link
Copy Markdown
Member

Prerequisites

  • I have written a descriptive pull-request title
  • I have verified that there are no overlapping pull-requests open
  • I have verified that I am following the existing coding patterns and practice as demonstrated in the repository. These follow strict Stylecop rules 👮.
  • I have provided test coverage for my change (where applicable)

Description

Removes all obsolete conditions, obsolete methods, and fixes all compiler warnings.

@JimBobSquarePants
JimBobSquarePants requested a review from a team July 25, 2022 07:36
@JimBobSquarePants JimBobSquarePants changed the title Js/remove obsolete code Remove obsolete code Jul 25, 2022
@JimBobSquarePants JimBobSquarePants added this to the 3.0.0 milestone Jul 25, 2022

@gfoidl gfoidl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes per-se LGTM, but I expect there will be some perf-regression. See comment about Span.Slice vs Range operator.
Maybe you can write a comment on the Roslyn-issue to help them prioritize that one 😉

{
// Vector4 fits neatly in pairs. Any overlap has to be equal to 1.
Expand(ref MemoryMarshal.GetReference(vectors.Slice(vectors.Length - 1)));
Expand(ref MemoryMarshal.GetReference(vectors[^1..]));

@gfoidl gfoidl Jul 25, 2022 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old version may be more performant, unfortunately. This is tracked in dotnet/roslyn#43598, and you can see the difference in this sharplab.

If it's not perf-sensitive, then got with the new code, as it's cleaner to read.
Edit: this goes through that whole PR, there are definitely some hot places where this will have negative impact.
If Roslyn tackles that issue, perf will increase "for free".

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤦‍♂️ This is so frustrating. Why introduce an analyser that promotes worse behaviour?

a = b;
b = tmp;
}
static void Swap(ref short a, ref short b) => (b, a) = (a, b);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just as info:
Resulting machine code will be the same, but the IL-size is with the tuple-based approach a bit larger than with the local (old version).

I don't think it matters here, but potential drawbacks

  • JIT may give up inlining if any budget may exceed earlier --> add MethodImpl.AggressiveInlining (or the ImageSharp-equivalent) to be on the safe side?
  • on products where IL size matters this could have a negative effect (TBH I don't know if two bytes more or less count here, as the reduction overall is much bigger that this PR does, but just to point it out)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another poor analyser suggestion 😔

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm no compiler engineer*, but for me this pattern is easy to recognize, so "optimal" code should be emitted, even if Roslyn isn't a optimizing compiler (that's the role of the JIT), but regarding IL-size optimizations count towards Roslyn.

* so I have somewhat limited understanding on how things work there


int zeroIndex = data.IndexOf((byte)0);
if (zeroIndex < PngConstants.MinTextKeywordLength || zeroIndex > PngConstants.MaxTextKeywordLength)
if (zeroIndex is < PngConstants.MinTextKeywordLength or > PngConstants.MaxTextKeywordLength)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just FYI: dotnet/roslyn#60534

I'd leave the code as is, as it's basically the same as now just nicer to read. When Roslyn got that addressed the perf-goodness comes "for free".

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MO ANALYZERS MO PROBLEMS

Vp8ModeScore tmp = rdCur;
rdCur = rdBest;
rdBest = tmp;
(rdBest, rdCur) = (rdCur, rdBest);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use the swap-method from above (where I commented) instead (needs to be made generic then)?
Or drop the swap-method and write the one-line directly?

I don't have a strong opinion what's better here, but it should be consistent.
Leaning towards swap-method, as if there's a super nice trick once on how to swap more efficiently only one place needs to be updated.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 good idea

Comment thread src/ImageSharp/Formats/Webp/Lossy/Vp8EncIterator.cs
Comment thread src/ImageSharp/Common/Helpers/RuntimeUtility.cs Outdated

@antonfirsov antonfirsov left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, but somewhat concerned about var rules.


Vector<ushort> u0 = Vector.Narrow(w0, w1);
Vector<ushort> u1 = Vector.Narrow(w2, w3);
var u0 = Vector.Narrow(w0, w1);

@antonfirsov antonfirsov Sep 2, 2022 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In case of arrays the PR replaces var with the more specific T[] on the left side, which feels like an inconsistent configuration of rules, and personally I always prefer to have the type information around in case of primitive types. It's not immediately obvious what does Narrow return here.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’ve really struggled to get editorconfig to do what I want here (var rules are actually unchanged). This seems to fall under the “type is apparent” rule. There’s actually been a warning sitting in the code there for years, it just was ignored.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why arrays aren’t considered apparent I simply do not know.

@antonfirsov antonfirsov Sep 2, 2022 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it's "apparent" when a non-generic method on a non-generic type returns a variable with a generic type of the same name. The lack of the type argument hurts readability, especially with API-s like Vector.Narrow. Is there a way to fine-tune this rule so it doesn't kick in for these cases? What if we disable it entirely?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm gonna create an empty project and see if I can get the rules working using the VS editorconfig editor and a fresh file.

@JimBobSquarePants JimBobSquarePants Sep 3, 2022 •

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's var turned off everywhere. It's verbose as hell but at least it's consistent.

image

Here's with "when type is apparent"

This one is annoying because the byte[] declaration should be apparent and the Vector.Narrow(...) return value isn't
image

Here's "when type is apparent" and "built in types"

This one is annoying because the double and int primitives are not apparent in my opinion since they require the reader to know the syntax declaration rules on the right hand side.

image

Which do you prefer?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I may be very oldscool, but for me the first one is the lesser evil. I wonder what do others think @SixLabors/core?

This rule/analyzer (IDE0007?) really sucks. I wonder if there is a better way to raise awareness about it than posting on https://developercommunity.visualstudio.com/ which is a straight way to oblivion.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree and with the forcing of target type new we handle known types. I'll implement that.

There's actually 2 issues in Roslyn around this. (One closed as a duplicate)

dotnet/roslyn#23714
dotnet/roslyn#55722

I wish I could do this though. It's really annoying that I can't seem to find a way.

byte[] b = [10];

// <auto-generated />

<#
// Note use of MethodImplOptions.NoInlining. We have tests that are failing on certain architectures when

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this was specific to old runtimes?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep. All fixed now 😀

Comment thread src/Directory.Build.props
</PropertyGroup>

<PropertyGroup>
<CodeAnalysisRuleSet>..\ImageSharp.ruleset</CodeAnalysisRuleSet>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tend to only use forward slashes now because Windows now also supports that.

Comment thread src/ImageSharp/Formats/Png/PngHeader.cs
VerticalPred(dst.Slice(I16VE16), top, 16);
HorizontalPred(dst.Slice(I16HE16), left, 16);
TrueMotion(dst.Slice(I16TM16), left, top, 16);
DcMode(dst[..], left, top, 16, 16, 5);

@dlemstra dlemstra Sep 3, 2022 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I16DC16 seems to be missing here?

Turns out that I16DC16 is always zero. And that is probably why it was removed?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll re read the change.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need for a slice at all so just pass dst

@dlemstra dlemstra left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made a couple extra commits and I think we are good to go now for a merge.

@JimBobSquarePants
JimBobSquarePants merged commit e7d25a2 into main Sep 12, 2022
@JimBobSquarePants
JimBobSquarePants deleted the js/remove-obsolete-code branch September 12, 2022 01:29
xadupre pushed a commit to microsoft/onnxruntime that referenced this pull request Oct 8, 2026
Updated [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp)
from 2.1.9 to 4.1.2.

<details>
<summary>Release notes</summary>

_Sourced from [SixLabors.ImageSharp's
releases](https://github.com/SixLabors/ImageSharp/releases)._

## 4.1.2

## What's Changed
* Harden codec and metadata input validation by @​JimBobSquarePants in
SixLabors/ImageSharp#3187
* Fix TIFF decoding of legacy 8-bit color maps by @​JimBobSquarePants in
SixLabors/ImageSharp#3189


**Full Changelog**:
SixLabors/ImageSharp@v4.1.1...v4.1.2

## 4.1.1

## What's Changed
* Fix CCITT decompressor bounds checks and error handling by
@​JimBobSquarePants in SixLabors/ImageSharp#3176


**Full Changelog**:
SixLabors/ImageSharp@v4.1.0...v4.1.1

## 4.1.0

## What's Changed
* GIF: background handling & quantizer overflow fix by
@​JimBobSquarePants in SixLabors/ImageSharp#3133
* Validate PBM max pixel value by @​JimBobSquarePants in
SixLabors/ImageSharp#3134
* Add support for Apple CgBI PNG images by @​Erik-White in
SixLabors/ImageSharp#3136
* Fix GIF transparency handling and dither by @​JimBobSquarePants in
SixLabors/ImageSharp#3143
* Bump codecov/codecov-action from 6 to 7 by @​dependabot[bot] in
SixLabors/ImageSharp#3141
* Add BlendWithCoverage overloads. Optimize Rgba32 compatible shuffling.
by @​JimBobSquarePants in
SixLabors/ImageSharp#3150
* Bump actions/checkout from 6 to 7 by @​dependabot[bot] in
SixLabors/ImageSharp#3146
* Bump actions/cache from 5 to 6 by @​dependabot[bot] in
SixLabors/ImageSharp#3149
* Fix convolution sampling for bounds smaller than the kernel radius by
@​JimBobSquarePants in SixLabors/ImageSharp#3152
* Enhance pixel formats and associated-alpha operations with
optimizations by @​JimBobSquarePants in
SixLabors/ImageSharp#3154
* Bump actions/setup-dotnet from 5 to 6 by @​dependabot[bot] in
SixLabors/ImageSharp#3155
* Fix degeneracy check for resize transforms by @​JimBobSquarePants in
SixLabors/ImageSharp#3157
* Improvements to Apple CgBI PNG handling by @​Erik-White in
SixLabors/ImageSharp#3137
* Clone TIFF profiles into image metadata by @​JimBobSquarePants in
SixLabors/ImageSharp#3159
* Add AOT compiler seeds for pixel formats and ICO, CUR, QOI codecs by
@​JimBobSquarePants in SixLabors/ImageSharp#3160
* Normalize SIMD pipelines using TensorPrimitives_ by
@​JimBobSquarePants in SixLabors/ImageSharp#3161
* Add ANI decoder support by @​Poker-sang in
SixLabors/ImageSharp#2899
* Remove AntialiasThreshold from GraphicsOptions by @​JimBobSquarePants
in SixLabors/ImageSharp#3162
* Add plus and extended pixel blend modes by @​JimBobSquarePants in
SixLabors/ImageSharp#3163
* Fix 16-bit binary PBM sample byte order by @​JimBobSquarePants in
SixLabors/ImageSharp#3164
* Make MemoryAllocator limits configurable and extensible by
@​JimBobSquarePants in SixLabors/ImageSharp#3165

## New Contributors
* @​Erik-White made their first contribution in
SixLabors/ImageSharp#3136

**Full Changelog**:
SixLabors/ImageSharp@v4.0.0...v4.1.0

## 4.0.0

## What's Changed
* Update to net8 by @​stefannikolei in
SixLabors/ImageSharp#2583
* Handle dedup of local palette of 256 length - Main by
@​JimBobSquarePants in SixLabors/ImageSharp#2607
* Replace custom Crc32 by @​JimBobSquarePants in
SixLabors/ImageSharp#2611
* Sync 3.1 DrawImage fixes by @​tocsoft in
SixLabors/ImageSharp#2612
* Fix handling gif encoding for global palettes - Main by
@​JimBobSquarePants in SixLabors/ImageSharp#2615
* Bump actions/setup-dotnet from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2613
* Adjusted the casing of the Webp format name by @​jscarle in
SixLabors/ImageSharp#2623
* Fix Paeth Filter decode on platforms that do not support Ssse3 - Main
by @​JimBobSquarePants in
SixLabors/ImageSharp#2620
* Fix WebP animation speed bug by @​marklagendijk in
SixLabors/ImageSharp#2624
* Promote PixelTypeInfo to Pixel by @​stefannikolei in
SixLabors/ImageSharp#2601
* TGA: Treat 32 bit True Color images always as transparent by
@​brianpopow in SixLabors/ImageSharp#2643
* Modernize and optimize pixel format operations across platforms. by
@​JimBobSquarePants in SixLabors/ImageSharp#2645
* Cleanup SimdUtils by @​JimBobSquarePants in
SixLabors/ImageSharp#2654
* Bump actions/cache from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2648
* Bump codecov/codecov-action from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2657
* Bump NuGet/setup-nuget from 1 to 2 by @​dependabot[bot] in
SixLabors/ImageSharp#2658
* Add v3.1.x fixes #​2673 and #​2674 into main. by @​JimBobSquarePants
in SixLabors/ImageSharp#2675
* Add fixes 2668, 2676, and 2677 to main by @​JimBobSquarePants in
SixLabors/ImageSharp#2678
* Merge 2681 to v4 Main by @​JimBobSquarePants in
SixLabors/ImageSharp#2690
* Add JPEG COM marker support by @​RobertMut in
SixLabors/ImageSharp#2641
* Bump actions/upload-artifact from 3 to 4 by @​dependabot[bot] in
SixLabors/ImageSharp#2625
* Only exit JPEG scan decoding after multiple EOF hits by
@​JimBobSquarePants in SixLabors/ImageSharp#2701
* V4 Ensure VP8X alpha flag is updated correctly. by @​JimBobSquarePants
in SixLabors/ImageSharp#2703
* Fix animated png handling (issue #​2708) by @​SpaceCheetah in
SixLabors/ImageSharp#2710
* Merge latest release from v3 by @​JimBobSquarePants in
SixLabors/ImageSharp#2720
* Fix MacOS jobs by @​antonfirsov in
SixLabors/ImageSharp#2728
* Fix async-over-sync issue in Image.DecodeAsync() by @​kroymann in
SixLabors/ImageSharp#2725
* Fix overflow in MemoryAllocator.Create(options) by @​antonfirsov in
SixLabors/ImageSharp#2730
* GifDecoder: Limit lzw bits to a maximum of 12 bits by @​brianpopow in
SixLabors/ImageSharp#2744
* GifDecoder : Allow skipping bad metadata using identify by
@​JimBobSquarePants in SixLabors/ImageSharp#2749
* Add ICO and CUR file decoder. by @​frg2089 in
SixLabors/ImageSharp#2579
* v4 - Fix off-by-one error when centering a transform. by
@​JimBobSquarePants in SixLabors/ImageSharp#2761
* v4 Fix 2758 by @​JimBobSquarePants in
SixLabors/ImageSharp#2764
* Simplify Color Space Conversion APIs by @​JimBobSquarePants in
SixLabors/ImageSharp#2739
* Webp: Fix Issue 2763 by @​brianpopow in
SixLabors/ImageSharp#2767
* V4 Correctly break during Png decoding by @​JimBobSquarePants in
SixLabors/ImageSharp#2773
* V4 : Fix filtering on PNG encode. by @​JimBobSquarePants in
SixLabors/ImageSharp#2778
* Fix #​2779 buffer overrun by @​KirillAldashkin in
SixLabors/ImageSharp#2780
* Fix ImageMetadata docs typo by @​lofcz in
SixLabors/ImageSharp#2781
* Add API for metadata conversion between formats. by
@​JimBobSquarePants in SixLabors/ImageSharp#2751
* Tiff decoder: Fix issue 2679 by @​brianpopow in
SixLabors/ImageSharp#2789
* Replace PngCrcChunkHandling by @​JimBobSquarePants in
SixLabors/ImageSharp#2786
* Add tagname to debugger visualization for Exif- and Iptc-values, to
facilitate easier debugging and discovery by @​lassevk in
SixLabors/ImageSharp#2787
* V4 - Correctly handle transform spaces when building transform
matrices. by @​JimBobSquarePants in
SixLabors/ImageSharp#2795
* Allow decoding Tiff of different frame size. by @​JimBobSquarePants in
SixLabors/ImageSharp#2788
* Add progressive JPEG encoder by @​ardabada in
SixLabors/ImageSharp#2740
* Fix using dither in BmpEncoder when bit per pixel is <= 4 by @​mistoll
in SixLabors/ImageSharp#2819
* Add QuadDistortion to ProjectiveTransformBuilder by @​Socolin in
SixLabors/ImageSharp#2748
* WEBP : Use Correct Width With AlphaDecoder by @​JimBobSquarePants in
SixLabors/ImageSharp#2823
 ... (truncated)

## 3.1.12

## What's Changed
* v3 : Add Full Metadata Parsing for WEBP Animations by
@​JimBobSquarePants in SixLabors/ImageSharp#3002
* V3: Prevent negative allocation attempt for huge TIFF files by
@​JimBobSquarePants in SixLabors/ImageSharp#3004
* Backport v3 : Tiff decoder: Fix issue 2679 by @​JimBobSquarePants in
SixLabors/ImageSharp#3007


**Full Changelog**:
SixLabors/ImageSharp@v3.1.11...v3.1.12

## 3.1.11

## What's Changed
* Backport V3 - GIF: Check for end of stream when reading comments. by
@​JimBobSquarePants in SixLabors/ImageSharp#2955


**Full Changelog**:
SixLabors/ImageSharp@v3.1.10...v3.1.11

## 3.1.10

## What's Changed
* V3: Remove ExifTagValue.InteroperabilityIndex by @​JimBobSquarePants
in SixLabors/ImageSharp#2939
* V3 TIFF : Allow additional and undefined extra samples by
@​JimBobSquarePants in SixLabors/ImageSharp#2942
* V3 Use EXIF byte order for EXIF encoded strings. by
@​JimBobSquarePants in SixLabors/ImageSharp#2944
* V3 Backport : Reduce the number of memory allocations in lossless WebP
encoder by @​JimBobSquarePants in
SixLabors/ImageSharp#2947


**Full Changelog**:
SixLabors/ImageSharp@v3.1.9...v3.1.10

## 3.1.9

## What's Changed
* V3: Do not attempt to decode iDAT chunks when image is fully decoded.
by @​JimBobSquarePants in
SixLabors/ImageSharp#2927
* V3 - Do not throw exception for non-required chunks. by
@​JimBobSquarePants in SixLabors/ImageSharp#2929
* V3: Do not encode WEBP images exceeding max dimensions by
@​JimBobSquarePants in SixLabors/ImageSharp#2931


**Full Changelog**:
SixLabors/ImageSharp@v3.1.8...v3.1.9

## 3.1.8

## What's Changed
* V3 : Fix GIF, PNG, and WEBP Edge Case Handling by @​JimBobSquarePants
in SixLabors/ImageSharp#2882
* V3 Nested sub ifds parsing fix by @​JimBobSquarePants in
SixLabors/ImageSharp#2913
* V3: Undo horizontal prediction for each tile row in case of tiled
tiff's by @​JimBobSquarePants in
SixLabors/ImageSharp#2914
* V3 - Use BPP from Color Writer for Compressor by @​JimBobSquarePants
in SixLabors/ImageSharp#2915


**Full Changelog**:
SixLabors/ImageSharp@v3.1.7...v3.1.8

## 3.1.7

## What's Changed
* V3 : Decode Chunky Tile Rows Directly. by @​JimBobSquarePants in
SixLabors/ImageSharp#2874
* V3: Gracefully handle LZW overflows by @​JimBobSquarePants in
SixLabors/ImageSharp#2880
* [3.1] Set LangVersion=12 unconditionally by @​antonfirsov in
SixLabors/ImageSharp#2896


**Full Changelog**:
SixLabors/ImageSharp@v3.1.6...v3.1.7

## 3.1.6

## What's Changed
* Mono AOT decoder workaround for slow jpeg decoding. by
@​JimBobSquarePants in SixLabors/ImageSharp#2762
* V3 - Correctly handle transform spaces when building transform
matrices. by @​JimBobSquarePants in
SixLabors/ImageSharp#2791
* Backport : V3 Fix #​2779 buffer overrun by @​JimBobSquarePants in
SixLabors/ImageSharp#2824
* Backport - v3 WEBP : Use Correct Width With AlphaDecoder by
@​JimBobSquarePants in SixLabors/ImageSharp#2827
* Rewrite ChunkedMemoryStream by @​JimBobSquarePants in
SixLabors/ImageSharp#2828


**Full Changelog**:
SixLabors/ImageSharp@v3.1.5...v3.1.6

## 3.1.5

## What's Changed
* [3.1] Fix overflow in MemoryAllocator.Create(options) by @​antonfirsov
in SixLabors/ImageSharp#2731
* v3 - Backport. Handle out of bounds Gif LZW max code by
@​JimBobSquarePants in SixLabors/ImageSharp#2754
* Fix off-by-one error when centering a transform. by
@​JimBobSquarePants in SixLabors/ImageSharp#2760
* v3.1.x Fix 2758 by @​JimBobSquarePants in
SixLabors/ImageSharp#2759
* v3.1.x - Backport Webp: Fix Issue 2763/2692 by @​JimBobSquarePants in
SixLabors/ImageSharp#2768
* Correctly break during Png decoding by @​JimBobSquarePants in
SixLabors/ImageSharp#2769
* Fix filtering on PNG encode. by @​JimBobSquarePants in
SixLabors/ImageSharp#2775


**Full Changelog**:
SixLabors/ImageSharp@v3.1.4...v3.1.5

## 3.1.4

## What's Changed
* Backport - Only exit JPEG scan decoding after multiple EOF hits by
@​JimBobSquarePants in SixLabors/ImageSharp#2702
* Ensure VP8X alpha flag is updated correctly. by @​JimBobSquarePants in
SixLabors/ImageSharp#2699
* Backport APNG fix to release/3.1.x by @​SpaceCheetah in
SixLabors/ImageSharp#2713
* Limit Read Palette Indices by @​JimBobSquarePants in
SixLabors/ImageSharp#2718
* Limit all memory allocations in the MemoryAllocator layer by
@​antonfirsov in SixLabors/ImageSharp#2706
* Clear Pixel Buffers on Decode. by @​JimBobSquarePants in
SixLabors/ImageSharp#2716


**Full Changelog**:
SixLabors/ImageSharp@v3.1.3...v3.1.4

## 3.1.3

## What's Changed
* Make DrawImage processor more robust to bad input. by
@​JimBobSquarePants in SixLabors/ImageSharp#2673
* Don't skip reading data for animation chunks on identify. by
@​JimBobSquarePants in SixLabors/ImageSharp#2674
* Fix AccessViolationException and hard crash with animated webp by
@​JimBobSquarePants in SixLabors/ImageSharp#2676
* Use a smarter approach to determine the transparent index when
encoding palette Pngs. by @​JimBobSquarePants in
SixLabors/ImageSharp#2677
* Limit ancillary PNG chunk size. by @​JimBobSquarePants in
SixLabors/ImageSharp#2681


**Full Changelog**:
SixLabors/ImageSharp@v3.1.2...v3.1.3

## 3.1.2

## What's Changed
* Fix Paeth Filter decode on platforms that do not support Ssse3 by
@​JimBobSquarePants in SixLabors/ImageSharp#2618
* Backport: Fix WebP animation speed bug by @​JimBobSquarePants in
SixLabors/ImageSharp#2637


**Full Changelog**:
SixLabors/ImageSharp@v3.1.1...v3.1.2

## 3.1.1

## What's Changed
* Handle dedup of local palette of 256 length by @​JimBobSquarePants in
SixLabors/ImageSharp#2605
* Correctly calculate foreground Rectangle when negative background
location is set (3.1 fix) by @​tocsoft in
SixLabors/ImageSharp#2609
* Handle case when Foreground image overhangs bottom of background image
during DrawImage Call (3.1 target) by @​tocsoft in
SixLabors/ImageSharp#2610
* Fix handling gif encoding for global palettes. by @​JimBobSquarePants
in SixLabors/ImageSharp#2614


**Full Changelog**:
SixLabors/ImageSharp@v3.1.0...v3.1.1

## 3.1.0

## What's Changed
* Reduced intermediate allocations by @​gfoidl in
SixLabors/ImageSharp#2415
* Port colorconverter YCbCr and YCCk to arm by @​stefannikolei in
SixLabors/ImageSharp#2417
* Added and used Numerics.Vector{128|256}Count extension by @​gfoidl in
SixLabors/ImageSharp#2422
* Improvements around `fixed` by @​gfoidl in
SixLabors/ImageSharp#2418
* Create vector constants inline and not via ROS<byte> by @​gfoidl in
SixLabors/ImageSharp#2419
* More tests for Webp lossless utils by @​brianpopow in
SixLabors/ImageSharp#2424
* Fix incorrect comments by @​hey-red in
SixLabors/ImageSharp#2426
* Fixed invalid jpeg buffer width compliment for scalar color converters
by @​br3aker in SixLabors/ImageSharp#2427
* Update Readme by @​brianpopow in
SixLabors/ImageSharp#2433
* Add AdvSimd in ComponentProcessor by @​stefannikolei in
SixLabors/ImageSharp#2429
* Fix decoding tiled tiff with unequal tile width and height by
@​brianpopow in SixLabors/ImageSharp#2436
* Fix Vp8Residual costs calculation by @​brianpopow in
SixLabors/ImageSharp#2432
* Fix thresholds for Resize kernel tests by @​brianpopow in
SixLabors/ImageSharp#2440
* Tiff: Undo horizontal predictor for cmyk images by @​brianpopow in
SixLabors/ImageSharp#2459
* fix a typo in XML comment for struct `Rgb48` by @​n0099 in
SixLabors/ImageSharp#2463
* Fix #​2467 bmp encoding issue for BMP with 1 bit per pixel and more
pixels per row than divisible by 8. by @​synercoder in
SixLabors/ImageSharp#2471
* Update Directory.Build.targets by @​Pashkinz92 in
SixLabors/ImageSharp#2468
* bugfix in Rational.cs, when both Nominator and Denominator equals to 0
by @​tsardaryanCamenAI in
SixLabors/ImageSharp#2453
* Fix DrawImage offsetting issues and improve API parameter names. by
@​JimBobSquarePants in SixLabors/ImageSharp#2474
* Use more accurate bit for alpha lookup. by @​JimBobSquarePants in
SixLabors/ImageSharp#2473
* Fix for B&W pbm images with width not dividable by 8 by @​ynse01 in
SixLabors/ImageSharp#2481
* Tiff: ccitt compression, fix for issue #​2451 by @​brianpopow in
SixLabors/ImageSharp#2483
* Use `FileOptions.Asynchronous` when doing async IO by @​Neme12 in
SixLabors/ImageSharp#2488
* Allow JFXX as an App0 marker header by @​JimBobSquarePants in
SixLabors/ImageSharp#2482
* Adding QOI support by @​LuisAlfredo92 in
SixLabors/ImageSharp#2446
* Vectorize TrimTransparentPixels in GifEncoderCore by @​gfoidl in
SixLabors/ImageSharp#2500
* Prevent crafted DOS attack. by @​JimBobSquarePants in
SixLabors/ImageSharp#2501
* Reverse automatic include behavior. by @​JimBobSquarePants in
SixLabors/ImageSharp#2515
* Handle EOF in Jpeg bit reader when data is bad to prevent DOS attack.…
by @​JimBobSquarePants in
SixLabors/ImageSharp#2523
* Fix #​2518 by @​antonfirsov in
SixLabors/ImageSharp#2519
* Fix for issue 2504 - IPTC and ICC profile information being lost
during TIFF file save by @​JeffP134 in
SixLabors/ImageSharp#2535
* Preserve Gif color palettes and deduplicate frame pixels. by
@​JimBobSquarePants in SixLabors/ImageSharp#2455
* Bump actions/checkout from 3 to 4 by @​dependabot in
SixLabors/ImageSharp#2530
* Expose and conserve the color palette for indexed png images. by
@​JimBobSquarePants in SixLabors/ImageSharp#2485
* Change ExifTag TimeZoneOffset to Signed Short by @​Cheesebaron in
SixLabors/ImageSharp#2541
* Expose non-nullable configuration to remove AOT limiting null check by
@​JimBobSquarePants in SixLabors/ImageSharp#2514
* Add GPSHPositioningError exif tag by @​Cheesebaron in
SixLabors/ImageSharp#2543
* Disallow allocation attempts of unrepresentable sizes by @​antonfirsov
in SixLabors/ImageSharp#2545
* Add webp decoder option to handle the background color in ANIM chunk
by @​brianpopow in SixLabors/ImageSharp#2547
* Tiff decoding robustness improvements by @​JimBobSquarePants in
SixLabors/ImageSharp#2550
* PBM decoder robustness improvements and BufferedReadStream
observability by @​antonfirsov in
SixLabors/ImageSharp#2551
* Follow up on post-merge discussions in #​2551 by @​antonfirsov in
SixLabors/ImageSharp#2552
* APNG support by @​Poker-sang in
SixLabors/ImageSharp#2511
* WebP - Reduce the allocations in lossless encoding by
@​JimBobSquarePants in SixLabors/ImageSharp#2546
* Animated webp encoder by @​Poker-sang in
SixLabors/ImageSharp#2569
* Fix boxed quantization and update refs by @​JimBobSquarePants in
SixLabors/ImageSharp#2582
* Explicitly set BitsPerPixel and BitsPerSample to 1 for bicolor
compressed images by @​brianpopow in
SixLabors/ImageSharp#2590
* [fix]: Fixed Unknown App0 Marker add profileResolver missing by
@​JoseEliasSantos in SixLabors/ImageSharp#2566
* Png- Do not attempt to read data for chunks of length 0. by
@​JimBobSquarePants in SixLabors/ImageSharp#2561
 ... (truncated)

## 3.0.2

## What's Changed
* Handle EOF in Jpeg bit reader when data is bad to prevent DOS attack.
by @​JimBobSquarePants in
SixLabors/ImageSharp#2516


**Full Changelog**:
SixLabors/ImageSharp@v3.0.1...v3.0.2

## 3.0.1

## What's Changed
* ISSUE #​2385 - Implementing try get pattern to
TryFindFormatByFileExtension(string extension, [NotNullWhen(true)] out
IImageFormat? format) by @​Ollie-Ave in
SixLabors/ImageSharp#2386
* Remove mac specific skips by @​stefannikolei in
SixLabors/ImageSharp#2384
* Add Arm intrinsics to JpegColorConverter RGB by @​stefannikolei in
SixLabors/ImageSharp#2397
* Add arm64 intrinsics for cmyk converter by @​stefannikolei in
SixLabors/ImageSharp#2400
* Low-hanging fruit codegen optimizations by @​gfoidl in
SixLabors/ImageSharp#2401
* Webp: Dont use using statement for encodedAlphaData by @​brianpopow in
SixLabors/ImageSharp#2412
* Fixed wrong division hack by @​gfoidl in
SixLabors/ImageSharp#2413
* Port GrayscalConverter to Arm by @​stefannikolei in
SixLabors/ImageSharp#2409
* Fix RgbScalar by @​stefannikolei in
SixLabors/ImageSharp#2416

## New Contributors
* @​Ollie-Ave made their first contribution in
SixLabors/ImageSharp#2386

**Full Changelog**:
SixLabors/ImageSharp@v3.0.0...v3.0.1

## 3.0.0

## What's Changed
* Use .NET 6 only by @​JimBobSquarePants in
SixLabors/ImageSharp#2098
* Convolution: Border wrapping modes by @​ynse01 in
SixLabors/ImageSharp#2060
* Use ReadOnlySpan<byte> static data compiler optimization in more
places by @​turbedi in SixLabors/ImageSharp#2101
* Add support for decoding jpeg's with arithmetic coding by @​brianpopow
in SixLabors/ImageSharp#2073
* Replace Array.Clear(array, 0, array.Length) calls with
Array.Clear(array) by @​turbedi in
SixLabors/ImageSharp#2103
* Preserve color profile when encoding bitmaps by @​brianpopow in
SixLabors/ImageSharp#2108
* Preserve color profile when encoding webp images by @​brianpopow in
SixLabors/ImageSharp#2109
* Preserve color profile when encoding PNG images by @​brianpopow in
SixLabors/ImageSharp#2110
* Add support for decoding webp images with animations by @​brianpopow
in SixLabors/ImageSharp#1985
* Jpeg compressed tiff: jpeg decoder should handle the conversion from
YCbCr to RGB by @​brianpopow in
SixLabors/ImageSharp#2124
* Deduce color space as YCbCr if component id's are 1, 2, 3 by
@​brianpopow in SixLabors/ImageSharp#2135
* Bump actions/checkout from 2 to 3 by @​dependabot in
SixLabors/ImageSharp#2145
* Bump actions/setup-dotnet from 1 to 2 by @​dependabot in
SixLabors/ImageSharp#2143
* Bump actions/cache from 2 to 3 by @​dependabot in
SixLabors/ImageSharp#2142
* Bump actions/upload-artifact from 2 to 3 by @​dependabot in
SixLabors/ImageSharp#2146
* Bump codecov/codecov-action from 1 to 3 by @​dependabot in
SixLabors/ImageSharp#2144
* Skip invalid markers during jpeg decoding by @​br3aker in
SixLabors/ImageSharp#2147
* Tiff: Performance improvements for Fax4 decompression by @​brianpopow
in SixLabors/ImageSharp#2134
* Fix regression in TIF image loading by @​brianpopow in
SixLabors/ImageSharp#2150
* Used inline SIMD vectors if they are constants by @​gfoidl in
SixLabors/ImageSharp#2122
* Print environment info on tests start by @​JimBobSquarePants in
SixLabors/ImageSharp#2175
* Update License by @​JimBobSquarePants in
SixLabors/ImageSharp#2176
* Jpeg downscaling decoding by @​br3aker in
SixLabors/ImageSharp#2076
* Add support for decoding tiff images with CieLab color space by
@​brianpopow in SixLabors/ImageSharp#2127
* Assembly Trimming Support by @​ds5678 in
SixLabors/ImageSharp#2160
* Jpeg color space deduction fix by @​br3aker in
SixLabors/ImageSharp#2177
* Add support for decoding tiff with webp compressed data by
@​brianpopow in SixLabors/ImageSharp#2128
* Fix issue when writing lossy webp with alpha data by @​brianpopow in
SixLabors/ImageSharp#2173
* Fix run-length encode compression implementation mistake in tga
encoder by @​l1nxy in SixLabors/ImageSharp#2172
* TGA Encoder/Decoder Improvements by @​brianpopow in
SixLabors/ImageSharp#2197
* Tiff: Make sure 1 Bit compression is only used with 1 bit pixel type
by @​brianpopow in SixLabors/ImageSharp#2201
* Refactor `EnumUtils` and make it AOT-friendly. by @​teo-tsirpanis in
SixLabors/ImageSharp#2200
* Jpeg encoder complete rewrite by @​br3aker in
SixLabors/ImageSharp#2120
* Fix IPTC tags written on jpg files that contains non-English
characters can't be correctly displayed on external apps #​2212 by
@​lmerino-ep in SixLabors/ImageSharp#2213
* Identify transparency for indexed PNG correctly by @​brianpopow in
SixLabors/ImageSharp#2215
* Introduce Shared General Decoder Options plus Specialization by
@​JimBobSquarePants in SixLabors/ImageSharp#2180
* Add option to encode 2-bit Bitmap's by @​brianpopow in
SixLabors/ImageSharp#2220
* Fix AdaptiveThresholdProcessor throws IndexOutOfRangeException by
@​brianpopow in SixLabors/ImageSharp#2221
* Relaxed bmp dimensions validation by @​smorokin in
SixLabors/ImageSharp#2192
* Remove obsolete code by @​JimBobSquarePants in
SixLabors/ImageSharp#2189
* Implement Median Blur processor by @​ynse01 in
SixLabors/ImageSharp#2219
* Make TestFile Image threadsafe. by @​JimBobSquarePants in
SixLabors/ImageSharp#2225
* PNG filter improvements by @​saucecontrol in
SixLabors/ImageSharp#2226
* Use File-Scoped Namespaces and Global Implicit Usings by
@​JimBobSquarePants in SixLabors/ImageSharp#2229
* Fix for issue #​2117 by @​brianpopow in
SixLabors/ImageSharp#2230
* Use System.Half for HalfTypeHelper by @​JimBobSquarePants in
SixLabors/ImageSharp#2233
* [Chore] Remove InlineningOption from ThrowHelpers by @​blouflashdb in
SixLabors/ImageSharp#2234
* Implement AutoLevel processor - Attempt 2 by @​ynse01 in
SixLabors/ImageSharp#2235
* Add TryGetLinearlySeparableComponents and tests by @​JimBobSquarePants
in SixLabors/ImageSharp#2224
 ... (truncated)

## 2.1.13

## What's Changed
* V2 backport: 2243 - Ignore unknown chunks for WEBP by @​sonbua in
SixLabors/ImageSharp#2505

## New Contributors
* @​sonbua made their first contribution in
SixLabors/ImageSharp#2505

**Full Changelog**:
SixLabors/ImageSharp@v2.1.12...v2.1.13

## 2.1.12

## What's Changed
* Backport #​2926 to release/2.1.x by @​mus65 in
SixLabors/ImageSharp#2985

## New Contributors
* @​mus65 made their first contribution in
SixLabors/ImageSharp#2985

**Full Changelog**:
SixLabors/ImageSharp@v2.1.11...v2.1.12

## 2.1.11

## What's Changed
* Backport V2 - GIF: Check for end of stream when reading comments. by
@​JimBobSquarePants in SixLabors/ImageSharp#2971


**Full Changelog**:
SixLabors/ImageSharp@v2.1.10...v2.1.11

## 2.1.10

## What's Changed
* Backport #​2859 to release/2.1.x by @​antonfirsov in
SixLabors/ImageSharp#2890
* Backport #​2701 to 2.1.x [copy] by @​antonfirsov in
SixLabors/ImageSharp#2891


**Full Changelog**:
SixLabors/ImageSharp@v2.1.9...v2.1.10

Commits viewable in [compare
view](SixLabors/ImageSharp@v2.1.9...v4.1.2).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=SixLabors.ImageSharp&package-manager=nuget&previous-version=2.1.9&new-version=4.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/onnxruntime/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants