Skip to content

Releases: mono/SkiaSharp

Version 4.150.0

Choose a tag to compare

@mattleibow mattleibow released this 09 Jul 00:02

Updates the Skia engine to milestone 150, adds new image-filter, color-filter and paint APIs, and refreshes the bundled HarfBuzz.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

⚠️ Breaking Changes

  • Promoted remaining pre-v4 obsolete APIs to errors and trimmed obsolete enums from the reference assembly by @ramezgerges (#4195)
  • Removed deprecated .NET Interactive (Polyglot Notebooks) support by @mattleibow (#4186)

✨ What's New

🐛 Fixes

📦 Dependency Updates


All changes (45 pull requests)
  • [skia-sync] Update skia to milestone 150 by @mattleibow in #4146
  • feat: Add job-level status to release-status skill pipeline script by @mattleibow in #4159
  • Build Tizen native dependencies in a Docker container (#4154) by @mattleibow in #4157
  • Update harfbuzz to 14.2.1 by @mattleibow in #4167
  • Migrate test suite from xUnit v2 to xUnit v3 (#4139) by @mattleibow in #4143
  • Unify API changelog + release-notes versioning via shared versions.json by @mattleibow in #4171
  • release-notes: fix --all timeout and migrate all pages to the metadata block by @mattleibow in #4174
  • [docs] Unify changelog + release-notes generation: stable rollups and local skia links by @mattleibow in #4177
  • release-notes: restore in-flight -unreleased naming + per-preview rollup (R1/R2/R3) by @mattleibow in #4179
  • docs: refresh Skia adoption claims with verified product list by @mattleibow in #4185
  • Remove deprecated .NET Interactive (Polyglot Notebooks) support by @mattleibow in #4186
  • Add Chromium release heads-up to the security-audit skill by @mattleibow in #4188
  • [docs] Unify API-diff + release-notes into one agentic workflow by @mattleibow in #4184
  • [infra] Move release-notes Prepare into its own job (verbose, disk-managed, artifact handoff) by @mattleibow in #4193
  • Update docs submodule to latest main by @github-actions[bot] in #3919
  • docs: generate frameworks docs from output/nugets, latest-only monikers by @mattleibow in #4192
  • Fix docs.cake moniker collision dropping iOS GL API docs by @mattleibow in #4197
  • Make API-diff changelog generation host-independent + regenerate 4.147/4.148/4.150 changelogs by @mattleibow in #4196
  • [v4] Promote remaining pre-v4 obsoletes to error and trim obsolete enums from the ref assembly by @ramezgerges in #4195
  • Make doc generation reproducible and Linux-only; unify "API diff" terminology by @mattleibow in #4200
  • Improve api-docs skill to prevent recurring doc-writer mistakes by @mattleibow in #4204
  • Sync VERSIONS.txt with harfbuzz 14.2.1 by @mattleibow in #4214
  • Add VERSIONS.txt step to the native-dependency-update skill by @mattleibow in #4215
  • Fix release-branch skill integration-branch model and add bump-version helper by @mattleibow in #4211
  • [api-docs] Stop merge from writing unfilled remarks scaffold to XML by @mattleibow in #4218
  • [docs] Release-notes: main-only daily workflow + GitHub Release teaser playbook by @mattleibow in #4207
  • Add mono/skia counterpart branching to release-branch skill by @mattleibow in #4220
  • Fix integration test harness for .NET 10 by @mattleibow in #4221
  • [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4224
  • docs: drop obsolete GrVkYcbcrConversionInfo page to fix Learn xref collision by @mattleibow in #4225
  • [docs] docs: regenerate API diffs and polish release notes by @github-actions[bot] in #4231
  • Update docs submodule to latest main by @github-actions[bot] in #4234
  • [skia-sync] Merge upstream chrome/m150 bug fixes by @mattleibow in #4190
  • Add SKImageFilter.CreateEmpty() method by @mattleibow in #4228
  • Add SKImageFilter.CreateCrop() - Fixes #3938 by @mattleibow in #4229
  • Fix integration test harness Docker detection + command timeout, and release-testing skill filter syntax by @mattleibow in #4244
  • Add SKColorFilter.CreateOverdraw() API by @mattleibow in #4227
  • Support release-branch targeting in Skia upstream sync (+ Opus 4.7, libc++ build fix) by @mattleibow in #4239
  • Add a main (tip) mode to the Skia upstream sync by @mattleibow in #4254
  • perf(SKSurface): cache the Canvas wrapper across calls by @ramezgerges in #4247
  • ci: regroup and rename GitHub Actions workflows; prune dead ones by @mattleibow in #4260
  • Group release-notes site by support status (stable/preview) + audit drift check by @mattleibow in #4267
  • Fix small-sigma raster blur regression (define SK_AVOID_SLOW_RASTER_PIPELINE_BLURS) by @ramezgerges in #4269
  • Harden Skia-sync conflict policy, allow durable gn args, and split skill vs workflow by @mattleibow in #4258
  • Bind SKPaint.GetFastBounds by @mattleibow in #4271

Version 4.151.0 (Preview 1)

Pre-release

Choose a tag to compare

@mattleibow mattleibow released this 03 Jul 12:01

Updates the Skia engine to milestone 151, alongside documentation and release-tooling improvements.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

✨ What's New


All changes (15 pull requests)
  • Add milestone sync script aligned to Chrome release schedule by @mattleibow in #4282
  • [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4283
  • ci(docs): stop the PR-author cache from re-triggering the docs pipeline by @mattleibow in #4285
  • Add embedded image/font selectors to SkiaFiddle by @mattleibow in #4284
  • api-docs skill: dual-purpose docs add + review (references + scripts) by @mattleibow in #4242
  • docs: add release cadence section to releases index by @mattleibow in #4291
  • docs: add "AI in SkiaSharp" site page by @mattleibow in #4292
  • [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4296
  • docs: restore release cadence section in releases index, driven by Chrome's schedule by @mattleibow in #4297
  • [docs] docs: regenerate API diffs and polish release notes by @github-actions[bot] in #4298
  • [skia-sync] Update skia to milestone 151 by @mattleibow in #4294
  • Update README.md by @mattleibow in #4299
  • [externals] Bump skia submodule to drop SK_BUILD_FOR_WASM redef by @ramezgerges in #3788
  • [skia-sync] Drive upstream sync from versions.json with a run-number rotation by @mattleibow in #4306
  • [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4311

Version 4.150.0 (RC 1)

Pre-release

Choose a tag to compare

@mattleibow mattleibow released this 30 Jun 19:04

New image-filter and color-filter APIs, a faster SKSurface canvas path, and a raster blur fix.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

✨ What's New

🐛 Fixes

Thanks to our contributors: @ramezgerges


All changes (13 pull requests)
  • [skia-sync] Merge upstream chrome/m150 bug fixes by @mattleibow in #4190
  • Add SKImageFilter.CreateEmpty() method by @mattleibow in #4228
  • Add SKImageFilter.CreateCrop() - Fixes #3938 by @mattleibow in #4229
  • Fix integration test harness Docker detection + command timeout, and release-testing skill filter syntax by @mattleibow in #4244
  • Add SKColorFilter.CreateOverdraw() API by @mattleibow in #4227
  • Support release-branch targeting in Skia upstream sync (+ Opus 4.7, libc++ build fix) by @mattleibow in #4239
  • Add a main (tip) mode to the Skia upstream sync by @mattleibow in #4254
  • perf(SKSurface): cache the Canvas wrapper across calls by @ramezgerges in #4247
  • ci: regroup and rename GitHub Actions workflows; prune dead ones by @mattleibow in #4260
  • Group release-notes site by support status (stable/preview) + audit drift check by @mattleibow in #4267
  • Fix small-sigma raster blur regression (define SK_AVOID_SLOW_RASTER_PIPELINE_BLURS) by @ramezgerges in #4269
  • Harden Skia-sync conflict policy, allow durable gn args, and split skill vs workflow by @mattleibow in #4258
  • Bind SKPaint.GetFastBounds by @mattleibow in #4271

Version 4.150.0 (Preview 2)

Pre-release

Choose a tag to compare

@mattleibow mattleibow released this 25 Jun 17:15

A maintenance preview that finalizes the v4 obsolete-API cleanup, removes .NET Interactive support, and refreshes HarfBuzz.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

⚠️ Breaking Changes

  • Promoted remaining pre-v4 obsolete APIs to errors and trimmed obsolete enums from the reference assembly by @ramezgerges (#4195)
  • Removed deprecated .NET Interactive (Polyglot Notebooks) support by @mattleibow (#4186)

📦 Dependency Updates

Thanks to our contributors: @ramezgerges


All changes (30 pull requests)
  • Build Tizen native dependencies in a Docker container (#4154) by @mattleibow in #4157
  • Update harfbuzz to 14.2.1 by @mattleibow in #4167
  • Migrate test suite from xUnit v2 to xUnit v3 (#4139) by @mattleibow in #4143
  • Unify API changelog + release-notes versioning via shared versions.json by @mattleibow in #4171
  • release-notes: fix --all timeout and migrate all pages to the metadata block by @mattleibow in #4174
  • [docs] Unify changelog + release-notes generation: stable rollups and local skia links by @mattleibow in #4177
  • release-notes: restore in-flight -unreleased naming + per-preview rollup (R1/R2/R3) by @mattleibow in #4179
  • docs: refresh Skia adoption claims with verified product list by @mattleibow in #4185
  • Remove deprecated .NET Interactive (Polyglot Notebooks) support by @mattleibow in #4186
  • Add Chromium release heads-up to the security-audit skill by @mattleibow in #4188
  • [docs] Unify API-diff + release-notes into one agentic workflow by @mattleibow in #4184
  • [infra] Move release-notes Prepare into its own job (verbose, disk-managed, artifact handoff) by @mattleibow in #4193
  • Update docs submodule to latest main by @github-actions[bot] in #3919
  • docs: generate frameworks docs from output/nugets, latest-only monikers by @mattleibow in #4192
  • Fix docs.cake moniker collision dropping iOS GL API docs by @mattleibow in #4197
  • Make API-diff changelog generation host-independent + regenerate 4.147/4.148/4.150 changelogs by @mattleibow in #4196
  • [v4] Promote remaining pre-v4 obsoletes to error and trim obsolete enums from the ref assembly by @ramezgerges in #4195
  • Make doc generation reproducible and Linux-only; unify "API diff" terminology by @mattleibow in #4200
  • Improve api-docs skill to prevent recurring doc-writer mistakes by @mattleibow in #4204
  • Sync VERSIONS.txt with harfbuzz 14.2.1 by @mattleibow in #4214
  • Add VERSIONS.txt step to the native-dependency-update skill by @mattleibow in #4215
  • Fix release-branch skill integration-branch model and add bump-version helper by @mattleibow in #4211
  • [api-docs] Stop merge from writing unfilled remarks scaffold to XML by @mattleibow in #4218
  • [docs] Release-notes: main-only daily workflow + GitHub Release teaser playbook by @mattleibow in #4207
  • Add mono/skia counterpart branching to release-branch skill by @mattleibow in #4220
  • Fix integration test harness for .NET 10 by @mattleibow in #4221
  • [docs] Regenerate API diffs and polish release notes by @github-actions[bot] in #4224
  • docs: drop obsolete GrVkYcbcrConversionInfo page to fix Learn xref collision by @mattleibow in #4225
  • [docs] docs: regenerate API diffs and polish release notes by @github-actions[bot] in #4231
  • Update docs submodule to latest main by @github-actions[bot] in #4234

Version 4.148.0

Choose a tag to compare

@mattleibow mattleibow released this 23 Jun 19:04

Finalizes the v4 API surface by turning the remaining pre-v4 obsolete members into hard errors and trimming obsolete enums from the reference assembly.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

⚠️ Breaking Changes

  • Remaining pre-v4 obsolete APIs now error, and obsolete enums are removed from the reference assembly by @github-actions[bot] (#4205)

All changes (1 pull request)
  • [release/4.148.x] [v4] Promote remaining pre-v4 obsoletes to error and trim obsolete enums from the ref assembly by @github-actions[bot] in #4205

Version 4.150.0 (Preview 1)

Pre-release

Choose a tag to compare

@mattleibow mattleibow released this 15 Jun 14:50

Preview of SkiaSharp 4.150 built on Skia engine milestone 150.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

✨ What's New


All changes (2 pull requests)

Version 4.148.0 (RC 1)

Pre-release

Choose a tag to compare

@mattleibow mattleibow released this 15 Jun 14:13

Upgrades the Skia engine to milestone 148 and promotes previously deprecated SKPaint text APIs to build errors.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

⚠️ Breaking Changes

  • Previously deprecated SKPaint text/font members now emit build errors — update call sites by @ramezgerges (#4068)
  • Remaining legacy SKPaint state-reading APIs marked obsolete; expect new compiler warnings by @mattleibow (#4114)

✨ What's New

🐛 Fixes

  • Fixed WinUI Projection DLL not resolving for .NET 9 consumers on Windows by @mattleibow (#4084)
  • Fixed SKPixmap.GetPixelSpan offset calculation (was using Height instead of Width) by @mattleibow (#4128)
  • Fixed SKPixmap/SKBitmap GetPixelSpan to use RowBytes for correct stride by @mattleibow (#4148)

📦 Dependency Updates

Thanks to our contributors: @ramezgerges


All changes (35 pull requests)
  • Document ADO pipeline chain tracking in release skills by @mattleibow in #4050
  • Update harfbuzz to 14.2.0 by @mattleibow in #4035
  • [docs] Update release notes for 4.147.0 (preview.3) by @mattleibow in #4057
  • Fix release notes workflow to always checkout main by @mattleibow in #4059
  • Enhance security-audit skill: CG alerts integration and viewer improvements by @mattleibow in #4058
  • [docs] Update release notes for 4.147.0 (unreleased/main) by @github-actions[bot] in #4061
  • Disable unused dependency manifests in skia submodule to suppress CG alerts by @mattleibow in #4054
  • Update .NET SDK version to 10.0.108 by @mattleibow in #4055
  • Improve security-audit skill: schema enforcement, CG reliability, and report quality by @mattleibow in #4070
  • [skia-sync] Merge upstream chrome/m147 bug fixes by @mattleibow in #4044
  • docs: force-push docs-live to prevent repo size bloat by @mattleibow in #4073
  • Add es-metadata.yml with initial configuration by @mattleibow in #4075
  • Add es-metadata.yml to cache exclude list by @mattleibow in #4077
  • Migrate Linux Docker builds to .NET official cross-compilation images by @mattleibow in #4062
  • Add --pull to Docker builds to ensure fresh base images by @mattleibow in #4087
  • Fix native Windows builds failing to find .NET SDK 10.0.108 by @mattleibow in #4089
  • Revert "Add --pull to Docker builds to ensure fresh base images" by @mattleibow in #4091
  • Add ci-status skill for daily CI health dashboard by @mattleibow in #4094
  • Fix WinUI Projection DLL not resolved for .NET 9 consumers on Windows by @mattleibow in #4084
  • Add Chrome Releases blog integration to security-audit skill by @mattleibow in #4097
  • feat(ci-status): add GitHub Actions tracking and restructure as collect → AI → render pipeline by @mattleibow in #4099
  • Migrate device and WASM tests from XHarness to DeviceRunners dotnet test by @mattleibow in #4004
  • [skia-sync] Merge upstream chrome/m147 bug fixes by @mattleibow in #4081
  • Update expat to 2.8.1 by @mattleibow in #4079
  • Promote SKPaint text/font obsolete members to error by @ramezgerges in #4068
  • Rework the lifecycle of singleton instances by @ramezgerges in #4080
  • Fix SKPixmap.GetPixelSpan(x,y) offset using Height instead of Width by @mattleibow in #4128
  • Move native-compat gate from [ModuleInitializer] to SkiaApi cctor by @mattleibow in #4133
  • [skia-sync] Update skia to milestone 148 by @mattleibow in #4125
  • Obsolete remaining legacy paint state-reading APIs (#3732) by @mattleibow in #4114
  • Fix SKIASHARP_VERSION yaml missed by the m148 bump by @mattleibow in #4144
  • release-notes: roll up preview-only/skipped versions into their successor by @mattleibow in #4149
  • [docs] Two-way supersede links in release notes by @mattleibow in #4152
  • Fix SKPixmap/SKBitmap GetPixelSpan to use RowBytes for stride by @mattleibow in #4148
  • [docs] docs: update release notes for 4.148.0 (unreleased) by @github-actions[bot] in #4153

Version 4.147.0 (Preview 3)

Pre-release

Choose a tag to compare

@mattleibow mattleibow released this 25 May 11:08

Drops pre-.NET 8 WASM builds, adds new HarfBuzz color APIs and public API wrappers, and updates native dependencies.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

⚠️ Breaking Changes

  • Dropped WASM native builds for pre-.NET 8 Emscripten versions by @mattleibow (#4022)

✨ What's New

  • Added HBColor struct for proper HarfBuzz hb_color_t representation by @mattleibow (#4000)
  • Added missing public API wrappers and fixed naming convention violations by @mattleibow (#4001)
  • Updated Tizen SDK support to version 10.0 by @mattleibow (#3743)

📦 Dependency Updates

Thanks to our contributors: @ramezgerges, @ebariche, @sasakrsmanovic


All changes (37 pull requests)
  • Keep raw PR data in release notes files as HTML comment by @mattleibow in #3877
  • Fix SkiaSharp references for Uno Platform's Gallery sample by @ramezgerges in #3867
  • [docs] Release notes for 4.147.0 by @github-actions[bot] in #3882
  • Add workflow to persist agentic workflow data to aw-data branch by @mattleibow in #3907
  • Add automated Skia upstream sync workflow by @mattleibow in #3825
  • Add content-based build caching with ADO Cache@2 by @mattleibow in #3826
  • Run stale staging sweep daily instead of weekly by @mattleibow in #3911
  • [samples] Improve SkiaFiddle application size by @ebariche in #3849
  • Add automated API docs pipeline by @mattleibow in #3918
  • Fix CI: samples, Docker, NanoServer, coverlet, and build chain by @mattleibow in #3835
  • [samples] Add Hero Image gallery sample by @mattleibow in #3792
  • docs: Update Uno Platform link and description in README.md by @sasakrsmanovic in #3966
  • Skip Skia sync workflow when upstream is already merged by @mattleibow in #3971
  • Blazor gallery redesign: API Atlas with tag cloud filtering by @mattleibow in #3970
  • Enable TreatWarningsAsErrors in binding/ and fix all warnings by @mattleibow in #3752
  • Add missing API wrappers and fix naming convention violations by @mattleibow in #4001
  • Add HBColor struct for proper hb_color_t representation by @mattleibow in #4000
  • Fix UnicodeEncodeError on Windows CI in repo-deps.py by @mattleibow in #4006
  • Update Tizen SDK installer from 6.1 to 10.0 by @mattleibow in #3743
  • [main] Update zlib to 1.3.2.1-motley by @mattleibow in #3720
  • [main] Update FreeType to 2.14.3 by @mattleibow in #3726
  • Fix cgmanifest.json version mismatches by @mattleibow in #3830
  • Fix docs deploy race condition with retry loop by @mattleibow in #4019
  • Fix Skia Upstream Sync showing as failed when nothing to sync by @mattleibow in #4020
  • Fix Alpine CI failures caused by transient GitLab 500 errors by @mattleibow in #4013
  • Move API docs workflow to docs repo and optimize skill architecture by @mattleibow in #4024
  • Fix font test failures in sync workflow by mounting /usr/share/fonts by @mattleibow in #4023
  • Add manifest generation to docs-tool.ps1 extract by @mattleibow in #4025
  • [WASM] Drop native builds for pre-.NET 8 Emscripten versions by @mattleibow in #4022
  • Update libjpeg-turbo to 3.1.4.1 by @mattleibow in #4012
  • [docs] Release notes for 4.147.0 (unreleased) by @github-actions[bot] in #4029
  • Update api-docs skill: merge guard, anchored regex, workflow awareness by @mattleibow in #4030
  • Add GitHub Actions workflow for API diff by @mattleibow in #4038
  • Fix ANGLE WinAppSDK download failure on 1ES agents by @mattleibow in #4014
  • [docs] API diff for v3.119.2 by @github-actions[bot] in #4046
  • Add automated API diff workflow by @mattleibow in #4036
  • [docs] docs: update release notes for 4.147.0 (unreleased) by @github-actions[bot] in #4049

New Contributors

Version 3.119.4

Choose a tag to compare

@mattleibow mattleibow released this 25 May 08:28

Updates bundled libexpat and libpng to their latest versions.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

📦 Dependency Updates


All changes (5 pull requests)
  • Fix cgmanifest.json Skia milestone mismatch on release/3.119.x by @mattleibow in #3721
  • [release/3.119.x] Free disk space on Linux CI agents by @github-actions[bot] in #3716
  • [release/3.119.x] Update libexpat to 2.7.5 by @mattleibow in #3722
  • [release/3.119.x] Update libpng to 1.6.58 by @mattleibow in #3723
  • [release/3.119.x] Improve Android CI disk diagnostics by @github-actions[bot] in #3728

Version 4.147.0 (Preview 2)

Pre-release

Choose a tag to compare

@mattleibow mattleibow released this 11 May 20:55

Adds animated WebP encoding, a zero-copy stream-to-data API, and fixes a finalizer crash in SKPath.

📦 NuGet · 📖 Release notes · 🔀 Full changelog

⚠️ Breaking Changes

  • Apple platform library TFMs updated to versioned 26.0; app TFMs remain unversioned by @mattleibow (#3798)

✨ What's New

  • Add animated WebP encoding support via SKWebpEncoder by @mattleibow (#3771)
  • Add SKStream.GetData() for zero-copy stream-to-data conversion by @mattleibow (#3772)

🐛 Fixes

  • Fix finalizer crash in SKPath when SKPathBuilder is collected first by @ramezgerges (#3796)

Thanks to our contributors: @ramezgerges


All changes (27 pull requests)
  • Bump HarfBuzzSharp to 8.3.1.6 after release by @mattleibow in #3780
  • fix: reuse same PR for release notes workflow by @mattleibow in #3782
  • [samples] Fix Skottie package downgrade NU1605 in Uno gallery by @ramezgerges in #3785
  • Dev/skiafiddle ux improvements by @ramezgerges in #3790
  • Automate website release notes with branch-diffing script by @mattleibow in #3787
  • Improve docs landing page layout and hero section by @mattleibow in #3794
  • Add skia-analyst and sample-scout skills with daily/weekly workflows by @mattleibow in #3755
  • Simplify sample-scout to read GM files from local submodule by @mattleibow in #3802
  • Fix skia-analyst and sample-scout: no safe outputs generated by @mattleibow in #3805
  • Fix release notes script git fetch for CI shallow clones by @mattleibow in #3808
  • Revert "Fix skia-analyst and sample-scout: no safe outputs generated" by @mattleibow in #3811
  • Delete .github/workflows/skia-analyst.md by @mattleibow in #3812
  • Add allowed-base-branches: [main] to release notes workflow by @mattleibow in #3813
  • Make release notes script fully git-based with cumulative rollup by @mattleibow in #3815
  • Fix Apple platform TFMs: use 26.0 for libraries, unversioned for apps by @mattleibow in #3798
  • [Gallery] Add 5 new interactive samples and redesign Blazor home page by @mattleibow in #3757
  • fix: preserve branch name in release notes workflow to reuse PRs by @mattleibow in #3822
  • Fix update-docs workflow: add missing mdoc assembly search paths for Tizen and Gtk4 by @mattleibow in #3824
  • Disable PR artifact retrieval in get-build-type.ps1 by @mattleibow in #3827
  • [samples] Bump Basic Uno sample to Uno.Sdk/6.6.0-dev.208 by @ramezgerges in #3821
  • fix: add recreate-ref to release notes workflow for branch reuse by @mattleibow in #3836
  • [docs] Update release notes for 4.147.0 by @github-actions[bot] in #3837
  • fix: skip release notes workflow when only docs/releases change by @mattleibow in #3839
  • [docs] Update release notes for 4.147.0 by @github-actions[bot] in #3840
  • Fix finalizer crash in SKPath when SKPathBuilder is collected first by @ramezgerges in #3796
  • Add animated WebP encoding support (SKWebpEncoder) by @mattleibow in #3771
  • Add SKStream.GetData() for zero-copy stream-to-data conversion by @mattleibow in #3772