Remove the `Numerics.Normalize` wrapper and call `TensorPrimitives.Divide` directly when normalizing resize kernels. This also drops the now-unused normalization test coverage and the redundant benchmark-only `System.Numerics.Tensors` package reference for net10.0.
Replaced ImageSharp’s custom TensorPrimitives_ and several Vector128/256/512 helper fallbacks with direct System.Numerics and System.Numerics.Tensors APIs across color conversion, codecs, filtering, blending, and convolution paths. Removed the obsolete compatibility helper files, updated package references (including System.Numerics.Tensors and newer System.IO.Hashing), and aligned tests with runtime behavior changes such as inverted float clamp bounds now throwing ArgumentException.
Replace the custom zlib deflate stack with `System.IO.Compression.ZLibStream`, and add `ChunkedWriteStream` to keep PNG/TIFF/EXR output framed in fixed-size segments. Update the affected compressors and tests to match the new streaming path.
Move the main target framework from net8.0 to net10.0 and the preview lane from net10.0 to net11.0, adding a global.json floor for SDK 10+ and updating CI coverage and test projects to match.
The change also adjusts hardware-intrinsic feature tests for .NET 11's x86-64-v2 baseline, updates Magick.NET, adds PDF files to LFS, and converts many internal helper and codec APIs from Span<T> to ReadOnlySpan<T> where inputs are not mutated.
Use tile width (instead of full image width) when creating T4/T6/Modified Huffman decompressors for tiled TIFF decoding, preventing row-size mismatches and false overrun failures. Also standardize the CCITT overrun error message and add regression coverage for both strip-based and tiled reporter samples that must throw when decoded pixels exceed image width.
Adds explicit bounds checks before writing decoded CCITT runs in both T4 and Modified Huffman TIFF decompressors, preventing oversized runs from writing past the current row. Error messages were also standardized/capitalized for CCITT parsing failures. Includes new regression tests using compressed TIFF PoCs to verify decoding now throws ImageFormatException with the expected width-overrun message.
The allocation limits on MemoryAllocator were internal with no public
way to raise the 1 GB single-buffer default, and ApplyOptions was not
callable from external subclasses, which blocked custom allocators.
- Expose MemoryGroupAllocationLimitBytes, SingleBufferAllocationLimitBytes,
and AccumulativeAllocationLimitBytes with validated protected setters.
- Make ApplyOptions protected so derived allocators can accept options.
- Add MemoryAllocatorOptions.SingleBufferAllocationLimitMegabytes to raise
the contiguous buffer cap up to 2047 MB without a custom allocator.
- Add public-api tests that implement a complete external allocator.
- Add behavior tests for the new option and its validation.
The binary PGM and PPM formats store 16-bit samples most significant
byte first. The decoder and encoder read and wrote them in native
little-endian order, so every wide sample was byte swapped. This
corrects the swizzled colors reported for 16-bit PPM images.
- Reverse the sample byte order in BinaryDecoder and BinaryEncoder.
- Fix integer division in the max pixel value upscale factor.
- Add exact-value, reference-decoder, upscale, and round-trip tests.
- Add a 16-bit PPM test image and its Magick-anchored reference PNG.
- Document the binary decoder and encoder in full.
Introduce the `Plus` alpha composition mode and add support for ColorDodge, ColorBurn, SoftLight, Difference, Exclusion, Hue, Saturation, Color, and Luminosity across straight-alpha and associated-alpha pixel blenders. The generated blender/function tables and selector logic were updated to expose the new combinations, and tests were expanded to cover mode mapping, expected blend results, and parity between straight and premultiplied alpha paths.
Drops the `AntialiasThreshold` field/property from `GraphicsOptions` and updates related XML docs to reflect the simplified antialiasing behavior. Clone logic and test coverage were adjusted accordingly, including removal of threshold assertions and comparer checks.
Route BlendWithCoverage calls through AssociatedAlphaPorterDuffFunctions when TOperator.IsAssociatedAlpha is true, across all SIMD widths (scalar, Vector256, Vector512) and all BlendWithCoverageFunction overloads.
Tightened icon frame bounds validation to treat `ImageOffset == available` as invalid, preventing non-empty resources from starting at the exclusive end of the icon stream. Added a regression test that mutates an ICO directory entry to this boundary value and verifies both `Decode` and `Identify` throw `InvalidImageContentException` with the expected message.