Back to Skiasharp

3.119.0

documentation/docfx/releases/3.119.0.md

4.148.014.7 KB
Original Source
<!-- RAW PR DATA — Do not remove this comment block. AI uses this data to generate the polished release notes below. Re-run the script to refresh this data from git history. Generated: 2026-06-11T21:27:08Z by generate-release-notes.py version: 3.119.0 status: stable supersedes: 3.118.0 (preview only, rolled up) branch: release/3.119.0 diff: release/3.116.1..release/3.119.0 prs: 52 - Merge pipeline changes to release by @mattleibow in https://github.com/mono/SkiaSharp/pull/3252 (2 commits, 2 days) - Fix the SKImage.FromPicture implementation by @mattleibow in https://github.com/mono/SkiaSharp/pull/3231 (3 commits, 1 day) - The fontconfig package was updated by @mattleibow in https://github.com/mono/SkiaSharp/pull/3221 (1 commit, 1 day) - Add LoongArch64 build support by @4Darmygeometry in https://github.com/mono/SkiaSharp/pull/3198 [community ✨] (36 commits, 1 day) - The stageDependencies envvar is too big for devops by @mattleibow in https://github.com/mono/SkiaSharp/pull/3216 (2 commits, 1 day) - Use a "better" dotnet-install URL by @mattleibow in https://github.com/mono/SkiaSharp/pull/3215 (1 commit, 1 day) - Increase Linux support by @mattleibow in https://github.com/mono/SkiaSharp/pull/3209 (32 commits, 10 days) - Extend clang-cross to support alpine by @kasperk81 in https://github.com/mono/SkiaSharp/pull/3200 [community ✨] (7 commits, 5 days) - Update vulkanmemoryallocator to 3.2.1 by @kasperk81 in https://github.com/mono/SkiaSharp/pull/3196 [community ✨] (3 commits, 2 days) - Set the correct target for tvOS by @mattleibow in https://github.com/mono/SkiaSharp/pull/3199 (1 commit, 1 day) - Compile Skia with Direct3D on Windows platform by @kation in https://github.com/mono/SkiaSharp/pull/2823 [community ✨] (35 commits, 19 days) - Add riscv64 build support by @kasperk81 in https://github.com/mono/SkiaSharp/pull/3192 [community ✨] (5 commits, 4 days) - fix linux tests by @kasperk81 in https://github.com/mono/SkiaSharp/pull/3194 [community ✨] (1 commit, 1 day) - Fix targets for ARM machines by @mattleibow in https://github.com/mono/SkiaSharp/pull/3190 (1 commit, 1 day) - Enable GL on Windows ARM by @mattleibow in https://github.com/mono/SkiaSharp/pull/3189 (2 commits, 2 days) - Exclude code that will never run on Apple by @mattleibow in https://github.com/mono/SkiaSharp/pull/3187 (1 commit, 1 day) - Update the externals with tvOS fixes by @mattleibow in https://github.com/mono/SkiaSharp/pull/3186 (1 commit, 1 day) - Reduce the unused dependencies by @mattleibow in https://github.com/mono/SkiaSharp/pull/3180 (3 commits, 1 day) - Implement SkCanvas::SaveLayerRec by @ahmed605 in https://github.com/mono/SkiaSharp/pull/2962 [community ✨] (7 commits, 5 days) - Bump skia to milestone 119 by @mattleibow in https://github.com/mono/SkiaSharp/pull/3062 (11 commits, 6 days) - Update libpng to 1.6.44 by @mattleibow in https://github.com/mono/SkiaSharp/pull/3059 (3 commits, 3 days) - Add the missing SKColorFilter types by @mattleibow in https://github.com/mono/SkiaSharp/pull/2882 (10 commits, 6 days) - Fix regression that breaks projects using .NET Framework/Mono and packages.config by @david.sungaila in https://github.com/mono/SkiaSharp/pull/3112 [community ✨] (2 commits, 1 day) - Disable more unused externals by @mattleibow in https://github.com/mono/SkiaSharp/pull/3171 (1 commit, 1 day) - [build] Address CVE-2024-30105 by @pecolli in https://github.com/mono/SkiaSharp/pull/3166 [community ✨] (1 commit, 1 day) - Fix iOS Simulator performance with Metal by @taublast in https://github.com/mono/SkiaSharp/pull/3156 [community ✨] (7 commits, 4 days) - Support SKMetalView on tvOS by @martin in https://github.com/mono/SkiaSharp/pull/3114 [community ✨] (1 commit, 1 day) - Manually list all the artifacts to download by @mattleibow in https://github.com/mono/SkiaSharp/pull/3161 (5 commits, 2 days) - Restore the .NET tools first by @mattleibow in https://github.com/mono/SkiaSharp/pull/3154 (1 commit, 1 day) - Fix the incorrect call. by @i in https://github.com/mono/SkiaSharp/pull/3143 [community ✨] (1 commit, 1 day) - The initial run of dotnet and/or cake hangs by @mattleibow in https://github.com/mono/SkiaSharp/pull/3152 (1 commit, 1 day) - Reland #2873 Disable unused / problematic tools by @mattleibow in https://github.com/mono/SkiaSharp/pull/3150 (1 commit, 1 day) - Use the correct PackagePath attribute by @mattleibow in https://github.com/mono/SkiaSharp/pull/3100 (1 commit, 1 day) - Update the Android NDK to r27c and update to 16kb alignment by @mattleibow in https://github.com/mono/SkiaSharp/pull/3096 (3 commits, 1 day) - Log more information about disk space and skip the MSVC builds on public by @mattleibow in https://github.com/mono/SkiaSharp/pull/3090 (9 commits, 2 days) - Fix the import for apps with a base path by @mattleibow in https://github.com/mono/SkiaSharp/pull/3092 (1 commit, 1 day) - Move the WASM fix to SkiaSharp by @mattleibow in https://github.com/mono/SkiaSharp/pull/3088 (1 commit, 1 day) - Use the Microsoft Hosted Pool by @mattleibow in https://github.com/mono/SkiaSharp/pull/3051 (8 commits, 3 days) - Add Metal API for GRBackendRenderTarget to all platforms by @sebastien.pouliot in https://github.com/mono/SkiaSharp/pull/3070 [community ✨] (2 commits, 2 days) - Move the Blazor workaround into WASM by @mattleibow in https://github.com/mono/SkiaSharp/pull/3082 (2 commits, 2 days) - Use `<WindowsSdkPackageVersion>` to set the SDK version by @mattleibow in https://github.com/mono/SkiaSharp/pull/3085 (2 commits, 2 days) - Skip the skia PR checkout by @mattleibow in https://github.com/mono/SkiaSharp/pull/3083 (1 commit, 1 day) - Add a workflow to auto label issues by @mattleibow in https://github.com/mono/SkiaSharp/pull/3080 (1 commit, 1 day) - Fix .NET 9 ASP.NET Blazor issues by @mattleibow in https://github.com/mono/SkiaSharp/pull/3064 (4 commits, 2 days) - Update bug-report.yml by @mattleibow in https://github.com/mono/SkiaSharp/pull/3063 (2 commits, 1 day) - Update freetype2 to 2.13.3+ by @mattleibow in https://github.com/mono/SkiaSharp/pull/3061 (2 commits, 2 days) - Update libexpat to v2.6.4 by @mattleibow in https://github.com/mono/SkiaSharp/pull/3056 (3 commits, 2 days) - Update libjpeg_turbo to the latest commit: 2.1.5.1+commits by @mattleibow in https://github.com/mono/SkiaSharp/pull/3060 (2 commits, 2 days) - Update harfbuzz to 8.3.1 by @mattleibow in https://github.com/mono/SkiaSharp/pull/3052 (2 commits, 1 day) - Bump the version of the packages to 3.118 by @mattleibow in https://github.com/mono/SkiaSharp/pull/3050 (1 commit, 1 day) - Update skia to Milestone 118 by @mattleibow in https://github.com/mono/SkiaSharp/pull/3048 (4 commits, 2 days) - Update skia to milestone 117 by @mattleibow in https://github.com/mono/SkiaSharp/pull/3047 (7 commits, 1 day) -->

