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-arm64no 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
.aaris 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
JSImportonnet7.0, aligning with the modern WinUI/Uno interop model. — ❤️ @jeromelaban (#2428) - Faster hex-string parsing on SKColor —
SKColorhex-string parsing was rewritten to avoid the per-character allocations and lookups it used to do. — ❤️ @jwikberg (#2467)
Bug Fixes
- SKCanvasView dispose race fixed —
SKCanvasViewno longer throws when the view is disposed before it has been rendered for the first time. — ❤️ @jjzhang12 (#2472) - WASM canvas resilience —
SKXamlCanvason WASM tolerates a missing canvas element, updates the bitmapSKAlphaTypecorrectly, and disambiguatesSKGLViewbetween Uno and MAUI targets. — ❤️ @roubachof, @jeromelaban (#2443, #2529) - Uno Opaque defaults on Apple platforms —
SKXamlCanvason Uno now defaultsOpaquetofalseon macOS and iOS to match the platform expectation, andSKSwapChainPanelwas 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
ToRectextension 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
usingstatements 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.
Preview 95 (August 16, 2023)
Preview 95 landed the libpng/libexpat refresh, WinUI JSImport move, the SKCanvasView disambiguation and the using-scope cleanup.
Preview 82 (June 22, 2023)
Preview 82 added the .NET 8 WASM assets and the ToRect fix.
Preview 76 (June 19, 2023)
Preview 76 added the .NET iOS/Catalyst samples, faster SKColor hex parsing and ARM64 macOS binaries.
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.