Table of Contents

Version 1.68.1

Memory reliability and .NET Core 3.0 support · Released November 22, 2019 · NuGet · GitHub Release

Highlights

This release focuses on memory reliability, fixing several issues with managed-native interop and static instance lifetimes. It also brings performance improvements via Clang on Win32, new Span<T> overloads across SkiaSharp and HarfBuzzSharp, and a significant expansion of the HarfBuzz binding surface.

Breaking Changes

None in this release.

New Features

Memory & Interop

  • Managed-native delegate interop overhaul — Removed intermediate dictionary for delegate interop, improving performance and reliability.
  • Clang on Win32 — Switched native builds to Clang for improved performance on Windows.

New APIs

  • SKDrawable bindings — Full bindings for the Skia drawable type. ❤️ @charlenni (#940)
  • SKColorSpace APIs — Added colorspace creation and management APIs.
  • SKRunBuffer / SKHorizontalRunBuffer / SKPositionedRunBuffer — New run buffer types for SKTextBlob and SKTextBlobBuilder.
  • SKShader from SKPicture — Create shaders directly from recorded pictures. ❤️ @alexandrvslv
  • Additional SKRegion members — Expanded region operations. ❤️ @vexx32x
  • Additional SKPaint and SKMatrix members — More paint and matrix helpers. ❤️ @MarchingCube
  • Span<T> overloads — Added Span<T> alternatives alongside existing byte[] and IntPtr overloads.

Packages & Platform Support

  • SkiaSharp.NativeAssets.Linux.NoDependencies — New NuGet package for Linux environments without libfontconfig.
  • View packages splitSkiaSharp.Views split into dedicated packages: SkiaSharp.Views.WPF, SkiaSharp.Views.WindowsForms, SkiaSharp.Views.Gtk3, SkiaSharp.Views.Gtk2, and SkiaSharp.Views.Desktop.Common.
  • GTK# 3 support — New SKDrawingArea widget for GTK# 3 applications.

Xamarin.Forms

  • WPF support — Initial WPF backend via SkiaSharp.Views.Forms.WPF.
  • Updated to Xamarin.Forms v4.x — Compatibility with the latest Forms release.
  • Mouse wheel supportSKCanvasView and SKGLView now handle mouse wheel events. ❤️ @charlenni

HarfBuzz

  • Updated to HarfBuzz 2.6.1 — Major version bump with new APIs. ❤️ @Gillibald
  • Expanded HarfBuzz bindings — Many new APIs for a more complete binding surface. ❤️ @Gillibald
  • Span<T> overloads for HarfBuzzSharp — Consistent with SkiaSharp's new span support. ❤️ @Gillibald

Bug Fixes

  • Fixed several issues with static instances of native objects being accidentally destroyed.
  • Fixed several invalid memory operations in managed-native interop.
  • Fixed SKDocument underlying stream being destroyed prematurely.
  • Fixed typeface managed stream not being released correctly.
  • Fixed incorrect native library version in Full Framework Xamarin.Mac.
  • Fixed Android emulator rendering incorrect colors. ❤️ @inforithmics
  • Fixed System.Drawing.Bitmap to SKPixmap conversion. ❤️ @Odirb
  • Improved SKSwapChainPanel stability on UWP.

Maintenance

  • P/Invoke layer is now generated along with structs and enums.
  • Documentation moved to the SkiaSharp-API-docs repository.
  • Build improvements. ❤️ @danien
  • Documentation improvements. ❤️ @HankiDesign

Community Contributors ❤️

Contributor What They Did
@charlenni SKDrawable bindings, mouse wheel support in Forms
@Gillibald HarfBuzz 2.6.1 upgrade, expanded APIs, Span<T> overloads
@vexx32x Additional SKRegion members
@MarchingCube Additional SKPaint and SKMatrix members
@alexandrvslv SKShader from SKPicture
@inforithmics Android emulator color fix
@Odirb System.Drawing.Bitmap conversion fix
@danien Build improvements
@HankiDesign Documentation improvements

Preview Builds

Six preview builds (147, 153, 165, 169, 170, 172) were published between September and November 2019 leading up to this stable release.