Version 3.119.0

NuGet

Supersedes 3.118.0 · Rolls up preview-only work that was never released as stable — those changes are included cumulatively below.

Highlights

This is the first stable release since 3.116.1, rolling up all the work from the preview-only 3.117.x and 3.118.0 lines. The Skia engine advanced through three consecutive milestones (117 → 118 → 119), bringing two years of upstream rendering and codec improvements in one go. Community contributors added two entirely new CPU architectures — LoongArch64 and RISC-V 64-bit — enabled the long-awaited Direct3D 12 GPU backend on Windows, and contributed major API additions including SKCanvas.SaveLayerRec and SKMetalView on tvOS. Ten community contributors drove key user-facing features in this release.

Breaking Changes

None in this release.

New Features

Engine

  • Skia milestones 117, 118, and 119 — Three consecutive Skia engine milestones, picking up upstream improvements to the Ganesh GPU pipeline, text shaping, image codec updates, and path optimizations. (#3047, #3048, #3062)

API Surface

  • Missing SKColorFilter types — Adds the full set of SKColorFilter factory methods that were absent from the C# bindings, including color matrix, lighting, blend, and compose filters. (#2882)
  • SKCanvas.SaveLayerRec — Implements SkCanvas::SaveLayerRec, exposing the advanced SaveLayer overload that accepts a backdrop filter and per-layer restore flags. ❤️ @ahmed605 (#2962)
  • Metal GRBackendRenderTarget API across all platforms — Adds consistent Metal-backed GRBackendRenderTarget creation APIs across all Apple platforms. ❤️ @spouliot (#3070)
  • SKImage.FromPicture restored — Fixed a broken implementation that regressed in an earlier build. (#3231)

Platform

  • LoongArch64 support — SkiaSharp now builds and ships native binaries for the LoongArch64 architecture on Linux. ❤️ @4Darmygeometry (#3198)
  • RISC-V 64-bit support — Native binaries are now built and shipped for the linux-riscv64 RID. ❤️ @kasperk81 (#3192)
  • Direct3D 12 backend on Windows — Enables the Skia Ganesh Direct3D 12 GPU backend, giving Windows apps a modern alternative to OpenGL for hardware-accelerated rendering. ❤️ @kation (#2823)
  • OpenGL on Windows ARM — The OpenGL backend is now enabled on Windows ARM devices. (#3189)
  • SKMetalView on tvOS — Adds SKMetalView support to the tvOS platform, matching other Apple targets. ❤️ @martin (#3114)
  • Expanded Linux support — Extended the Linux build matrix to cover more distributions and configurations, including Alpine Linux cross-compilation support. ❤️ @kasperk81 (#3200, #3209)

Bug Fixes

  • iOS Simulator Metal performance — Fixed a significant rendering performance regression when using the Metal backend on the iOS Simulator. ❤️ @taublast (#3156)
  • .NET Framework / Mono packages.config regression — Fixed a packaging regression that broke projects using the classic packages.config NuGet format with .NET Framework or Mono. ❤️ @david.sungaila (#3112)
  • WebAssembly / Blazor app base path — Fixed WASM module loading when the application is hosted under a non-root base path. (#3092)
  • .NET 9 ASP.NET Blazor compatibility — Resolved multiple issues with .NET 9 Blazor hosted apps. (#3064, #3082, #3088)
  • Incorrect internal API call — Fixed a wrong native API call in the bindings. ❤️ @i (#3143)
  • tvOS build target — Fixed an incorrect build target configuration for tvOS. (#3199)

Security

  • CVE-2024-30105 addressed — Updated the build toolchain to address a .NET security vulnerability in the CI pipeline. ❤️ @pecolli (#3166)

Dependencies

All major native dependencies were updated to current stable versions:

  • libpng updated to 1.6.44 (#3059)
  • freetype2 updated to 2.13.3+ (#3061)
  • libexpat updated to v2.6.4 (#3056)
  • libjpeg-turbo updated to 2.1.5.1+ (#3060)
  • harfbuzz updated to 8.3.1 (#3052)
  • fontconfig updated to latest (#3221)
  • VulkanMemoryAllocator updated to 3.2.1 ❤️ @kasperk81 (#3196)
  • Android NDK updated to r27c with 16KB page alignment for Android 15+ (#3096)

Platform Support

PlatformWhat's New
🍎 AppleSKMetalView on tvOS; Metal GRBackendRenderTarget API; iOS Simulator Metal performance fix
🪟 WindowsDirect3D 12 GPU backend; OpenGL on ARM
🐧 LinuxLoongArch64; RISC-V 64-bit; Alpine Linux and expanded distro support
🤖 AndroidNDK r27c with 16KB page alignment
🌐 WebAssembly.NET 9 Blazor fixes; base-path loading fix
🎨 Core APISKColorFilter factory methods; SKCanvas.SaveLayerRec; Metal GRBackendRenderTarget

Community Contributors ❤️

ContributorWhat They Did
@ahmed605Implemented SKCanvas.SaveLayerRec
@4DarmygeometryAdded LoongArch64 native build support
@kasperk81Added RISC-V 64-bit support, updated VulkanMemoryAllocator, extended Alpine Linux cross-compilation
@kationEnabled Direct3D 12 GPU backend on Windows
@martinAdded SKMetalView support on tvOS
@taublastFixed iOS Simulator Metal performance regression
@spouliotAdded Metal GRBackendRenderTarget API across all Apple platforms
@david.sungailaFixed .NET Framework / Mono packages.config regression
@pecolliAddressed CVE-2024-30105 in the build toolchain
@iFixed an incorrect internal API call