Table of Contents

Version 2.88.4

.NET 8, Apple Silicon and WASM refresh · Released August 22, 2023 · NuGet · GitHub Release

API changes · SkiaSharp API diff · HarfBuzzSharp API diff

Highlights

SkiaSharp 2.88.4 adds .NET 8 and Apple Silicon macOS support and refreshes bundled native libraries. This release adds native ARM64 macOS binaries, .NET 8 WASM assets for Blazor, and moves the WinUI target onto JSImport on net7.0. It refreshes libpng, libexpat and zlib, ships the Android .aar inside the NuGet, and picks up Uno WASM improvements including EH+SIMD.

Breaking Changes

None in this release.

Platform

  • Apple Silicon macOS — Native binaries are now produced for ARM64 macOS machines, so .NET on macOS-arm64 no longer runs SkiaSharp under Rosetta. (#2468)
  • .NET 8 WASM assets for Blazor — The new WebAssembly assets shipped with .NET 8 are now included so Blazor apps on .NET 8 pick up the right native. (#2497)
  • .NET iOS and Mac Catalyst samples — New .NET iOS and Mac Catalyst samples plus a .NET "Core" sample host demonstrate the modern-platform bindings. (#2491)
  • Android .aar shipped in the NuGet — The Android .aar is now included in the NuGet package so consumers no longer have to source it separately. — ❤️ @dellis1972 (#2465)
  • .NET 5 SDK requirement dropped — All build-time requirements on the .NET 5 SDK have been removed. (#2266)

API Surface

  • WinUI moves to JSImport on net7.0 — The WinUI target now uses JSImport on net7.0, aligning with the modern WinUI/Uno interop model. — ❤️ @jeromelaban (#2428)
  • Faster hex-string parsing on SKColorSKColor hex-string parsing was rewritten to avoid the per-character allocations and lookups it used to do. — ❤️ @jwikberg (#2467)

Bug Fixes

  • SKCanvasView dispose race fixedSKCanvasView no longer throws when the view is disposed before it has been rendered for the first time. — ❤️ @jjzhang12 (#2472)
  • WASM canvas resilienceSKXamlCanvas on WASM tolerates a missing canvas element, updates the bitmap SKAlphaType correctly, and disambiguates SKGLView between Uno and MAUI targets. — ❤️ @roubachof, @jeromelaban (#2443, #2529)
  • Uno Opaque defaults on Apple platformsSKXamlCanvas on Uno now defaults Opaque to false on macOS and iOS to match the platform expectation, and SKSwapChainPanel was updated for Android and iOS. — ❤️ @roubachof (#2398, #2400, #2401, #2477)
  • Tizen canvas sizing corrected — The Tizen views now compute canvas size correctly on high-DPI displays. — ❤️ @myroot (#2322)
  • ToRect extension fixed — The ToRect extension no longer returns wrong bounds in an edge case. — ❤️ @niza93 (#2392)
  • Guard against a race in the view lifecycle — An additional check avoids an exception in a lifecycle race path. — ❤️ @FoggyFinder (#2313)

Security

  • Bundled native libraries refreshed — libpng bumped to 1.6.40, libexpat to 2.5.0, and zlib to 1.2.13 — pulling in the latest upstream security and correctness fixes. (#2510, #2484)

Lifecycle & Internals

  • Cleaner using scopes — Several internal blocks were rewritten with C# 8 block-scoped using statements to reduce nesting. — ❤️ @Lehonti (#2528)

HarfBuzzSharp 2.8.2.4

HarfBuzzSharp 2.8.2.4 adds native binaries for Apple Silicon macOS, ships the Hot Restart native reference, and enables WASM multi-threading and SIMD alongside SkiaSharp.

Community Contributors ❤️

Thank you to everyone who contributed to this release!

Contributor Contributions
@jeromelaban Moved WinUI to JSImport on net7.0, disambiguated SKGLView, and enabled WASM EH+SIMD in all configurations for net8+ (#2286, #2428, #2457, #2495, #2503, #2529)
@roubachof Fixed the Uno SKXamlCanvas Alpha type on WASM, defaulted Opaque on Apple platforms, and updated the Android and iOS SKSwapChainPanel (#2398, #2400, #2401, #2443)
@pjcollins Contributed to the modern-platform enablement work landing in this release (#2389, #2393)
@dellis1972 Made the Android .aar ship inside the NuGet package (#2465)
@FoggyFinder Added a defensive check to avoid an exception in a lifecycle race path (#2313)
@JamieMagee Contributed dependency and infrastructure improvements (#2232)
@jjzhang12 Fixed the SKCanvasView dispose exception when the view is disposed before it has been rendered (#2472)
@jwikberg Rewrote hex-string parsing in SKColor for a large performance win (#2467)
@Lehonti Removed nesting by adopting block-scoped using statements (#2528)
@myroot Fixed Tizen canvas-size calculation on high-DPI displays (#2322)
@niza93 Fixed the ToRect extension method (#2392)
@Redth Contributed to the modern-platform enablement work landing in this release (#2303)

Preview 96 (August 17, 2023)

Preview 96 shipped the final Hot Restart native reference.

Full changelog

Preview 95 (August 16, 2023)

Preview 95 landed the libpng/libexpat refresh, WinUI JSImport move, the SKCanvasView disambiguation and the using-scope cleanup.

Full changelog

Preview 82 (June 22, 2023)

Preview 82 added the .NET 8 WASM assets and the ToRect fix.

Full changelog

Preview 76 (June 19, 2023)

Preview 76 added the .NET iOS/Catalyst samples, faster SKColor hex parsing and ARM64 macOS binaries.

Full changelog

Preview 70 (June 14, 2023)

Preview 70 opened the line with zlib 1.2.13, Uno Opaque and swap-chain fixes, and the drop of the .NET 5 SDK requirement.

Full changelog