Version 2.88.0
MAUI, .NET 6 and Mac Catalyst · Released May 22, 2022 · NuGet · GitHub Release
API changes · SkiaSharp API diff · HarfBuzzSharp API diff
Highlights
SkiaSharp 2.88.0 adds .NET 6, .NET MAUI, Mac Catalyst, WinUI and Blazor WebAssembly support. This is the first stable release built for the .NET 6 era. It ships new views for .NET MAUI (both compat and handlers), first-class Mac Catalyst binaries, an ASP.NET Blazor WebAssembly component, and refreshes HarfBuzz to 2.8.2. Native lifecycle and packaging were reworked to fit the new TFMs.
Breaking Changes
- iOS and tvOS ToUIImage overloads that used nfloat were removed — The
nfloatoverloads ofToUIImageonSKBitmap,SKPixmapandSKPictureinSkiaSharp.Views.iOSandSkiaSharp.Views.tvOSwere removed as part of the .NET 6 unification. Pass the scale asfloatand the orientation on the remaining overloads instead. - GRContext now derives from GRRecordingContext —
GRContextwas reparented fromSKObjectonto the newGRRecordingContextbase type to match upstream Skia. Existing code that usesGRContextcontinues to work; code that reflected on the base type or cast toSKObjectneeds to update.
Platform
- .NET 6 and .NET MAUI targets — The binding, views and HarfBuzz projects gained
net6.0-*TFMs, and shipping .NET MAUI views (both the compat layer and the new handlers) are included. (#1740, #1707, #1678, #1749, #1782, #1932, #1965, #1967, #1986, #2004, #2029) - Mac Catalyst is a first-class target — Mac Catalyst native binaries are built and packaged, with the frameworks reorganised through the gn files. (#1681, #1760, #1865)
- WinUI, Windows App SDK and Xamarin.Forms on .NET Core 3.1 — The Windows story was refreshed to target the Windows App SDK, and Xamarin.Forms views now light up on
netcoreapp3.1. (#1800, #1774) - ASP.NET Blazor WebAssembly components — A new
SKCanvasViewcomponent targets ASP.NET Blazor WebAssembly, with an infinite-loop guard on invalidation. — ❤️ @JensKrumsieck (#1811, #1889)
Engine
- HarfBuzz refreshed to 2.8.2 — The bundled HarfBuzz shaping engine is updated to 2.8.2. (#1766)
API Surface
- New APIs added across the surface — A batch of new APIs from upstream Skia is now exposed on the managed surface. (#1828)
Bug Fixes
- IgnorePixelScaling now works as expected — The
IgnorePixelScalingproperty on the canvas views produces the intended coordinate space instead of double-scaling. (#1804) - .NET MAUI SKCanvasView null-reference fix — The .NET MAUI
SKCanvasViewno longer throws aNullReferenceExceptionin certain lifecycle paths. — ❤️ @jsuarezruiz (#1734) - Windows handle lookup is faster and safer — The internal
HandleDictionarylock was replaced with a critical section on Windows to reduce contention under load. — ❤️ @toptensoftware (#1817) - iOS views paint an opaque background — The iOS view now has a background set, so first-frame content is not lost on some devices. (#1730)
Lifecycle & Internals
- Static native objects are no longer disposed — Statically-cached native handles skip disposal, avoiding double-free on shutdown. (#1863)
- Enum marshalling workaround — A workaround was added for enums not being treated as blittable in some scenarios, keeping interop stable. (#1857)
Security
- Native tooling refreshed — The native build moved to Python 3, Clang 12 and a newer gcc/llvm pair for reproducible modern builds. (#1959, #1806)
HarfBuzzSharp 2.8.2
HarfBuzzSharp 2.8.2 refreshes the bundled HarfBuzz shaping engine, adds Mac Catalyst binaries and gains net6.0-* TFMs alongside its SkiaSharp counterpart.
Community Contributors ❤️
Thank you to everyone who contributed to this release!
| Contributor | Contributions |
|---|---|
| @jeromelaban | Bumped Uno to 4.0 so the Uno-hosted views keep pace with the SDK (#1746, #1873) |
| @jonathanpeppers | Android packaging fixes — kept .so files out of class libraries and trimmed generated Resource.designer.cs fields (#1812, #1895) |
| @akoeplinger | Made the Linux native loader try libdl.so.2 before libdl.so so newer distributions resolve (#2010) |
| @JensKrumsieck | Fixed an infinite invalidation loop in the Blazor SKCanvasView (#1889) |
| @jsuarezruiz | Guarded against a NullReferenceException in the .NET MAUI SKCanvasView (#1734) |
| @mjbond-msft | Contributed to the .NET 6 / MAUI enablement work landing in this release (#1954) |
| @toptensoftware | Replaced the Windows HandleDictionary lock with a critical section to cut contention (#1817) |
Preview 266 (May 11, 2022)
Preview 266 finished the .NET MAUI RC 3 line-up and picked up the last packaging fixes before stable.
Preview 256 (April 20, 2022)
Preview 256 moved to .NET MAUI RC 2.
Preview 254 (April 13, 2022)
Preview 254 moved to .NET MAUI RC 1 and switched CI to macOS Monterey.
Preview 232 (March 4, 2022)
Preview 232 refreshed native tooling to Python 3 and Clang 12, and picked up more upstream Skia fixes.
Preview 209 (February 18, 2022)
Preview 209 rolled up Skia and interop fixes, and refreshed the Mac Catalyst build inputs.
Preview 187 (January 27, 2022)
Preview 187 moved to .NET MAUI Preview 12 and tightened Android packaging.
Preview 179 (December 16, 2021)
Preview 179 bumped Uno to 4.0.
Preview 178 (December 15, 2021)
Preview 178 moved to .NET MAUI Preview 11 and added the Blazor SKCanvasView infinite-loop guard, the Windows lock rework and the enum-blittability workaround.
Preview 155 (October 28, 2021)
Preview 155 rolled up upstream updates.
Preview 152 (October 14, 2021)
Preview 152 refreshed a batch of dependencies and picked up new APIs.
Preview 150 (October 11, 2021)
Preview 150 added the ASP.NET Blazor WebAssembly SKCanvasView component.
Preview 145 (September 28, 2021)
Preview 145 tuned Android packaging and moved to .NET MAUI Preview 7.
Preview 140 (September 14, 2021)
Preview 140 was a plumbing-only cut.
Preview 139 (September 12, 2021)
Preview 139 fixed IgnorePixelScaling, added main PDBs to the packages and moved to Windows App SDK.
Preview 127 (August 20, 2021)
Preview 127 updated HarfBuzz to 2.8.2 and added Xamarin.Forms support on netcoreapp3.1.
Preview 120 (August 9, 2021)
Preview 120 moved to .NET 6, guarded the .NET MAUI SKCanvasView and set the iOS view background.
Preview 61 (July 12, 2021)
Preview 61 opened the 2.88 line with .NET 6 TFMs, Mac Catalyst binaries and the first .NET MAUI views.