Table of Contents

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 nfloat overloads of ToUIImage on SKBitmap, SKPixmap and SKPicture in SkiaSharp.Views.iOS and SkiaSharp.Views.tvOS were removed as part of the .NET 6 unification. Pass the scale as float and the orientation on the remaining overloads instead.
  • GRContext now derives from GRRecordingContextGRContext was reparented from SKObject onto the new GRRecordingContext base type to match upstream Skia. Existing code that uses GRContext continues to work; code that reflected on the base type or cast to SKObject needs 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 SKCanvasView component 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 IgnorePixelScaling property on the canvas views produces the intended coordinate space instead of double-scaling. (#1804)
  • .NET MAUI SKCanvasView null-reference fix — The .NET MAUI SKCanvasView no longer throws a NullReferenceException in certain lifecycle paths. — ❤️ @jsuarezruiz (#1734)
  • Windows handle lookup is faster and safer — The internal HandleDictionary lock 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.

Full changelog

Preview 256 (April 20, 2022)

Preview 256 moved to .NET MAUI RC 2.

Full changelog

Preview 254 (April 13, 2022)

Preview 254 moved to .NET MAUI RC 1 and switched CI to macOS Monterey.

Full changelog

Preview 232 (March 4, 2022)

Preview 232 refreshed native tooling to Python 3 and Clang 12, and picked up more upstream Skia fixes.

Full changelog

Preview 209 (February 18, 2022)

Preview 209 rolled up Skia and interop fixes, and refreshed the Mac Catalyst build inputs.

Full changelog

Preview 187 (January 27, 2022)

Preview 187 moved to .NET MAUI Preview 12 and tightened Android packaging.

Full changelog

Preview 179 (December 16, 2021)

Preview 179 bumped Uno to 4.0.

Full changelog

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.

Full changelog

Preview 155 (October 28, 2021)

Preview 155 rolled up upstream updates.

Full changelog

Preview 152 (October 14, 2021)

Preview 152 refreshed a batch of dependencies and picked up new APIs.

Full changelog

Preview 150 (October 11, 2021)

Preview 150 added the ASP.NET Blazor WebAssembly SKCanvasView component.

Full changelog

Preview 145 (September 28, 2021)

Preview 145 tuned Android packaging and moved to .NET MAUI Preview 7.

Full changelog

Preview 140 (September 14, 2021)

Preview 140 was a plumbing-only cut.

Full changelog

Preview 139 (September 12, 2021)

Preview 139 fixed IgnorePixelScaling, added main PDBs to the packages and moved to Windows App SDK.

Full changelog

Preview 127 (August 20, 2021)

Preview 127 updated HarfBuzz to 2.8.2 and added Xamarin.Forms support on netcoreapp3.1.

Full changelog

Preview 120 (August 9, 2021)

Preview 120 moved to .NET 6, guarded the .NET MAUI SKCanvasView and set the iOS view background.

Full changelog

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.

Full changelog