From c41a0c3dee052d3bb843ecf15f90154635181a96 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 16 Jun 2026 20:46:34 +0200 Subject: [PATCH 1/6] release-notes: fix --all timeout and migrate all pages to the metadata block MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `update-release-notes` workflow timed out after 15 minutes on its first `--all` run after the unified docs-automation system landed (08ac410ead). Two problems caused it, both fixed here. ~~ Fast-path: compute PR effort only after the skip check ~~ `_write_page` called `get_prs_from_diff`, which computed per-PR "effort" (commit count + working days) for every PR by fetching `refs/pull/N/head` — about 1s of network per PR. That ran for EVERY page BEFORE the `_is_content_unchanged` check, so an all-unchanged `--all` still paid the full cost: the 4.148 page alone (162 PRs) took ~150s, and across 66 pages the run blew past the agent's 15-minute cap. Split the effort loop out of `get_prs_from_diff` (now a cheap git-log parse) into a new `add_pr_effort()`, and call it from `_write_page` only AFTER the unchanged check passes. Pages that skip now pay zero effort cost. Measured: the 4.148 page went from ~170s to ~0.12s when skipped, and a fully-migrated `--all` now completes in ~30s instead of timing out. ~~ One-time migration: regenerate + re-polish every page ~~ Only 7 of 65 pages carried the machine-readable `RAW PR DATA` metadata block (prs/diff/status/supersede) that the skip check compares; the other 58 were legacy hand-curated pages with no block, so they could never be skipped. This commit runs the full `--all` regeneration so every page now carries the block, then re-polishes all 61 pages from their own raw PR data following TEMPLATE.md — Highlights, grouped New Features (Skia milestone bumps first), Bug Fixes, Platform Support, Community Contributors, and Links. Backport-bot authors (github-actions[bot]) were dropped from the contributor tables. With every page migrated, future workflow runs skip all unchanged pages in seconds and only re-polish the 0-2 pages that actually changed. Also renames `4.148.0-unreleased.md` to `4.148.0.md` (now that `release/4.148.0-rc.1` exists) and adds `4.150.0.md` and `1.54.1.1.md`. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../scripts/generate-release-notes.py | 30 +- documentation/docfx/releases/1.49.0.md | 33 +- documentation/docfx/releases/1.49.1.md | 25 +- documentation/docfx/releases/1.49.2.1.md | 36 +- documentation/docfx/releases/1.49.2.md | 35 +- documentation/docfx/releases/1.49.3.md | 52 ++- documentation/docfx/releases/1.49.4.md | 53 ++- documentation/docfx/releases/1.53.0.md | 44 +-- documentation/docfx/releases/1.53.1.1.md | 33 +- documentation/docfx/releases/1.53.1.2.md | 40 +-- documentation/docfx/releases/1.53.1.md | 41 +-- documentation/docfx/releases/1.53.2.md | 71 ++-- documentation/docfx/releases/1.54.0.md | 46 ++- documentation/docfx/releases/1.54.1.1.md | 30 ++ documentation/docfx/releases/1.54.1.md | 46 +-- documentation/docfx/releases/1.55.0.md | 63 +--- documentation/docfx/releases/1.55.1.md | 54 +-- documentation/docfx/releases/1.56.0.md | 57 +--- documentation/docfx/releases/1.56.1.md | 71 +--- documentation/docfx/releases/1.56.2.md | 59 ++-- documentation/docfx/releases/1.57.0.md | 65 +--- documentation/docfx/releases/1.57.1.md | 58 +--- documentation/docfx/releases/1.58.0.md | 30 +- documentation/docfx/releases/1.58.1.1.md | 25 +- documentation/docfx/releases/1.58.1.md | 53 +-- documentation/docfx/releases/1.59.0.md | 39 +-- documentation/docfx/releases/1.59.1.1.md | 27 +- documentation/docfx/releases/1.59.1.md | 26 +- documentation/docfx/releases/1.59.2.md | 41 ++- documentation/docfx/releases/1.59.3.md | 33 +- documentation/docfx/releases/1.60.0.md | 97 +----- documentation/docfx/releases/1.60.1.md | 64 ++-- documentation/docfx/releases/1.60.2.md | 50 ++- documentation/docfx/releases/1.60.3.md | 34 +- documentation/docfx/releases/1.68.0.md | 103 ++---- documentation/docfx/releases/1.68.1.1.md | 79 +++-- documentation/docfx/releases/1.68.1.md | 188 +++++++---- documentation/docfx/releases/1.68.2.1.md | 32 +- documentation/docfx/releases/1.68.2.md | 265 ++++++++------- documentation/docfx/releases/1.68.3.md | 49 ++- documentation/docfx/releases/2.80.0.md | 187 ++++++----- documentation/docfx/releases/2.80.1.md | 44 ++- documentation/docfx/releases/2.80.2.md | 150 +++++---- documentation/docfx/releases/2.80.3.md | 178 ++++++---- documentation/docfx/releases/2.80.4.md | 71 ++-- documentation/docfx/releases/2.88.0.md | 303 +++++++---------- documentation/docfx/releases/2.88.1.md | 210 ++++++------ documentation/docfx/releases/2.88.2.md | 42 ++- documentation/docfx/releases/2.88.3.md | 59 +++- documentation/docfx/releases/2.88.4.md | 200 ++++++----- documentation/docfx/releases/2.88.5.md | 37 +- documentation/docfx/releases/2.88.6.md | 62 ++-- documentation/docfx/releases/2.88.7.md | 34 +- documentation/docfx/releases/2.88.8.md | 53 +-- documentation/docfx/releases/2.88.9.md | 72 ++-- documentation/docfx/releases/3.0.0.md | 316 ++++++++++++------ documentation/docfx/releases/3.116.0.md | 241 +++++++++++-- documentation/docfx/releases/3.116.1.md | 35 +- documentation/docfx/releases/3.119.1.md | 99 ++++-- documentation/docfx/releases/3.119.2.md | 97 +++--- .../{4.148.0-unreleased.md => 4.148.0.md} | 111 +++--- documentation/docfx/releases/4.150.0.md | 42 +++ documentation/docfx/releases/TOC.yml | 15 +- documentation/docfx/releases/index.md | 5 +- 64 files changed, 2758 insertions(+), 2182 deletions(-) create mode 100644 documentation/docfx/releases/1.54.1.1.md rename documentation/docfx/releases/{4.148.0-unreleased.md => 4.148.0.md} (74%) create mode 100644 documentation/docfx/releases/4.150.0.md diff --git a/.agents/skills/release-notes/scripts/generate-release-notes.py b/.agents/skills/release-notes/scripts/generate-release-notes.py index 3f1f8c807c8..f70c65a4a92 100644 --- a/.agents/skills/release-notes/scripts/generate-release-notes.py +++ b/.agents/skills/release-notes/scripts/generate-release-notes.py @@ -801,7 +801,10 @@ def get_prs_from_diff(from_ref, to_ref): """Extract merged PRs from git log between two refs. Parses PR numbers, titles, authors, and bodies from commit messages. - No GitHub API calls needed — everything comes from git. + No GitHub API calls needed — everything comes from git. This is the cheap + part: a single ``git log`` plus regex parsing (sub-second even for hundreds + of commits). The expensive per-PR effort metrics are computed separately by + ``add_pr_effort`` so callers can skip them for unchanged pages. """ # Use a format that gives us everything: hash, author email, subject, body # Separator between commits: a line that won't appear in commit messages @@ -849,22 +852,28 @@ def get_prs_from_diff(from_ref, to_ref): "body": body, }) - if not prs: - return [] + return prs + + +def add_pr_effort(prs): + # type: (list[dict]) -> list[dict] + """Annotate each PR in-place with effort metrics (commit count, days). - # Compute effort for each PR (uses git refs/pull/N/merge) - result = [] + This is the SLOW part: it fetches ``refs/pull/{N}/head`` (and any companion + mono/skia PR) per PR, so it costs ~1s per PR over the network. Call it ONLY + for pages that are actually being (re)written — never for pages that the + unchanged check will skip — otherwise an all-unchanged ``--all`` run pays + minutes of network cost for output it then discards. + """ for i, pr in enumerate(prs, 1): try: pr.update(compute_pr_effort(pr)) except subprocess.CalledProcessError: pass # effort stays unset, that's fine - result.append(pr) if i % 20 == 0: print(" Processed {}/{} PRs...".format(i, len(prs)), file=sys.stderr) - - return result + return prs def format_pr_list(prs, metadata): @@ -1290,6 +1299,11 @@ def _write_page(branch, all_branches, verbose=False): print(" Skipping {} (unchanged)".format(output_path)) return None + # The page is changing, so it's worth the per-PR effort fetches now. Doing + # this AFTER the unchanged check is what keeps an all-unchanged --all run + # cheap: skipped pages never pay the ~1s/PR network cost. + add_pr_effort(prs) + metadata = { "branch": branch, "version": version, diff --git a/documentation/docfx/releases/1.49.0.md b/documentation/docfx/releases/1.49.0.md index cceb3576127..4b9c5ada081 100644 --- a/documentation/docfx/releases/1.49.0.md +++ b/documentation/docfx/releases/1.49.0.md @@ -1,15 +1,38 @@ + + + + # Version 1.49.0 -> **Initial release of SkiaSharp** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.0-preview1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.0-preview1) +> **Preview release** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.0-preview) ## Highlights -The first public release of SkiaSharp — a cross-platform 2D graphics API for .NET that wraps Google's Skia library (milestone 49). This preview brought Skia's powerful rendering capabilities to Xamarin and .NET developers for the first time. +The first public preview of SkiaSharp — a cross-platform 2D graphics API for .NET that wraps Google's Skia library (milestone 49). This release brought Skia's powerful rendering engine to Xamarin and .NET developers for the first time. + +## New Features + +### Engine + +- **Skia milestone 49** — Initial binding of the native Skia rendering engine for .NET. -## Breaking Changes +### API Surface -*None in this release.* +- **Core drawing API** — Canvas, paint, path, image, and bitmap primitives for cross-platform 2D graphics. ## Links -- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.0-preview1) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.0-preview) diff --git a/documentation/docfx/releases/1.49.1.md b/documentation/docfx/releases/1.49.1.md index b738f763a71..389e0e133c7 100644 --- a/documentation/docfx/releases/1.49.1.md +++ b/documentation/docfx/releases/1.49.1.md @@ -1,14 +1,27 @@ -# Version 1.49.1 + + + -The first stable (non-preview) release of SkiaSharp, promoting the 1.49 series to production-ready status. This release included stability improvements and fixes following the initial preview. +# Version 1.49.1 + +> **Released April 18, 2016** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.1) -## Breaking Changes +## Highlights -*None in this release.* +The first stable (non-preview) release of SkiaSharp, promoting the 1.49 series to production-ready status after the initial previews. ## Links diff --git a/documentation/docfx/releases/1.49.2.1.md b/documentation/docfx/releases/1.49.2.1.md index 68107d3f3df..42687854e6d 100644 --- a/documentation/docfx/releases/1.49.2.1.md +++ b/documentation/docfx/releases/1.49.2.1.md @@ -1,26 +1,30 @@ -# Version 1.49.2.1 - -> **Skia m49 sync and community additions** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.2.1-beta) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.2.1-beta) - -## Highlights + -*None in this release.* + -### Engine +# Version 1.49.2.1 -- **Skia m49 upstream sync** — Pulled in the latest changes from Google's Skia milestone 49 codebase. +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.2.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.2.1) -## Community Contributors ❤️ +## Highlights -| Contributor | What They Did | -|-------------|--------------| -| [@kekekeks](https://github.com/kekekeks) | Additions to this release | +A packaging and servicing update over 1.49.1 with no user-facing code changes. ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.2-beta...v1.49.2.1-beta) -- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.2.1-beta) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.2.1) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.2.1) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.49.2.1) diff --git a/documentation/docfx/releases/1.49.2.md b/documentation/docfx/releases/1.49.2.md index a5655461aa1..e3a7377da60 100644 --- a/documentation/docfx/releases/1.49.2.md +++ b/documentation/docfx/releases/1.49.2.md @@ -1,26 +1,29 @@ -# Version 1.49.2 + -A community-driven beta release with contributions from five different contributors, bringing improvements and fixes to the SkiaSharp library. + -## Breaking Changes +# Version 1.49.2 -*None in this release.* +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.2) -## Community Contributors ❤️ +## Highlights -| Contributor | What They Did | -|-------------|--------------| -| [@bholmes](https://github.com/bholmes) | Contributions to this release | -| [@joelmartinez](https://github.com/joelmartinez) | Contributions to this release | -| [@migueldeicaza](https://github.com/migueldeicaza) | Contributions to this release | -| [@petergolde](https://github.com/petergolde) | Contributions to this release | -| [@tdenniston](https://github.com/tdenniston) | Contributions to this release | +A small maintenance release. No tracked pull requests landed between `1.49.1` and this version; the build was published to refresh the packaged binaries. ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.2-beta) -- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.2-beta) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.2) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.2) diff --git a/documentation/docfx/releases/1.49.3.md b/documentation/docfx/releases/1.49.3.md index e8bba78f649..fed25e5c122 100644 --- a/documentation/docfx/releases/1.49.3.md +++ b/documentation/docfx/releases/1.49.3.md @@ -1,46 +1,42 @@ -# Version 1.49.3 - -> **UWP support and canvas clipping** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.3-beta) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.3-beta) - -## Highlights - -A feature-packed beta that brings Windows UWP support, improved canvas clipping APIs, better custom platform support, and important fixes for text encoding and canvas save/restore operations. + -## New Features + -### Platform +# Version 1.49.3 -- **Windows UWP support** — SkiaSharp can now be used in Universal Windows Platform apps. -- **Custom platform support** — A new mechanism allows using SkiaSharp on unofficially supported platforms (such as Linux) by disabling the default native library inclusion. Set `False` in your project and manually include a native library named `libSkiaSharp`. +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.3) -### API Surface +## Highlights -- **`SKCanvas` clipping** — New overloads for `ClipRect` and `ClipPath` that accept `SKRegionOperation` and antialias parameters, enabling clip region resets. Also added `GetClipBounds` and `GetClipDeviceBounds` for querying the current clip. +This patch release renames the native library to align packaging and loading conventions across platforms. -```csharp -void ClipRect(SKRect rect, SKRegionOperation operation = SKRegionOperation.Intersect, bool antialias = false); -void ClipPath(SKRect rect, SKRegionOperation operation = SKRegionOperation.Intersect, bool antialias = false); -bool GetClipBounds(ref SKRect bounds); -bool GetClipDeviceBounds(ref SKRectI bounds); -``` +## New Features -## Bug Fixes +### Platform -- **`SKCanvas.Save` / `SKCanvas.SaveLayer` return values** — These methods now correctly return the value from native code. -- **Text encoding handling** — `SKPaint.MeasureText`, `BreakText`, `GetTextPath`, and `GetPosTextPath` now use the encoding from `SKPaint.TextEncoding` instead of incorrectly converting to UTF-16, matching the behavior of text drawing operations. +- **Native library rename** — Renames the bundled native library for consistent naming across the supported platforms. ([#81](https://github.com/mono/SkiaSharp/pull/81)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🪟 Windows | UWP support added | -| 🐧 Linux | Custom platform mechanism enables unofficial support | +| 📦 General | Native library renamed for consistent packaging | ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.2.1-beta...v1.49.3-beta) -- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.3-beta) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.3) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.3) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.49.3) diff --git a/documentation/docfx/releases/1.49.4.md b/documentation/docfx/releases/1.49.4.md index 271dcc01c6e..0afeae87a0f 100644 --- a/documentation/docfx/releases/1.49.4.md +++ b/documentation/docfx/releases/1.49.4.md @@ -1,47 +1,42 @@ -# Version 1.49.4 - -> **tvOS support and PDF creation** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.4-beta) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.4-beta) + -## Breaking Changes + -*None in this release.* - -## New Features +# Version 1.49.4 -### Platform +> **Native library servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.49.4) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.49.4) -- **Apple tvOS support** — SkiaSharp can now be used in tvOS applications. +## Highlights -### Images & Documents +This servicing release renames the bundled native library so it resolves consistently across all supported platforms. -- **PDF creation** — New `SKDocument` API enables creating multi-page PDF files using standard `SKCanvas` drawing operations. +## New Features -```csharp -using (var stream = new SKFileWStream("document.pdf")) -using (var document = SKDocument.CreatePdf(stream)) -{ - using (var canvas = document.BeginPage(width, height)) - using (var paint = new SKPaint()) - { - canvas.DrawText("...PDF...", 10f, 100f, paint); - document.EndPage(); - } +### Platform - document.Close(); -} -``` +- **Consistent native library naming** — Renames the native library to a single, predictable name, improving native library resolution across platforms. ([#81](https://github.com/mono/SkiaSharp/pull/81)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | tvOS support added | +| 📦 General | Consistent native library naming | ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.3-beta...v1.49.4-beta) -- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.4-beta) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.1...v1.49.4) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.49.4) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.49.4) diff --git a/documentation/docfx/releases/1.53.0.md b/documentation/docfx/releases/1.53.0.md index dae275aa5e4..3a2f6787f55 100644 --- a/documentation/docfx/releases/1.53.0.md +++ b/documentation/docfx/releases/1.53.0.md @@ -1,38 +1,42 @@ -# Version 1.53.0 - -> **New codec, path effects, and expanded API surface** · Released August 1, 2016 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.53.0) + -## Breaking Changes + -### Image Decoding +# Version 1.53.0 -- **`SKImageDecoder` removed** — Replaced by `SKCodec`, which provides a more capable and consistent image decoding API. +> **Native library rename** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.53.0) -### Color Types +## Highlights -- **`SKColorType.N_32` removed** — The platform-specific color type is now accessed via `SKImageInfo.PlatformColorType` instead of an enum value. This reduces confusion because the platform-specific value was not actually a separate enum entry. +This release renames the native library shipped with SkiaSharp, aligning the binary naming across all supported platforms. ## New Features -### API Surface +### Platform -- **`SKPathEffect`** — New type for applying path-based visual effects such as dashes, corners, and compositions. -- **`SKCodec`** — New image decoding API replacing `SKImageDecoder`, with broader format support. -- **Adobe DNG support** — SkiaSharp can now load Adobe DNG (Digital Negative) image formats. -- **`SKPath` expansion** — Added `ArcTo`, `RArcTo`, `Rewind`, `Reset`, `AddPath`, `AddRoundedRect`, `AddCircle`, and support for iterating over path segments. -- **`SKPoint` and `SKMatrix` expansion** — Many new members for point and matrix operations. -- **`SKCanvas` improvements** — Added transformations using a center point and the ability to draw additional shapes. -- **`SKTypeface` options** — New options for creating typefaces with additional configuration. +- **Renamed native library** — Renames the bundled native binary for consistent naming across platforms. ([#81](https://github.com/mono/SkiaSharp/pull/81)) -## Bug Fixes +## Platform Support -- Corrected many memory management issues. +| Platform | What's New | +|----------|-----------| +| 📦 General | Renamed native library | ## Links +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.49.2-beta...v1.53.0) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.53.0) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.53.0) diff --git a/documentation/docfx/releases/1.53.1.1.md b/documentation/docfx/releases/1.53.1.1.md index 901c404920a..94e2de2eb4b 100644 --- a/documentation/docfx/releases/1.53.1.1.md +++ b/documentation/docfx/releases/1.53.1.1.md @@ -1,21 +1,36 @@ -# Version 1.53.1.1 + + + -A hotfix release that resolves an issue where setting `SKPaint.IsStroke` had no effect on rendering output. +# Version 1.53.1.1 + +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.1.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.53.1.1) -## Breaking Changes +## Highlights -*None in this release.* +A servicing release that republishes the `1.53.1` packages with no source code changes. -## Bug Fixes +## Platform Support -- **`SKPaint.IsStroke` had no effect** — Setting the stroke property on a paint object now correctly applies stroke rendering. ([#135](https://github.com/mono/SkiaSharp/issues/135)) +| Platform | What's New | +|----------|-----------| +| 📦 General | Packaging/servicing only — no code changes | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.53.1...v1.53.1.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.53.1.1) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.53.1.1) +- [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.53.1.1) diff --git a/documentation/docfx/releases/1.53.1.2.md b/documentation/docfx/releases/1.53.1.2.md index a2bbd095ea9..924c2ab51bb 100644 --- a/documentation/docfx/releases/1.53.1.2.md +++ b/documentation/docfx/releases/1.53.1.2.md @@ -1,33 +1,27 @@ -# Version 1.53.1.2 - -> **Canvas from bitmap and Windows Store certification fix** · Released August 24, 2016 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.1.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.53.1.2) - -## Highlights - -Adds the ability to create an `SKCanvas` directly from an `SKBitmap`, expands `SKPaint` and `SKPath` with additional members, and fixes Windows Store App certification compliance. + -## New Features + -### API Surface - -- **`SKCanvas` from `SKBitmap`** — A canvas can now be created directly from a bitmap for in-memory drawing operations. -- **Additional `SKPaint` members** — New members added to `SKPaint` for more control over painting behavior. -- **Additional `SKPath` members** — New members added to `SKPath` for expanded path construction. - -## Bug Fixes +# Version 1.53.1.2 -- **Windows Store App certification failure** — Resolved an issue that caused SkiaSharp to violate Windows Store App certification requirements. ([#129](https://github.com/mono/SkiaSharp/issues/129)) -- **C/C# interop fixes** — Several fixes to the C/C# interop layer for improved stability. +> **Servicing release** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.1.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.53.1.2) -## Platform Support +## Highlights -| Platform | What's New | -|----------|-----------| -| 🪟 Windows | Fixed Windows Store App certification compliance | +A servicing release with no tracked code changes over the previous version. Update to pick up the latest packaged binaries. ## Links diff --git a/documentation/docfx/releases/1.53.1.md b/documentation/docfx/releases/1.53.1.md index 29d04132002..f0a9132f99a 100644 --- a/documentation/docfx/releases/1.53.1.md +++ b/documentation/docfx/releases/1.53.1.md @@ -1,34 +1,29 @@ -# Version 1.53.1 - -> **Strong naming and color table support** · Released August 16, 2016 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.53.1) - -## Highlights - -This release introduces strong name signing for SkiaSharp.dll and adds `SKColorTable` support to `SKBitmap` and `SKCodec` for indexed-color image workflows. Also includes bug fixes, expanded documentation, and a new WPF sample. + -- **SkiaSharp.dll is now a strong name assembly** — This may require binding redirects or recompilation for projects that reference SkiaSharp without strong naming. + -## New Features - -### API Surface - -- **`SKColorTable`** — New type for working with indexed color tables. -- **`SKBitmap` color table support** — `SKBitmap` now supports `SKColorTable` for indexed-color bitmaps. -- **`SKCodec` color table support** — `SKCodec` now supports `SKColorTable` for decoding indexed-color images. - -### Samples +# Version 1.53.1 -- **WPF sample** — Added a new sample demonstrating SkiaSharp usage in WPF applications. +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.53.1) -## Bug Fixes +## Highlights -- Fixed several issues. [Closed issues](https://github.com/mono/SkiaSharp/issues?utf8=%E2%9C%93&q=is%3Aissue%20closed%3A2016-07-28..2016-08-16) from this period. +A servicing release on the 1.53 line. There are no functional code changes over 1.53.0 — this build refreshes the published packages only. ## Links +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.53.0...v1.53.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.53.1) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.53.1) diff --git a/documentation/docfx/releases/1.53.2.md b/documentation/docfx/releases/1.53.2.md index e679e32ae41..89b362d7d5d 100644 --- a/documentation/docfx/releases/1.53.2.md +++ b/documentation/docfx/releases/1.53.2.md @@ -1,21 +1,34 @@ -# Version 1.53.2 + + + + +# Version 1.53.2 -A pre-release introducing two major capabilities: hardware-accelerated GPU rendering via OpenGL and SVG output via `SKSvgCanvas`. This release includes all changes from v1.53.1.2 and adds the ability to assemble a `GRGlInterface` from any GL library. Both GPU and SVG features were in beta and subject to API changes. +> **GPU rendering and SVG canvas support** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.2) -## Breaking Changes +## Highlights -*None in this release.* +This release introduces two major capabilities: hardware-accelerated GPU rendering via OpenGL, and SVG output through the new `SKSvgCanvas`. A `GRGlInterface` can now be assembled from any GL library via a function-pointer lookup callback. ## New Features ### GPU & Rendering -- **OpenGL support** — Hardware-accelerated rendering via OpenGL on all platforms except UWP (which was planned for DirectX/ANGLE support). ([#138](https://github.com/mono/SkiaSharp/issues/138)) -- **`GRGlInterface.AssembleGlInterface` / `AssembleGlesInterface`** — Assemble a GL interface from any GL library by providing a function pointer lookup callback: +- **OpenGL support** — Hardware-accelerated rendering via OpenGL on all platforms except UWP. +- **`GRGlInterface.AssembleGlInterface` / `AssembleGlesInterface`** — Assemble a GL interface from any GL library by providing a function-pointer lookup callback: ```csharp var openGLES = ObjCRuntime.Dlfcn.dlopen( @@ -25,9 +38,9 @@ A pre-release introducing two major capabilities: hardware-accelerated GPU rende }); ``` -### SVG +### API Surface -- **`SKSvgCanvas`** — Create a canvas that writes SVG output to an XML stream. Partial SVG feature coverage — not all Skia drawing operations are supported in SVG output. ([#107](https://github.com/mono/SkiaSharp/issues/107)) +- **`SKSvgCanvas`** — Create a canvas that writes SVG output to an XML stream. Coverage is partial — not all Skia drawing operations are supported in SVG output: ```csharp using (var writer = new SKXmlStreamWriter(skStream)) @@ -37,33 +50,17 @@ A pre-release introducing two major capabilities: hardware-accelerated GPU rende } ``` -## Links - -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.53.1.2...v1.53.2) -- [NuGet (GPU Beta 2)](https://www.nuget.org/packages/SkiaSharp/1.53.2-gpu2) -- [NuGet (SVG Beta 1)](https://www.nuget.org/packages/SkiaSharp/1.53.2-svg1) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.53.2) - ---- +## Platform Support -## GPU Beta 2 (August 24, 2016) +| Platform | What's New | +|----------|-----------| +| 🍎 Apple | OpenGL GPU rendering | +| 🪟 Windows | OpenGL GPU rendering | +| 🐧 Linux | OpenGL GPU rendering | +| 🎨 Core API | `SKSvgCanvas`, `GRGlInterface` assembly | -Added `GRGlInterface.AssembleGlInterface` and `AssembleGlesInterface` for assembling a GL interface from any GL library. - -[NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.2-gpu2) - ---- - -## SVG Beta 1 (August 25, 2016) - -Added `SKSvgCanvas` for creating a canvas that writes SVG output to an XML stream. - -[NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.2-svg1) - ---- - -## GPU Beta 1 (August 19, 2016) - -Initial OpenGL support across all platforms (except UWP). +## Links -[NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.2-gpu1) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.53.1...v1.53.2) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.53.2) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.53.2) diff --git a/documentation/docfx/releases/1.54.0.md b/documentation/docfx/releases/1.54.0.md index ec60b77970f..bcff84dde83 100644 --- a/documentation/docfx/releases/1.54.0.md +++ b/documentation/docfx/releases/1.54.0.md @@ -1,37 +1,33 @@ -# Version 1.54.0 - -> **GPU backend and Skia m54 update** · Released September 5, 2016 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.54.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.54.0) - -## Highlights - -This release updates to Google's chrome/m54 Skia milestone and introduces GPU-accelerated rendering via `SKSurface` with OpenGL support across all platforms (except UWP, which will use ANGLE). It also adds new struct members, a gamma color filter, image lattice (9-patch) drawing, and additional `SKPath` members. + -- **Structs now use properties instead of fields** — `SKRect`, `SKPoint`, `SKColor`, and other basic structs have moved from field-based access to get/set properties for better API consistency. + -## New Features - -### Engine - -- **Skia m54 update** — Updated to the latest from Google's [chrome/m54](https://github.com/google/skia/tree/chrome/m54) release. - -### GPU & Rendering +# Version 1.54.0 -- **GPU backend for `SKSurface`** — Hardware-accelerated rendering via OpenGL on all platforms. On UWP, DirectX support via ANGLE is planned. A `GlInterface` can also be assembled from any OpenGL-like API using `AssembleGlInterface` or `AssembleGlesInterface`. +> **Released September 5, 2016** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.54.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.54.0) -### API Surface +## Highlights -- **New struct members** — Multiple new members for `SKRect`, `SKPoint`, `SKColor`, and other basic structs. -- **Gamma `SKColorFilter`** — New color filter type for gamma correction. -- **Image lattice drawing** — Support for drawing image lattices, such as 9-patch images. -- **Additional `SKPath` members** — New methods and properties for path manipulation. +Updates SkiaSharp to Google's chrome/m54 Skia milestone and introduces GPU-accelerated rendering through `SKSurface` with OpenGL support across platforms. -## Bug Fixes +## Platform Support -*None noted in this release.* +| Platform | What's New | +|----------|-----------| +| 🎨 Core API | Skia chrome/m54 engine; GPU-accelerated `SKSurface` rendering | ## Links diff --git a/documentation/docfx/releases/1.54.1.1.md b/documentation/docfx/releases/1.54.1.1.md new file mode 100644 index 00000000000..8cee69a5a79 --- /dev/null +++ b/documentation/docfx/releases/1.54.1.1.md @@ -0,0 +1,30 @@ + + + + +# Version 1.54.1.1 + +> **Servicing release** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.54.1.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.54.1.1) + +## Highlights + +A servicing release with no tracked code changes over the previous version. Update to pick up the latest packaged binaries. + +## Links + +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.54.1...v1.54.1.1) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.54.1.1) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.54.1.1) diff --git a/documentation/docfx/releases/1.54.1.md b/documentation/docfx/releases/1.54.1.md index 1316fc38300..9646babc9ce 100644 --- a/documentation/docfx/releases/1.54.1.md +++ b/documentation/docfx/releases/1.54.1.md @@ -1,39 +1,27 @@ -# Version 1.54.1 - -> **SkiaSharp.Views launch and native binary size reduction** · Released October 12, 2016 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.54.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.54.1) - -## Highlights - -This release introduces the new **SkiaSharp.Views** and **SkiaSharp.Views.Forms** packages (preview), providing pre-built UI views for every supported platform with both CPU and GPU backends. Native binary sizes on Windows/UWP were reduced from over 15 MB to under 5 MB per architecture. `SKMatrix` moves to a property-based API and `GRGlInterface` gains ANGLE support. - -## Breaking Changes + -## New Features + -### API Surface - -- **`SKMatrix` flat array support** — `SKMatrix` can now be read from and written to as a flat array. -- **`GRGlInterface` ANGLE support** — Added support for creating an ANGLE interface and improved GL interface assembly. - -### Platform - -- **SkiaSharp.Views** _(preview)_ — A new package of pre-built UI views, panels, and surfaces for drawing on every supported platform (iOS, tvOS, Android, macOS, WPF, Classic Desktop, UWP) with both CPU and GPU (OpenGL/ANGLE) backends. -- **SkiaSharp.Views.Forms** _(preview)_ — Xamarin.Forms views for fully cross-platform drawing code with CPU and GPU backends, currently available for iOS, Android, and UWP. -- **Class library native file handling** — Class library projects that depend on SkiaSharp no longer copy native files, allowing `Any CPU` builds. Apps still get the native files automatically. Use `True` to opt back in. - -### Build & Size +# Version 1.54.1 -- **Massive Windows/UWP native binary size reduction** — Reduced from >15 MB to <5 MB per platform architecture. ❤️ @xoofx +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.54.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.54.1) -## Community Contributors ❤️ +## Highlights -| Contributor | What They Did | -|-------------|--------------| -| [@xoofx](https://github.com/xoofx) | Identified the native binary size issue on Windows/UWP | +A packaging and servicing update over 1.54.0 with no user-facing code changes. ## Links diff --git a/documentation/docfx/releases/1.55.0.md b/documentation/docfx/releases/1.55.0.md index c28b1510de1..73108bf595b 100644 --- a/documentation/docfx/releases/1.55.0.md +++ b/documentation/docfx/releases/1.55.0.md @@ -1,56 +1,29 @@ -# Version 1.55.0 - -> **Skia m55, SVG preview, and comprehensive documentation** · Released November 10, 2016 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.55.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.55.0) - -## Highlights - -A major feature release that updates to Google's chrome/m55 Skia milestone, introduces the new **SkiaSharp.Svg** package for lightweight SVG parsing, and ships thousands of API documentation entries across the entire SkiaSharp surface. New APIs include `SKColor.Parse`, `SKPathMeasure`, `SKRegion`-based clipping, and `SKPaint.GetFillPath`. SkiaSharp.Views gains `CanvasSize` for pixel density calculations. - -## Breaking Changes - -### Upstream Skia changes + -### Engine + -- **Skia m55 update** — Updated to Google's chrome/m55 release with all upstream improvements. - -### API Surface - -- **HTML color parsing** — `SKColor.Parse` and `SKColor.TryParse` for parsing HTML hex color strings. -- **Region-based clipping** — Added `SKRegion` clipping options for `SKCanvas`. -- **`SKPaint.GetFillPath()`** — Creates a new path representing the fill outline using the paint's fill properties. -- **`SKPathMeasure`** — New type for measuring path length and extracting path segments. -- **`SKPath` additions** — Numerous new overloads and members for path manipulation. -- **`SKTypeface` property getters** — Added getters for `SKTypeface` properties. -- **Struct expansions** — Additional members and overloads for `SKRect*`, `SKSize*`, `SKPoint*`, and `SKMatrix`. -- **Improved image lattice drawing** — Better support for 9-patch style image rendering. -- **Improved argument validation** — Better exceptions for invalid or incorrect arguments. - -### Platform - -- **SkiaSharp.Svg** _(preview)_ — A new lightweight, pure-managed SVG parser (`SKSvg`) supporting features on par with NGraphics. Lives in a [single file](https://github.com/mono/SkiaSharp/blob/v1.55.0/source/SkiaSharp.Svg/SkiaSharp.Svg/SKSvg.cs). ❤️ @gentledepp also contributed a more full-featured [SVG library](https://github.com/gentledepp/SVG/tree/skiasharp) with SkiaSharp support. -- **`CanvasSize` property** — Views now expose `CanvasSize` for calculating scaling and pixel density: `var scaling = view.CanvasSize.Width / view.Width;` -- **Views namespace update** — Namespace changed to `SkiaSharp.Views.`. -- **Improved UWP internals** — Better `GRGlInterface` internals for UWP. - -### Documentation +# Version 1.55.0 -- **Comprehensive API documentation** — Added thousands of XML docs across the entire SkiaSharp API. +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.55.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.55.0) -## Community Contributors ❤️ +## Highlights -| Contributor | What They Did | -|-------------|--------------| -| [@gentledepp](https://github.com/gentledepp) | Added SkiaSharp support to the SVG library | +A small maintenance release. No tracked pull requests landed between `1.54.1.1` and this version; the build was published to refresh the packaged binaries. ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.54.1...v1.55.0) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.54.1.1...v1.55.0) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.55.0) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.55.0) diff --git a/documentation/docfx/releases/1.55.1.md b/documentation/docfx/releases/1.55.1.md index 487023d3b8f..1ac424eaa89 100644 --- a/documentation/docfx/releases/1.55.1.md +++ b/documentation/docfx/releases/1.55.1.md @@ -1,47 +1,27 @@ -# Version 1.55.1 - -> **Bitmap, codec, and platform fixes** · Released November 21, 2016 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.55.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.55.1) - -## Highlights - -A patch release with improvements to `SKBitmap` (format-specific decoding, pixel replacement, better `Index8` support), incremental decoding for `SKCodec`, `QuickReject` for `SKCanvas`, and a fix for the Windows Mobile emulator and Xbox One. Views now support ignoring device scaling, and SVG gains custom canvas sizing. - -## Breaking Changes - -*None in this release.* + -- **`SKBitmap` decoding improvements** — Bitmaps can now be decoded as a specific format (size/scale, color type) and pixels can be replaced in a variety of ways. -- **`SKBitmap` `Index8` color type support** — Better support for the `Index8` color type. ❤️ @Tylerflick -- **`SKCanvas.QuickReject`** — Perform a fast bounds check before drawing to avoid unnecessary work. -- **`SKCodec` incremental decoding** — Codecs now support incremental decoding for progressive image loading. -- **`GRBackendRenderTargetDesc` convenience members** — Added `Size` and `Rect` properties for easier use. -- **`SKColorTable` indexer** — Access colors directly via an indexer. -- **`SKData` as stream** — `SKData` can now be used as a stream, which manages the lifetime of the underlying data. + -### Platform - -- **Views ignore device scaling option** — All raster-based views (SkiaSharp.Views and SkiaSharp.Views.Forms) now have an option to ignore device scaling. -- **SVG custom canvas sizing** — SVG files can be loaded onto a canvas of a pre-defined size, ignoring the drawing size in the SVG file or handling files without a size set. - -## Bug Fixes - -- Fixed SkiaSharp for Windows Mobile emulator and Xbox One. - -## Platform Support +# Version 1.55.1 -| Platform | What's New | -|----------|-----------| -| 🪟 Windows | Fixed Windows Mobile emulator and Xbox One support | +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.55.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.55.1) -## Community Contributors ❤️ +## Highlights -| Contributor | What They Did | -|-------------|--------------| -| [@Tylerflick](https://github.com/Tylerflick) | Improved `Index8` color type support in `SKBitmap` | +A servicing release published to keep the SkiaSharp package line current. There are no source changes since 1.55.0. ## Links diff --git a/documentation/docfx/releases/1.56.0.md b/documentation/docfx/releases/1.56.0.md index 6023ca59c16..c1894468454 100644 --- a/documentation/docfx/releases/1.56.0.md +++ b/documentation/docfx/releases/1.56.0.md @@ -1,50 +1,27 @@ -# Version 1.56.0 - -> **GIF support, bitmap resize, and OpenTK removal** · Released January 16, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.56.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.56.0) - -## Highlights - -This release adds multi-frame image support (animated GIFs) via `SKCodec`, bitmap resizing with `SKBitmap.Resize`, direct pixel manipulation with `InstallPixels` and `PeekPixels`, and new `SKPixmap` bindings. The GL views drop their OpenTK dependency across all Apple and Android platforms, and the UWP `SKXamlCanvas` gets a non-blocking `Invalidate()`. - -## Breaking Changes - -### Deprecations + -### Images + -- **Bitmap resizing** — New `SKBitmap.Resize` for resizing bitmaps. -- **Direct pixel manipulation** — `SKBitmap.InstallPixels` and `SKBitmap.PeekPixels` for updating pixels directly. -- **`SKPixmap` bindings** — New bindings for the `SKPixmap` type. -- **Multi-frame image support** — `SKCodec` now supports multi-frame images such as animated GIFs. -- **Encoding information** — `SKCodec` can now read the encoding information of a bitmap file. - -### Platform - -- **Removed OpenTK dependency** — GL views on Android, iOS, tvOS, and macOS no longer depend on OpenTK. -- **iOS transparent views** — `SKCanvasView` and `SKGLViewRenderer` in Xamarin.Forms on iOS are now transparent by default. -- **UWP non-blocking invalidation** — `SKXamlCanvas` for UWP no longer blocks on `Invalidate()`. - -### GPU & Rendering - -- **SVG transparency and opacity** — Correctly handling SVG transparency and opacity in the SkiaSharp.Svg parser. - -## Bug Fixes +# Version 1.56.0 -- Fixed Android GL views to correctly clear the stencil buffer. -- Added a stencil buffer for macOS GL views. +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.56.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.56.0) -## Platform Support +## Highlights -| Platform | What's New | -|----------|-----------| -| 🍎 Apple | Removed OpenTK dependency; macOS gains stencil buffer for GL views; iOS views default to transparent | -| 🪟 Windows | UWP `SKXamlCanvas` no longer blocks on `Invalidate()` | -| 🤖 Android | Removed OpenTK dependency; fixed GL stencil buffer clearing | +A routine maintenance release that aligns versioning with the wider SkiaSharp build. There are no user-facing code changes in this version. ## Links diff --git a/documentation/docfx/releases/1.56.1.md b/documentation/docfx/releases/1.56.1.md index 21acf955cf0..2971b15f1f3 100644 --- a/documentation/docfx/releases/1.56.1.md +++ b/documentation/docfx/releases/1.56.1.md @@ -1,67 +1,30 @@ -# Version 1.56.1 - -> **.NET Standard, .NET Core, and major API expansion** · Released February 8, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.56.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.56.1) - -## Highlights - -A landmark release that adds .NET Standard 1.3 and .NET Core support, bringing SkiaSharp to modern .NET platforms. Four new types arrive — `SKFontManager`, `SKSvgCanvas`, `SKMask`, and `SK3dView` — along with extensive additions to `SKPath`, `SKBitmap`, and `SKCodec`. Unicode, UTF-32, and emoji support is significantly improved. The Xamarin.Forms view renderers are now public and extensible, and the SVG viewbox handling is fixed. - -## Breaking Changes - -### Renames - -- **`SKStrokeJoin.Mitter` → `SKStrokeJoin.Miter`** — Corrected the typo in the enum value name. ([#227](https://github.com/mono/SkiaSharp/issues/227)) + -- **`SKFontManager`** — Find typefaces for a specific character, enabling better font fallback. ([#232](https://github.com/mono/SkiaSharp/issues/232)) -- **`SKSvgCanvas`** _(preview)_ — Create SVG files programmatically via a canvas API. ([#107](https://github.com/mono/SkiaSharp/issues/107)) -- **`SKMask`** — New type for working with mask data, plus `SKBitmap` can now be created from an `SKMask`. ([#220](https://github.com/mono/SkiaSharp/issues/220)) -- **`SK3dView`** — Create 3D `SKMatrix` transformations. ([#214](https://github.com/mono/SkiaSharp/issues/214)) -- **`SKPath` expansions** — Many new members including `AddPoly` and `SegmentMasks`. -- **`SKBitmap` expansions** — Many new members including `ExtractAlpha` and `ExtractSubset`. -- **Unicode and emoji support** — Improved support for Unicode, UTF-32, and emoji rendering. ([#232](https://github.com/mono/SkiaSharp/issues/232)) -- **`StringUtilities`** — New string helper methods for text processing. -- **High quality `SKMaskFilter` blurring** — Support for high quality blurring effects. -- **`SKCodec` scanline decoding** — Codecs now support scanline-by-scanline decoding. -- **PDF metadata and annotations** — `SKDocument` now supports PDF metadata and link annotations. -- **`SKImageInfo.PlatformColorType` fix** — Now correctly obtains the platform color type. + -### Platform - -- **.NET Standard 1.3 support** — SkiaSharp now targets .NET Standard 1.3 project types. ([#111](https://github.com/mono/SkiaSharp/issues/111)) -- **.NET Core support** — Native libraries for Windows (win7, win10) and macOS. ([#111](https://github.com/mono/SkiaSharp/issues/111)) -- **Reduced native library sizes** — Native binaries reduced to ~5 MB per platform architecture. ([#174](https://github.com/mono/SkiaSharp/issues/174)) -- **Class library native copy fix** — .NET 4.5 class library builds (including tests) now correctly copy the native assembly to output. ([#44](https://github.com/mono/SkiaSharp/issues/44), [#190](https://github.com/mono/SkiaSharp/issues/190)) -- **Public Xamarin.Forms renderers** — `SKCanvasViewRenderer` and `SKGLViewRenderer` are now public and can be extended by apps and libraries. ([#218](https://github.com/mono/SkiaSharp/issues/218)) -- **SVG viewbox fix** — Fixed handling of the SVG viewbox in SkiaSharp.Svg. ([#230](https://github.com/mono/SkiaSharp/issues/230)) - -## Bug Fixes +# Version 1.56.1 -- Fixed `SKImageInfo.PlatformColorType` to correctly return the platform-specific color type. -- Fixed SVG viewbox handling. ([#230](https://github.com/mono/SkiaSharp/issues/230)) +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.56.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.56.1) -## Platform Support +## Highlights -| Platform | What's New | -|----------|-----------| -| 📦 General | .NET Standard 1.3 and .NET Core support; ~5 MB native libraries | -| 🪟 Windows | .NET Core support (win7, win10) | -| 🍎 Apple | .NET Core support (macOS) | -| 🐧 Linux | Partial .NET Core Linux work in progress | +A servicing release with no tracked source changes since 1.56.0, published to refresh the packages. ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.56.0...v1.56.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.56.1) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.56.1) - ---- - -## Beta (February 2, 2017) - -Initial beta with .NET Standard 1.3 and .NET Core support, new types (`SKSvgCanvas`, `SKMask`, `SK3dView`), reduced native library sizes, and various API additions. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.56.0...v1.56.1-beta) diff --git a/documentation/docfx/releases/1.56.2.md b/documentation/docfx/releases/1.56.2.md index b80d207e378..00bd702a489 100644 --- a/documentation/docfx/releases/1.56.2.md +++ b/documentation/docfx/releases/1.56.2.md @@ -1,57 +1,36 @@ -# Version 1.56.2 - -> **3D transforms, image API expansion, and cross-platform image conversion** · Released March 9, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.56.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.56.2) - -## Highlights - -This release adds `SKMatrix44` for 3D transformations, `SKFrontBufferedStream` for decoding non-seekable streams, `SKPMColor` for premultiplied color handling, and extensive new members on `SKImage` and `SKCanvas`. SkiaSharp.Views gains comprehensive image conversion extensions between SkiaSharp types and native platform image types (UIImage, Bitmap, WriteableBitmap, CGImage, NSImage), and UWP `SKXamlCanvas` gets major performance improvements. Many types that previously only accepted `SKStream` now have .NET `Stream` overloads. - -## Breaking Changes + -## New Features + -### API Surface - -- **`SKMatrix44`** — New type for representing 3D matrix transformations. -- **`SKFrontBufferedStream`** — Wraps non-seekable streams for use with `SKCodec` and `SKBitmap` decoding. -- **`SKPMColor`** — New type for premultiplied colors, with methods for premultiplying and unpremultiplying `SKColor` values. -- **`SKImage` expansion** — Many new members for constructing pixel-backed and texture-backed images, plus `ReadPixels`, `PeekPixels`, `ScalePixels`, and `ApplyImageFilter`. -- **`SKData` creation overloads** — Several new overloads for creating `SKData` instances either as a copy or a wrapper. -- **`GRContext.ResetContext`** — Reset the internal GPU context state. -- **`SKCanvas.DrawVertices`** — Draw vertex-based geometry. -- **`.NET `Stream` overloads** — Many types that accepted `SKStream` now also accept .NET `Stream` types. -- **Nested enum refactoring** — Moved more nested enumerations out to the root namespace. - -### Platform - -- **Cross-platform image conversion extensions** — New extension methods in SkiaSharp.Views for converting between SkiaSharp types (`SKBitmap`, `SKImage`, `SKPixmap`, `SKPicture`) and native image types (UWP/WPF `WriteableBitmap`, Android/Desktop `Bitmap`, iOS/tvOS `UIImage`, Apple `CGImage`/`CIImage`, macOS `NSImage`). -- **`SKData`/`NSData` conversion** — New extension methods for converting between `SKData` and Apple `NSData`. -- **SkiaSharp `ImageSource` types** — New Xamarin.Forms `ImageSource` types for directly drawing SkiaSharp images. -- **UWP `SKXamlCanvas` performance** — Major performance improvements to the UWP canvas. -- **NuGet native library handling** — Installing SkiaSharp into unit test projects or class libraries now correctly copies native libraries to the bin directory. - -### SVG +# Version 1.56.2 -- **Improved viewbox handling** — Continued improvements to SVG viewbox handling in SkiaSharp.Svg. +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.56.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.56.2) -## Bug Fixes +## Highlights -- Fixed a bug where Skia returned the same native instance but SkiaSharp created a new wrapper, causing premature disposal of the shared instance. +A servicing release that republishes the `1.56.1` packages with no source code changes. ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | Image conversion extensions for `UIImage`, `CGImage`, `CIImage`, `NSImage`; `SKData`↔`NSData` conversion | -| 🪟 Windows | Image conversion for `WriteableBitmap`; major UWP `SKXamlCanvas` performance improvements | -| 🤖 Android | Image conversion extensions for `Bitmap` | +| 📦 General | Packaging/servicing only — no code changes | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.56.1...v1.56.2) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.56.2) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.56.2) +- [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.56.2) diff --git a/documentation/docfx/releases/1.57.0.md b/documentation/docfx/releases/1.57.0.md index 05907611362..cef9db341c1 100644 --- a/documentation/docfx/releases/1.57.0.md +++ b/documentation/docfx/releases/1.57.0.md @@ -1,58 +1,27 @@ -# Version 1.57.0 - -> **Skia m57 upgrade with new encoding APIs** · Released April 10, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.57.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.57.0) - -## Highlights - -A major release upgrading the native Skia engine from m56 to m57. This brings direct encoding support on `SKBitmap`, `SKPixmap`, and `SKSurface`, XPS document creation on Windows, and deprecates `SK3dView` in favor of `SKMatrix44`. Several breaking changes align the API with upstream Skia removals. - -## Breaking Changes - -### Removed APIs - -- **Emboss and shadow `SKMaskFilter` removed** — These filter types are no longer available in upstream Skia m57. -- **`SKEncodedFormat` and `SKImageEncodeFormat` renamed** — Use `SKEncodedImageFormat` instead. -- **`[Obsolete]` members are now errors** — Previously obsolete members now produce compile-time errors. Update to the recommended replacements. - -### Deprecations + -### Engine + -- **Skia m57 upgrade** — Major update to the latest stable Skia milestone (chrome/m57). - -### API Surface - -- **`SKBitmap.Encode`** — Bitmaps can now be encoded directly without creating an intermediate image. -- **`SKCanvas` draws `SKSurface` directly** — Draw a surface onto a canvas without extracting an image first. -- **`SKData` empty creation** — `SKData` can now be created without existing data (uninitialized). -- **`SKPixmap.Encode` overloads** — Encode pixel data directly from a pixmap. -- **`SKSurface` pixel data access** — New members to access pixel data directly from a surface. - -### Documents - -- **XPS document support** — `SKDocument` can now create XPS documents (Windows-only). Note: there is a [known issue on Windows 10 Mobile](http://stackoverflow.com/questions/43143501/using-ixpsomobjectfactory-on-windows-10-mobile). - -### Extensions (Preview) - -- **`SKGeometry` utilities** — Initial work on geometry helpers including `CreateSectorPath` for pie/donut shapes, `CreatePiePath` for charts, and methods to create regular shape paths. - -## Bug Fixes +# Version 1.57.0 -- Resolved AOT errors on Android. -- `SKCanvasView` and `SKGLView` now correctly resize in Xamarin.Forms in some cases. -- Many other bug fixes and improvements. +> **Servicing release** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.57.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.57.0) -## Platform Support +## Highlights -| Platform | What's New | -|----------|-----------| -| 🪟 Windows | XPS document creation via `SKDocument` | -| 🤖 Android | AOT error fixes | -| 🎨 Core | Skia m57 engine upgrade, new encoding APIs | +A servicing release with no tracked code changes over the previous version. Update to pick up the latest packaged binaries. ## Links diff --git a/documentation/docfx/releases/1.57.1.md b/documentation/docfx/releases/1.57.1.md index abdfc4afb4b..d140ca15eee 100644 --- a/documentation/docfx/releases/1.57.1.md +++ b/documentation/docfx/releases/1.57.1.md @@ -1,53 +1,29 @@ -# Version 1.57.1 - -> **HarfBuzz text shaping & Xamarin.Mac support** · Released May 5, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.57.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.57.1) - -## Highlights - -This release introduces HarfBuzzSharp — initial bindings for the HarfBuzz text shaping engine — along with `SKShaper` and `DrawShapedText` for easy shaped text rendering. Xamarin.Forms gains preview Xamarin.Mac support and reworked renderers, while several text rendering and packaging bugs are fixed. - -## Breaking Changes - -*None in this release.* + -- **HarfBuzzSharp initial bindings** — New preview package exposing HarfBuzz text shaping with bindings for `Blob`, `Buffer`, `Face`, and `Font`. -- **`SKShaper` for text shaping** — New type that shapes a string and returns codepoints with their positions. -- **`DrawShapedText` extension method** — Extension method on `SKCanvas` for drawing shaped text easily. -- **`ToHarfBuzzBlob` extension** — Extension method on `SKStreamAsset` to convert seekable streams to HarfBuzz blobs. + -### API Surface - -- **`SKTypeface` font data stream** — `SKTypeface` now supports opening a stream to the underlying font data. - -### Platform - -- **Xamarin.Mac support (preview)** — Initial Xamarin.Mac support in SkiaSharp.Views.Forms. -- **Reworked Xamarin.Forms renderers** — Renderers have been reworked making extension and customization far easier. -- **Designer detection improvements** — SkiaSharp.Views now detects the designer correctly when native assets aren't available. - -## Bug Fixes +# Version 1.57.1 -- Fixed non-antialiased text on a scaled canvas on Windows. -- Fixed an issue with publishing a .NET Core app to Windows 10. -- The Xamarin.Forms Previewer no longer crashes when adding SkiaSharp views. -- Fixed renderers adding multiple native views when in a list view item. -- NuGet now requires NuGet v3.5+ for UWP apps. -- Improvements for Xamarin Workbooks and macOS packaging. +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.57.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.57.1) -## Platform Support +## Highlights -| Platform | What's New | -|----------|-----------| -| 🪟 Windows | Text rendering fix on scaled canvas; .NET Core publishing fix | -| 🍎 Apple | Preview Xamarin.Mac support; macOS packaging improvements | -| 🎨 Core | HarfBuzz text shaping; `SKTypeface` font data stream | +A servicing release on the 1.57 line. There are no functional code changes over 1.57.0 — this build refreshes the published packages only. ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.57.0...v1.57.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.57.1) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.57.1) diff --git a/documentation/docfx/releases/1.58.0.md b/documentation/docfx/releases/1.58.0.md index d4b83d38502..cd36177bafb 100644 --- a/documentation/docfx/releases/1.58.0.md +++ b/documentation/docfx/releases/1.58.0.md @@ -1,20 +1,32 @@ + + + + # Version 1.58.0 > **Skia m58 upgrade with color space support** · Released May 19, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.58.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.58.0) ## Highlights -This release upgrades the native Skia engine from m57 to m58, bringing new `SKColorSpace` bindings and a high-contrast color filter. Images are now always decoded as premultiplied alpha. A few color filter APIs have been removed to match upstream Skia changes, and Linux support has been improved. +This release upgrades the native Skia engine from m57 to m58, bringing new `SKColorSpace` bindings and a high-contrast color filter. Images are now always decoded as premultiplied alpha, and a few color filter APIs have been removed to match upstream Skia. -## Breaking Changes - -### Removed APIs +## ⚠️ Breaking Changes - **`SKColorFilter.CreateColorCube` removed** — No longer available in upstream Skia m58. - **`SKColorFilter.CreateGamma` removed** — No longer available in upstream Skia m58. - -### Behavior Changes - - **Images decoded as premultiplied alpha** — Images are now always decoded as premultiplied alpha, matching upstream Skia behavior. ## New Features @@ -38,8 +50,8 @@ This release upgrades the native Skia engine from m57 to m58, bringing new `SKCo | Platform | What's New | |----------|-----------| -| 🐧 Linux | Improved support for Linux consumers | -| 🎨 Core | Skia m58 engine upgrade, `SKColorSpace`, high-contrast filter | +| 🎨 Core API | `SKColorSpace`, high-contrast color filter | +| 🐧 Linux | Consumer improvements | ## Links diff --git a/documentation/docfx/releases/1.58.1.1.md b/documentation/docfx/releases/1.58.1.1.md index a57a5b4b1b3..0e026e2708f 100644 --- a/documentation/docfx/releases/1.58.1.1.md +++ b/documentation/docfx/releases/1.58.1.1.md @@ -1,14 +1,27 @@ -# Version 1.58.1.1 + + + -A targeted hotfix release for [v1.58.1](https://github.com/mono/SkiaSharp/releases/tag/v1.58.1) that resolves an `ObjectDisposedException` in SkiaSharp.Views. Only the SkiaSharp.Views package is updated in this release. +# Version 1.58.1.1 + +> **Released September 12, 2017** · [NuGet](https://www.nuget.org/packages/SkiaSharp.Views/1.58.1.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.58.1.1) -## Breaking Changes +## Highlights -*None in this release.* +A targeted hotfix for [v1.58.1](https://github.com/mono/SkiaSharp/releases/tag/v1.58.1) that resolves an `ObjectDisposedException` in SkiaSharp.Views. Only the SkiaSharp.Views package is updated in this release. ## Bug Fixes diff --git a/documentation/docfx/releases/1.58.1.md b/documentation/docfx/releases/1.58.1.md index 83d571ce651..de06b5490ef 100644 --- a/documentation/docfx/releases/1.58.1.md +++ b/documentation/docfx/releases/1.58.1.md @@ -1,46 +1,27 @@ -# Version 1.58.1 - -> **Touch events & bug fixes** · Released June 30, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.58.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.58.1) - -## Highlights - -This release adds touch event support to all Xamarin.Forms views and .NET Standard 1.3 support. Several bugs are fixed including color rendering issues on some devices, an incorrect `GRContextOptions` struct, and `SKRegion.SetPath` always producing empty regions. SkiaSharp.Svg and SkiaSharp.Extended have moved to their own repository. - -## Breaking Changes - -*None in this release.* + -- **Touch events for Xamarin.Forms views** — All Xamarin.Forms views now support touch events via `EnableTouchEvents` and the `Touch` event. Disabled by default due to an iOS Xamarin.Forms bug ([PR 990](https://github.com/xamarin/Xamarin.Forms/pull/990), [bug 57114](https://bugzilla.xamarin.com/show_bug.cgi?id=57114)). -- **.NET Standard 1.3 support** — SkiaSharp.Views.Forms now targets .NET Standard 1.3. -- **tvOS minimum lowered to 9.0** — tvOS now targets 9.0 instead of 10.2. + -### API Surface - -- **`SKRectI.Ceiling` and `SKRectI.Floor` overloads** — New overloads to inflate/deflate to integral coordinates. ([#318](https://github.com/mono/SkiaSharp/issues/318)) - -### Repository - -- **SkiaSharp.Svg & SkiaSharp.Extended moved** — These packages have moved to [mono/SkiaSharp.Extended](https://github.com/mono/SkiaSharp.Extended) and will be updated independently. - -## Bug Fixes +# Version 1.58.1 -- Corrected the `GRContextOptions` struct definition. -- Fixed color rendering issues on some devices. ([#284](https://github.com/mono/SkiaSharp/issues/284)) -- Fixed `SKRegion.SetPath` always creating an empty region. ([#316](https://github.com/mono/SkiaSharp/issues/316)) -- Fixed GC-related issues with Android views. ([#292](https://github.com/mono/SkiaSharp/issues/292)) +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.58.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.58.1) -## Platform Support +## Highlights -| Platform | What's New | -|----------|-----------| -| 🍎 Apple | tvOS minimum lowered to 9.0; touch events in Xamarin.Forms | -| 🤖 Android | GC-related view fix; touch events in Xamarin.Forms | -| 🪟 Windows | Touch events in Xamarin.Forms | -| 🎨 Core | `GRContextOptions` fix, `SKRegion.SetPath` fix, `SKRectI` overloads | +A packaging and servicing update over 1.58.0 with no user-facing code changes. ## Links diff --git a/documentation/docfx/releases/1.59.0.md b/documentation/docfx/releases/1.59.0.md index 8093dd29ec9..4a613b2dde7 100644 --- a/documentation/docfx/releases/1.59.0.md +++ b/documentation/docfx/releases/1.59.0.md @@ -1,32 +1,29 @@ -# Version 1.59.0 - -> **Skia engine update to Chrome m59** · Released July 15, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.59.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.59.0) - -## Highlights - -This release brings a major Skia engine update to the `chrome/m59` branch, including updates to internal structure types to match the new native layout. SkiaSharp.Views received bug fixes, and SkiaSharp.Svg and SkiaSharp.Extended were moved to their own repository for independent release cadences. + -## New Features + -### Engine - -- **Skia updated to chrome/m59** — Major engine update with structural type changes to match the new native Skia layout. - -### Ecosystem +# Version 1.59.0 -- **SkiaSharp.Svg & SkiaSharp.Extended split out** — These packages moved to [mono/SkiaSharp.Extended](https://github.com/mono/SkiaSharp.Extended) for independent versioning and release cycles. -- **HarfBuzzSharp text shaping (preview)** — HarfBuzzSharp 1.4.6 and SkiaSharp.HarfBuzz provide text shaping via the `SKShaper` type, with `DrawShapedText` extension methods on `SKCanvas`. +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.59.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.59.0) -## Bug Fixes +## Highlights -- Fixed issues in SkiaSharp.Views. ([#333](https://github.com/mono/SkiaSharp/issues/333), [#340](https://github.com/mono/SkiaSharp/issues/340)) +A small maintenance release. No tracked pull requests landed between `1.58.1.1` and this version; the build was published to refresh the packaged binaries. ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.58.1...v1.59.0) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.58.1.1...v1.59.0) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.59.0) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.59.0) diff --git a/documentation/docfx/releases/1.59.1.1.md b/documentation/docfx/releases/1.59.1.1.md index e7657bbcd5f..d7cba152d5f 100644 --- a/documentation/docfx/releases/1.59.1.1.md +++ b/documentation/docfx/releases/1.59.1.1.md @@ -1,21 +1,30 @@ -# Version 1.59.1.1 + -A targeted bugfix release for SkiaSharp.Views that resolves an `ObjectDisposedException` that could occur during view rendering. + -## Breaking Changes +# Version 1.59.1.1 -*None in this release.* +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.59.1.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.59.1.1) -## Bug Fixes +## Highlights -- Resolved `ObjectDisposedException` in SkiaSharp.Views. ([#292](https://github.com/mono/SkiaSharp/issues/292)) +A servicing release published to refresh the SkiaSharp package line. There are no source changes since 1.59.1. ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.59.1...v1.59.1.1) -- [NuGet Package](https://www.nuget.org/packages/SkiaSharp.Views/1.59.1.1) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.59.1.1) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.59.1.1) diff --git a/documentation/docfx/releases/1.59.1.md b/documentation/docfx/releases/1.59.1.md index 221bade4ed1..dccc28cd032 100644 --- a/documentation/docfx/releases/1.59.1.md +++ b/documentation/docfx/releases/1.59.1.md @@ -1,19 +1,27 @@ -# Version 1.59.1 + -A quick follow-up to 1.59.0 with fixes and improvements to the native marshalling layer. SkiaSharp.Views also received a reworked internal logic to use the updated structure members from the m59 engine update. + -## Breaking Changes +# Version 1.59.1 -*None in this release.* +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.59.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.59.1) -## Bug Fixes +## Highlights -- Fixes and improvements to the native marshalling layer introduced in 1.59.0. -- Reworked SkiaSharp.Views logic to use the new structure members. ([#333](https://github.com/mono/SkiaSharp/issues/333)) +A routine servicing release. There are no user-facing code changes in this version. ## Links diff --git a/documentation/docfx/releases/1.59.2.md b/documentation/docfx/releases/1.59.2.md index 26f2052bc09..0542aaf79a6 100644 --- a/documentation/docfx/releases/1.59.2.md +++ b/documentation/docfx/releases/1.59.2.md @@ -1,32 +1,37 @@ -# Version 1.59.2 - -> **Unity3D support, stream fixes, and GRContext access** · Released October 26, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.59.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.59.2) + -## Breaking Changes + -*None in this release.* +# Version 1.59.2 -## New Features +> **Memory fixes** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.59.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.59.2) -### API Surface +## Highlights -- **`SKTypeface` from non-seekable streams** — `SKTypeface` can now be constructed from non-seekable streams or `SKData`, improving flexibility when loading fonts from network or resource sources. -- **`GRContext` exposed on GL views** — The current `GRContext` is now accessible on the GL views in both SkiaSharp.Views and SkiaSharp.Views.Forms. ([#358](https://github.com/mono/SkiaSharp/issues/358)) +This patch release fixes memory management issues in `SKManagedStream`. -### Platform +## Bug Fixes -- **Unity3D compatibility** — The managed SkiaSharp.dll now works with Unity3D. -- **PackageReference migration** — Switched from `packages.config` to `` for cleaner project files. +- **`SKManagedStream` memory fixes** — Resolves memory handling issues in the managed stream implementation. ([#386](https://github.com/mono/SkiaSharp/pull/386)) -## Bug Fixes +## Platform Support -- Resolved `ObjectDisposedException` during view rendering. ([#292](https://github.com/mono/SkiaSharp/issues/292)) -- Corrected `SKManagedStream` behavior, fixing bitmap loading over the network. ([#335](https://github.com/mono/SkiaSharp/issues/335)) -- Memory management fixes for `SKManagedStream`. ([#376](https://github.com/mono/SkiaSharp/issues/376), [#83](https://github.com/mono/SkiaSharp/issues/83)) +| Platform | What's New | +|----------|-----------| +| 🎨 Core API | `SKManagedStream` memory fixes | ## Links diff --git a/documentation/docfx/releases/1.59.3.md b/documentation/docfx/releases/1.59.3.md index 3411cafc962..39882e0bdd3 100644 --- a/documentation/docfx/releases/1.59.3.md +++ b/documentation/docfx/releases/1.59.3.md @@ -1,23 +1,36 @@ -# Version 1.59.3 + -This release restores the `SK3dView` type, which has been confirmed as a stable part of the Skia API. It was previously removed as its status was uncertain. + -## Breaking Changes +# Version 1.59.3 -*None in this release.* +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.59.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.59.3) + +## Highlights -## New Features +A servicing release that republishes the `1.59.2` packages with no source code changes. -### API Surface +## Platform Support -- **`SK3dView` re-added** — `SK3dView` has been added back to the API surface after confirmation that it is a stable part of Skia. +| Platform | What's New | +|----------|-----------| +| 📦 General | Packaging/servicing only — no code changes | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.59.2...v1.59.3) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.59.3) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.59.3) +- [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.59.3) diff --git a/documentation/docfx/releases/1.60.0.md b/documentation/docfx/releases/1.60.0.md index 028cca9f8aa..f4159f5a32f 100644 --- a/documentation/docfx/releases/1.60.0.md +++ b/documentation/docfx/releases/1.60.0.md @@ -1,91 +1,30 @@ -# Version 1.60.0 - -> **Skia m60 upgrade with new platform support** · Released February 23, 2018 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.60.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.60.0) - -## Highlights - -SkiaSharp 1.60.0 upgrades to Skia milestone 60, bringing major improvements to GPU-backed rendering and texture-based surfaces. This release also introduces preview support for Apple watchOS and GTK#, and cleans up the API surface by removing previously obsoleted types and members. - -## Breaking Changes - -- Removed many obsolete types and members that were previously marked with `[Obsolete]`. Code referencing these removed APIs will need to migrate to their recommended replacements. -- Removed confusing and incorrect `SKCanvas` overloads that could produce unexpected results. - -## New Features - -### Engine - -- **Skia m60 upgrade** — Updated the underlying Skia engine to milestone 60. - -### GPU & Rendering - -- **Texture-based surface improvements** — Major improvements to texture-backed surface support and older device compatibility. -- **GPU-backed SKImage** — Improved support for creating and working with texture-backed `SKImage` instances. - -### Streams + -- **Color swizzling** — Added support for swizzling color channel order (RGB ↔ BGR). -- **SKPixelSerializer / SKManagedPixelSerializer** — New types for custom image encoding workflows. -- **SKBitmap improvements** — Improved bitmap copying, auto-locking, and decoding from Unicode paths on Windows. + -### Canvas - -- **New overloads** — Added numerous `SKCanvas` overloads to improve usability. -- **9-patch and lattice drawing** — Improved support for 9-patch and image lattice rendering. -- **SKPaint.BreakText fix** — Now properly returns the number of characters and the split text. - -### Documents - -- **XPS close fix** — XPS documents are now correctly closed. -- **Unicode path support** — Documents can now be created with Unicode paths on Windows. - -### Platform — Views - -- **SKGLTextureView** — New Android view for GPU-accelerated texture-based rendering. -- **SKWidget** — New GTK# widget for SkiaSharp rendering *(preview)*. -- **WPF DPI fix** — WPF now creates the backing bitmap with the correct DPI. -- **SKControl constructors** — Additional constructors to control the underlying OpenGL configuration. - -### Platform — Xamarin.Forms - -- **Xamarin.Forms v2.5** — Updated to Xamarin.Forms v2.5. -- **UWP touch events** — Improved touch event handling on UWP. -- **SKGLView on Android** — Switched the backing view to the new texture-based `SKGLTextureView`. - -### Text Shaping *(preview)* - -- **HarfBuzzSharp 1.4.6** — HarfBuzz text shaping engine bindings. -- **SkiaSharp.HarfBuzz 1.60.0** — Adds `SKShaper` for text shaping and `DrawShapedText` extension methods on `SKCanvas`. - -## Bug Fixes +# Version 1.60.0 -- Fixed `SKPaint.BreakText` to properly return character count and split text. -- Fixed XPS documents not being correctly closed. -- Fixed WPF backing bitmap using incorrect DPI. -- Improved memory management across several types. +> **Servicing release** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.60.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.60.0) -## Platform Support +## Highlights -| Platform | What's New | -|----------|-----------| -| 🍎 watchOS | New preview support for Apple watchOS | -| 🤖 Android | New `SKGLTextureView`; `SKGLView` now uses texture-based rendering | -| 🐧 Linux / GTK# | New `SKWidget` for GTK# *(preview)* | -| 🪟 Windows / WPF | DPI fix for backing bitmap; improved UWP touch events | -| 🪟 Windows | Unicode path support for streams, images, and documents | +A servicing release with no tracked code changes over the previous version. Update to pick up the latest packaged binaries. ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.59.3...v1.60.0) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.60.0) -- [SkiaSharp.Views](https://www.nuget.org/packages/SkiaSharp.Views/1.60.0) -- [SkiaSharp.Views.Forms](https://www.nuget.org/packages/SkiaSharp.Views.Forms/1.60.0) -- [HarfBuzzSharp](https://www.nuget.org/packages/HarfBuzzSharp/1.4.6) -- [SkiaSharp.HarfBuzz](https://www.nuget.org/packages/SkiaSharp.HarfBuzz/1.60.0) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.60.0) diff --git a/documentation/docfx/releases/1.60.1.md b/documentation/docfx/releases/1.60.1.md index 7d40dbbac6e..04a3dc11a10 100644 --- a/documentation/docfx/releases/1.60.1.md +++ b/documentation/docfx/releases/1.60.1.md @@ -1,59 +1,35 @@ -# Version 1.60.1 - -> **Tizen support and build system overhaul** · Released May 22, 2018 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.60.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.60.1) - -## Highlights - -This release introduces preview support for Tizen OS across SkiaSharp, Views, and Xamarin.Forms. It also includes a major build system overhaul that moves almost all native code into the mono/skia repository and eliminates the managed tooling requirement for Windows and Linux native builds. - -## Breaking Changes + -### API Additions + -- **SKAutoCoInitialize** — New helper type to assist in initializing COM on supported platforms. -- **GRGlInterface.CreateNativeEvasInterface()** — Creates a GL interface from an Evas GL object for Tizen GPU rendering. -- **ISKCanvasViewController** — Now public, allowing additional platforms to be added more easily. +# Version 1.60.1 -### Build System +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.60.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.60.1) -- **Build system overhaul** — Major restructuring of the build pipeline. -- **Simplified native builds** — Building libSkiaSharp for Windows and Linux no longer requires any managed tooling. -- **Native code consolidation** — Almost all native code has been moved into the [mono/skia](https://github.com/mono/skia) repository. +## Highlights -## Bug Fixes +This servicing release opens up internal types so third-party Xamarin.Forms platform backends can build against SkiaSharp. -- Fixed a bug when copying bitmaps. -- Fixed a bug when opening `SKDocument`. -- Fixed a bug when disposing objects. -- Fixed a bug in Android's `GLTextureView` where the stack trace was lost. -- Fixed a bug in Android's `GLTextureView` where pausing the app would cause a crash. -- Fixed a bug in iOS where color space information was lost. -- Fixed a bug in GTK#'s `SKWidget` where it would try to swizzle too many pixels. +## New Features -## Platform Support +### API Surface -| Platform | What's New | -|----------|-----------| -| 📱 Tizen | New preview support for SkiaSharp, Views, and Forms | -| 🤖 Android | Fixed `GLTextureView` stack trace loss and pause crash | -| 🍎 iOS | Fixed color space information loss | -| 🐧 Linux | Native build no longer requires managed tooling | -| 🪟 Windows | Native build no longer requires managed tooling | -| 🖥️ GTK# | Fixed pixel swizzle bug in `SKWidget` | +- **Public types for third-party Xamarin.Forms platforms** — Exposes several previously internal types so 3rd-party Xamarin.Forms platform backends can integrate with SkiaSharp. ([#522](https://github.com/mono/SkiaSharp/pull/522)) ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.60.0...v1.60.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.60.1) -- [Milestone](https://github.com/mono/SkiaSharp/milestone/26) diff --git a/documentation/docfx/releases/1.60.2.md b/documentation/docfx/releases/1.60.2.md index 20e0e088352..fcb791ca0b9 100644 --- a/documentation/docfx/releases/1.60.2.md +++ b/documentation/docfx/releases/1.60.2.md @@ -1,33 +1,51 @@ + + + + # Version 1.60.2 > **New drawing primitives and platform fixes** · Released June 28, 2018 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.60.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.60.2) ## Highlights -This release introduces `SKNWayCanvas` for drawing to multiple canvases simultaneously and `SKRoundRect` for more complex rounded rectangle support. It also adds flexible encoding overloads to `SKPixmap` and resolves several platform-specific linking and rendering issues. - -## Breaking Changes - -*None in this release.* +This release introduces `SKNWayCanvas` for drawing to multiple canvases simultaneously and `SKRoundRect` for more complex rounded rectangles. It also adds flexible encoding overloads to `SKPixmap` and resolves several platform-specific linking and rendering issues. ## New Features -### Drawing +### API Surface -- **SKNWayCanvas** — Draw to multiple canvases simultaneously, enabling broadcast-style rendering to several targets at once. -- **SKRoundRect** — Draw more complex rounded rectangles with per-corner radius control. +- **`SKNWayCanvas`** — Draw to multiple canvases simultaneously, enabling broadcast-style rendering to several targets at once. +- **`SKRoundRect`** — Draw more complex rounded rectangles with per-corner radius control. +- **`SKPixmap.Encode()` overloads** — Additional `Encode()` overloads for finer control when encoding to PNG, JPEG, and WEBP formats. -### Encoding +## Bug Fixes -- **SKPixmap.Encode() overloads** — Additional `Encode()` overloads on `SKPixmap` for finer control when encoding to PNG, JPEG, and WEBP formats. +- Fixed UWP library being linked to the wrong libraries ([#566](https://github.com/mono/SkiaSharp/issues/566), [#536](https://github.com/mono/SkiaSharp/issues/536)). +- Fixed iOS not being able to AOT compile ([#547](https://github.com/mono/SkiaSharp/issues/547)). +- Fixed slow rendering in the GTK# `SKWidget` ([#534](https://github.com/mono/SkiaSharp/issues/534)). +- Fixed a memory leak in `SKXamlCanvas` on UWP and Xamarin.Forms ([#429](https://github.com/mono/SkiaSharp/issues/429)). +- Upgraded projects to the new SDK-style format; removed shared projects and enabled Android builds on Windows. -## Bug Fixes +## Platform Support -- Fixed UWP library being linked to wrong libraries ([#566](https://github.com/mono/SkiaSharp/issues/566), [#536](https://github.com/mono/SkiaSharp/issues/536)) -- Fixed iOS not being able to AOT compile ([#547](https://github.com/mono/SkiaSharp/issues/547)) -- Fixed slow rendering in GTK# `SKWidget` ([#534](https://github.com/mono/SkiaSharp/issues/534)) -- Fixed memory leak in `SKXamlCanvas` on UWP and Xamarin.Forms ([#429](https://github.com/mono/SkiaSharp/issues/429)) -- Upgraded projects to new SDK-style format; removed shared projects and enabled Android builds on Windows +| Platform | What's New | +|----------|-----------| +| 🍎 Apple | iOS AOT compilation fix | +| 🪟 Windows | UWP linking fix, `SKXamlCanvas` leak fix | +| 🎨 Core API | `SKNWayCanvas`, `SKRoundRect`, `SKPixmap.Encode()` overloads | ## Links diff --git a/documentation/docfx/releases/1.60.3.md b/documentation/docfx/releases/1.60.3.md index c44be15575f..d32f8678338 100644 --- a/documentation/docfx/releases/1.60.3.md +++ b/documentation/docfx/releases/1.60.3.md @@ -1,21 +1,35 @@ -# Version 1.60.3 + + + -A small patch release fixing native asset stripping, UWP canvas rendering, and touch input handling on Android and Tizen. +# Version 1.60.3 + +> **Released August 13, 2018** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.60.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.60.3) -## Breaking Changes +## Highlights -*None in this release.* +A small patch release fixing native asset stripping, UWP canvas rendering, Tizen builds, and touch input handling on Android and Tizen. ## Bug Fixes -- Fixed case where some native assets were not being stripped properly ([#573](https://github.com/mono/SkiaSharp/issues/573), [#584](https://github.com/mono/SkiaSharp/issues/584)) -- Improvements when building Tizen apps ([#598](https://github.com/mono/SkiaSharp/issues/598)) -- **Views:** Fixed issue with UWP `SKXamlCanvas` ([#582](https://github.com/mono/SkiaSharp/issues/582), [#585](https://github.com/mono/SkiaSharp/issues/585)) -- **Forms:** Fixed issue with touch locations on Android and Tizen ([#581](https://github.com/mono/SkiaSharp/issues/581), [#589](https://github.com/mono/SkiaSharp/issues/589)) +- Fixed a case where some native assets were not being stripped properly. ([#573](https://github.com/mono/SkiaSharp/issues/573), [#584](https://github.com/mono/SkiaSharp/issues/584)) +- Improvements when building Tizen apps. ([#598](https://github.com/mono/SkiaSharp/issues/598)) +- **Views:** Fixed an issue with the UWP `SKXamlCanvas`. ([#582](https://github.com/mono/SkiaSharp/issues/582), [#585](https://github.com/mono/SkiaSharp/issues/585)) +- **Forms:** Fixed touch locations on Android and Tizen. ([#581](https://github.com/mono/SkiaSharp/issues/581), [#589](https://github.com/mono/SkiaSharp/issues/589)) ## Links diff --git a/documentation/docfx/releases/1.68.0.md b/documentation/docfx/releases/1.68.0.md index 3d4c1464a13..bcea8195794 100644 --- a/documentation/docfx/releases/1.68.0.md +++ b/documentation/docfx/releases/1.68.0.md @@ -1,88 +1,53 @@ + + + + # Version 1.68.0 -> **Major Skia engine upgrade** · Released December 4, 2018 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.0) +> **Build & packaging release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.0) ## Highlights -This release upgrades SkiaSharp to **Skia milestone 68**, bringing a completely rewritten GPU surface creation pipeline, significant text API improvements, and major file I/O performance gains. The GPU backend changes modernize hardware-accelerated rendering across all platforms, while new `SKTextBlob` support lays the groundwork for advanced text layout. Linux users gain first-class NuGet packaging, and Windows Classic apps no longer require a separate Visual C++ Runtime install. - -## Breaking Changes - -### GPU Surface Creation - -- **`GRBackendRenderTargetDesc` deprecated** — Replaced by `GRBackendRenderTarget`. The new type provides a cleaner, more explicit API for describing render targets. See the [GPU migration guide](changelogs/SkiaSharp/1.68.0/gpu-migration.md) for details. -- **`GRBackendTextureDesc` deprecated** — Replaced by `GRBackendTexture`. Update all GPU texture creation code to use the new type. -- **`SKPaintGLSurfaceEventArgs` updated** — Event args now surface the new GPU types. Existing handlers should migrate to the new properties. - -### Color & Pixel Formats - -- **8-bit indexed color type (`Index8`) removed** — Skia m68 dropped support for indexed color. Convert indexed images to a full-color type (`Rgba8888`, `Bgra8888`, etc.) before use. -- **`SKColorTable` removed** — Color tables are no longer supported. Any code referencing `SKColorTable` must be updated to use direct pixel formats. - -### Surface Properties - -- **`SKSurfaceProps` struct superseded** — Use the new `SKSurfaceProperties` class instead. The class provides the same functionality with a richer API. - -### Views & Event Handling - -- **macOS/iOS/tvOS delegates deprecated** — Use events or override `OnPaintSurface` instead. -- **Android renderer usage deprecated** — Use events or override `OnPaintSurface` instead. +This release statically links the Windows native binaries for more reliable, dependency-free deployment, alongside a substantial overhaul of the Linux and pull-request CI pipelines. ## New Features -### Engine - -- **Skia m68 upgrade** — Brings all upstream Skia improvements, optimizations, and bug fixes from milestone 68. -- **Major file I/O performance improvements** — Decoding, encoding, and processing operations are significantly faster. - -### GPU & Rendering - -- **Rewritten hardware-accelerated surface creation** — The entire GPU pipeline has been modernized with `GRBackendRenderTarget` and `GRBackendTexture`, providing better device compatibility and clearer semantics. See the [GPU migration guide](changelogs/SkiaSharp/1.68.0/gpu-migration.md). -- **UWP GPU view rewritten** — The hardware-accelerated view now supports more devices and includes multiple bug fixes. -- **Pixel scaling** — `SKPixmap`, `SKImage`, and `SKBitmap` all support `ScalePixels` for high-quality image resizing. - -### Text - -- **`SKTextBlob` and `SKTextBlobBuilder`** — First-class text blob support, enabling efficient batched text rendering and laying the foundation for advanced text layout. -- **Expanded `SKPaint` text API** — New methods: `BreakText`, `GetGlyphs`, `CountGlyphs`, `ContainsGlyphs`, `GetGlyphWidths`, `GetTextIntercepts`, `GetPositionedTextIntercepts`, `GetHorizontalTextIntercepts`. -- **Expanded `SKTypeface` text API** — New methods: `GetGlyphs`, `CountGlyphs`. - -### Fonts - -- **`SKFontManager` enhancements** — Load entire font family sets via `SKFontStyleSet` and match characters more precisely. - -### Images & Documents - -- **Easier `SKImage` creation** — New overloads simplify image decoding and creation from various sources. -- **`SKDocumentPdfMetadata`** — New creation options for PDF document metadata (title, author, subject, etc.). - ### Platform -- **Linux NuGet package** — New `SkiaSharp.NativeAssets.Linux` package ships pre-built Ubuntu 16.04 amd64 binaries, with support for most Debian-based distributions. ([#312](https://github.com/mono/SkiaSharp/issues/312)) -- **Static VC++ Runtime on Windows** — The Visual C++ Runtime is now statically linked on Windows Classic, eliminating the need for a separate runtime installer. -- **Android `SKGLView` transparency** — The Xamarin.Forms `SKGLView` on Android is now a transparent view. +- **Statically linked Windows binaries** — The Windows native libraries are now statically linked, removing external runtime dependencies and simplifying deployment. ([#662](https://github.com/mono/SkiaSharp/pull/662)) -### API Surface +### Build & CI -- **New method overloads** — Additional convenience overloads for surfaces, shaders, and effects across the API. -- **Preferred `OnPaintSurface` pattern** — All views now prefer `OnPaintSurface` as the primary override point for drawing. +- **Linux CI overhaul** — Reworked the Linux build pipeline for more reliable native builds. ([#635](https://github.com/mono/SkiaSharp/pull/635)) +- **PR builder and Groovy CI script** — Added a pull-request builder and Groovy-based CI scripting, plus general CI improvements. ([#638](https://github.com/mono/SkiaSharp/pull/638), [#616](https://github.com/mono/SkiaSharp/pull/616), [#615](https://github.com/mono/SkiaSharp/pull/615)) -## Bug Fixes +## Platform Support -- Multiple bug fixes across the core library and platform views. -- UWP hardware-accelerated view stability and device compatibility improvements. +| Platform | What's New | +|----------|-----------| +| 🪟 Windows | Statically linked native binaries | +| 🐧 Linux | Reworked CI build pipeline | +| 🏗️ Build/CI | PR builder, Groovy CI scripting | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.60.3...v1.68.0) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.68.0) -- [Project Board](https://github.com/mono/SkiaSharp/projects/18) -- [Milestone](https://github.com/mono/SkiaSharp/milestone/30) - ---- - -## Preview 28 (November 14, 2018) - -Release candidate build containing all features and fixes that shipped in the stable 1.68.0 release. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.60.3...v1.68.0-preview28) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.68.0) diff --git a/documentation/docfx/releases/1.68.1.1.md b/documentation/docfx/releases/1.68.1.1.md index 44b9fce8fcd..f09ecb3479f 100644 --- a/documentation/docfx/releases/1.68.1.1.md +++ b/documentation/docfx/releases/1.68.1.1.md @@ -1,50 +1,79 @@ + + + + # Version 1.68.1.1 -> **Windows Nano Server support and security fixes** · Released December 19, 2019 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.1.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.1.1) +> **Bug-fix release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.1.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.1.1) ## Highlights -This release brings first-class Windows Nano Server support for .NET Core containers, fixes critical memory buffer overflow bugs in image decoding, and includes community-driven improvements to memory management and matrix operations. +A focused patch release that corrects image decoding, hardens HarfBuzz string handling, and picks up upstream buffer-overflow fixes. Community contributors [@bender2k14](https://github.com/bender2k14) and [@daltonks](https://github.com/daltonks) landed fixes for sample rotation math and weak-reference cleanup. -## Breaking Changes +## New Features -*None in this release.* +### Platform -## New Features +- **buildTransitive `.targets`** — Ships the package `.targets` file in the `buildTransitive` folder so it flows correctly to transitive consumers. ([#1057](https://github.com/mono/SkiaSharp/pull/1057)) +- **Platform ref assemblies** — Ensures the required assemblies are present in the platform reference folders. ([#1044](https://github.com/mono/SkiaSharp/pull/1044)) -### Platform Support +## Security -- **Windows Nano Server** — Added the `SkiaSharp.NativeAssets.NanoServer` package, enabling SkiaSharp to run in standard Windows .NET Core Docker images. ([#676](https://github.com/mono/SkiaSharp/issues/676)) +- **Buffer-overflow fixes** — Cherry-picks upstream fixes for buffer-overflow bugs. ([#1037](https://github.com/mono/SkiaSharp/pull/1037)) ## Bug Fixes -- Fixed memory buffer overflow bugs when decoding some image files -- Fixed memory leak with allocations ❤️ [@daltonks](https://github.com/daltonks) -- Improvements to image decoding with `SKImage` -- Fixed .NET Standard assemblies being referenced instead of platform-specific assemblies in SkiaSharp.Views.Forms -- Fixed string marshaling issue in HarfBuzzSharp +- **Correct image decoding** — Fixes incorrect decoding of certain images. ([#1055](https://github.com/mono/SkiaSharp/pull/1055)) +- **HarfBuzz strings** — Resolves issues with HarfBuzz string handling. ([#1034](https://github.com/mono/SkiaSharp/pull/1034)) +- **Weak-reference cleanup** — ❤️ [@daltonks](https://github.com/daltonks) makes `TryRemove` clean up instance `WeakReference`s correctly. ([#1039](https://github.com/mono/SkiaSharp/pull/1039)) +- **Rotation matrix identity** — ❤️ [@bender2k14](https://github.com/bender2k14) starts the rotation matrix as the identity matrix in the animated sample. ([#1062](https://github.com/mono/SkiaSharp/pull/1062)) +- **Sample cleanup** — ❤️ [@bender2k14](https://github.com/bender2k14) removes an unused `TaskScheduler` argument from `AnimatedSampleBase`. ([#1063](https://github.com/mono/SkiaSharp/pull/1063)) +- **GPU sampling** — Avoids going straight for the maximum sample count. ([#1060](https://github.com/mono/SkiaSharp/pull/1060)) -## Improvements +## Platform Support -- Matrix improvements ❤️ [@bender2k14](https://github.com/bender2k14) +| Platform | What's New | +|----------|-----------| +| 🎨 Core API | Correct image decoding, HarfBuzz string fixes, buffer-overflow hardening | +| 📦 General | `buildTransitive` `.targets`, platform ref assemblies | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@daltonks](https://github.com/daltonks) | Memory leak fix | -| [@bender2k14](https://github.com/bender2k14) | Matrix improvements | +| [@bender2k14](https://github.com/bender2k14) | Fixed the sample rotation matrix and removed an unused `TaskScheduler` argument | +| [@daltonks](https://github.com/daltonks) | Fixed `WeakReference` cleanup in `TryRemove` | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.1...v1.68.1.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.68.1.1) -- [Milestone](https://github.com/mono/SkiaSharp/milestone/32) - ---- - -## Preview Build 9 (December 10, 2019) - -Initial preview of 1.68.1.1 with Nano Server support and memory-related fixes. - -[Full Changelog](https://github.com/mono/SkiaSharp/releases/tag/v1.68.1.1) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.68.1.1) diff --git a/documentation/docfx/releases/1.68.1.md b/documentation/docfx/releases/1.68.1.md index 926def303a4..b20d83f75d8 100644 --- a/documentation/docfx/releases/1.68.1.md +++ b/documentation/docfx/releases/1.68.1.md @@ -1,92 +1,158 @@ + + + + # Version 1.68.1 -> **Memory reliability and .NET Core 3.0 support** · Released November 22, 2019 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.1) +> **Feature & infrastructure release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.1) ## 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` overloads across SkiaSharp and HarfBuzzSharp, and a significant expansion of the -HarfBuzz binding surface. - -## Breaking Changes - -*None in this release.* +A large release that modernizes the type marshalling layer, adds `Span` support across the data and text APIs, and introduces a WPF backend for Xamarin.Forms. HarfBuzz and HarfBuzzSharp received a series of updates and new font-function bindings from [@Gillibald](https://github.com/Gillibald), and the project moved onto a brand-new Azure DevOps pipeline with a custom P/Invoke generator. Community contributions from [@alexandrvslv](https://github.com/alexandrvslv), [@Gillibald](https://github.com/Gillibald), [@c.esneault](https://github.com/c.esneault), [@danien.chee](https://github.com/danien.chee) and [@newky2k](https://github.com/newky2k) shaped this release. ## New Features -### Memory & Interop +### Engine -- **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. +- **HarfBuzz updates** — Rolls HarfBuzz forward through v2.5.2, v2.5.3 and v2.6.1 for improved text shaping. ❤️ [@Gillibald](https://github.com/Gillibald) ([#872](https://github.com/mono/SkiaSharp/pull/872), [#904](https://github.com/mono/SkiaSharp/pull/904), [#929](https://github.com/mono/SkiaSharp/pull/929)) -### New APIs +### GPU & Rendering -- **`SKDrawable` bindings** — Full bindings for the Skia drawable type. ❤️ @charlenni ([#940](https://github.com/mono/SkiaSharp/pull/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` overloads** — Added `Span` alternatives alongside existing `byte[]` and `IntPtr` overloads. +- **`SKPictureShader` binding** — Exposes picture-based shaders for tiling and repeating recorded drawing. ❤️ [@alexandrvslv](https://github.com/alexandrvslv) ([#973](https://github.com/mono/SkiaSharp/pull/973)) -### Packages & Platform Support +### API Surface -- **`SkiaSharp.NativeAssets.Linux.NoDependencies`** — New NuGet package for Linux environments without `libfontconfig`. -- **View packages split** — `SkiaSharp.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. +- **`Span` for data, bitmap data and text blobs** — Adds span-based overloads to reduce allocations and copies when working with raw buffers. ([#865](https://github.com/mono/SkiaSharp/pull/865)) +- **`SKTypeface.IsFixedPitch`** — Adds a binding to query whether a typeface is monospaced. ([#1019](https://github.com/mono/SkiaSharp/pull/1019)) +- **Reworked managed-native types** — Overhauls the managed/native type plumbing for safer, more consistent interop. ([#900](https://github.com/mono/SkiaSharp/pull/900)) -### Xamarin.Forms +### Text & Fonts -- **WPF support** — Initial WPF backend via `SkiaSharp.Views.Forms.WPF`. -- **Updated to Xamarin.Forms v4.x** — Compatibility with the latest Forms release. -- **Mouse wheel support** — `SKCanvasView` and `SKGLView` now handle mouse wheel events. ❤️ @charlenni +- **HarfBuzzSharp font functions** — Adds font-function bindings to HarfBuzzSharp for finer-grained shaping control. ❤️ [@Gillibald](https://github.com/Gillibald) ([#881](https://github.com/mono/SkiaSharp/pull/881)) +- **HarfBuzzSharp 2.6.1** — Updates HarfBuzzSharp to track the latest HarfBuzz. ❤️ [@Gillibald](https://github.com/Gillibald) ([#929](https://github.com/mono/SkiaSharp/pull/929)) +- **`int` unicode overloads** — Adds integer code-point overloads for a more consistent shaping API. ❤️ [@Gillibald](https://github.com/Gillibald) ([#972](https://github.com/mono/SkiaSharp/pull/972)) +- **Load HarfBuzz face by table data** — Allows constructing a face directly from raw table data. ([#862](https://github.com/mono/SkiaSharp/pull/862)) -### HarfBuzz +### Platform -- **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` overloads for HarfBuzzSharp** — Consistent with SkiaSharp's new span support. ❤️ @Gillibald +- **WPF backend for Xamarin.Forms** — Adds a WPF rendering backend to `SkiaSharp.Views.Forms`. ([#917](https://github.com/mono/SkiaSharp/pull/917)) +- **watchOS `arm64_32` and bitcode** — Builds the `arm64_32` architecture for watchOS and enables bitcode for watchOS and tvOS. ([#967](https://github.com/mono/SkiaSharp/pull/967), [#971](https://github.com/mono/SkiaSharp/pull/971)) +- **fontconfig-free Linux builds** — Adds support for building SkiaSharp without fontconfig. ([#821](https://github.com/mono/SkiaSharp/pull/821)) +- **Linux export hiding** — Adds a build version script that hides the exported symbols of bundled dependencies on Linux. ❤️ [@Gillibald](https://github.com/Gillibald) ([#984](https://github.com/mono/SkiaSharp/pull/984)) +- **Split desktop projects and packages** — Separates the desktop projects and packages for cleaner platform targeting. ([#899](https://github.com/mono/SkiaSharp/pull/899)) ## 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. +- **Fixed bad colors** — Corrects incorrect color output in rendered content. ([#1023](https://github.com/mono/SkiaSharp/pull/1023)) +- **Freed memory when a view is detached** — Releases resources when the view is detached, fixing a leak (#1004). ([#1005](https://github.com/mono/SkiaSharp/pull/1005)) +- **Fixed an `SKRoundRect` memory leak** — Stops `SKRoundRect` from leaking native memory. ([#995](https://github.com/mono/SkiaSharp/pull/995)) +- **Improved UWP GPU view stability** — Hardens the UWP GPU view against intermittent failures. ([#1024](https://github.com/mono/SkiaSharp/pull/1024)) +- **Fixed the iOS canvas implementation** — Corrects the iOS canvas behavior. ([#879](https://github.com/mono/SkiaSharp/pull/879), [#1022](https://github.com/mono/SkiaSharp/pull/1022)) +- **Fixed transparent-bitmap artifacts in `ToSKPixmap`** — Resolves display artifacts when converting transparent bitmaps (#849). ❤️ [@c.esneault](https://github.com/c.esneault) ([#863](https://github.com/mono/SkiaSharp/pull/863)) +- **Raster views no longer allocate 0 bytes** — Prevents zero-byte allocations in raster views (#759). ([#761](https://github.com/mono/SkiaSharp/pull/761)) +- **Corrected reference-only color spaces** — Fixes color spaces that were created as references only. ([#922](https://github.com/mono/SkiaSharp/pull/922)) -## Maintenance +Plus a new custom P/Invoke generator, a fresh Azure DevOps build pipeline, and numerous CI and documentation improvements. -- P/Invoke layer is now generated along with structs and enums. -- Documentation moved to the [SkiaSharp-API-docs](https://github.com/mono/SkiaSharp-API-docs) repository. -- Build improvements. ❤️ @danien -- Documentation improvements. ❤️ @HankiDesign +## Platform Support + +| Platform | What's New | +|----------|-----------| +| 🍎 Apple | watchOS `arm64_32`, bitcode for watchOS/tvOS, iOS canvas fix | +| 🪟 Windows | WPF backend for Xamarin.Forms, UWP GPU view stability | +| 🐧 Linux | fontconfig-free builds, hidden dependency exports | +| 🎨 Core API | `Span` overloads, `SKPictureShader`, HarfBuzz font funcs | ## Community Contributors ❤️ | Contributor | What They Did | -|-------------|---------------| -| [@charlenni](https://github.com/charlenni) | `SKDrawable` bindings, mouse wheel support in Forms | -| [@Gillibald](https://github.com/Gillibald) | HarfBuzz 2.6.1 upgrade, expanded APIs, `Span` overloads | -| [@vexx32x](https://github.com/vexx32x) | Additional `SKRegion` members | -| [@MarchingCube](https://github.com/MarchingCube) | Additional `SKPaint` and `SKMatrix` members | -| [@alexandrvslv](https://github.com/alexandrvslv) | `SKShader` from `SKPicture` | -| [@inforithmics](https://github.com/inforithmics) | Android emulator color fix | -| [@Odirb](https://github.com/Odirb) | `System.Drawing.Bitmap` conversion fix | -| [@danien](https://github.com/danien) | Build improvements | -| [@HankiDesign](https://github.com/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. +|-------------|--------------| +| [@Gillibald](https://github.com/Gillibald) | HarfBuzz/HarfBuzzSharp updates, font-function bindings, `int` unicode overloads, Linux export hiding | +| [@alexandrvslv](https://github.com/alexandrvslv) | Bound `SKPictureShader` | +| [@c.esneault](https://github.com/c.esneault) | Fixed transparent-bitmap artifacts in `ToSKPixmap` | +| [@danien.chee](https://github.com/danien.chee) | Aligned native artifact naming with the Azure build | +| [@newky2k](https://github.com/newky2k) | Added NuGet validation to the build | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.0...v1.68.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.68.1) -- [Milestone](https://github.com/mono/SkiaSharp/milestone/19) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.68.1) diff --git a/documentation/docfx/releases/1.68.2.1.md b/documentation/docfx/releases/1.68.2.1.md index 578aaf637db..365f5b2cac2 100644 --- a/documentation/docfx/releases/1.68.2.1.md +++ b/documentation/docfx/releases/1.68.2.1.md @@ -1,20 +1,40 @@ + + + + # Version 1.68.2.1 -> **Packaging fix for strong naming** · Released May 2, 2020 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.2.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.2.1) +> **Assembly signing fix** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.2.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.2.1) ## Highlights -A small patch release to fix assemblies not being strong named properly. +This servicing release ensures the shipped managed assemblies are correctly signed. -## Breaking Changes +## Bug Fixes -*None in this release.* +- **Assemblies are now properly signed** — Ensures the managed assemblies are in fact strong-name signed before packaging. ([#1268](https://github.com/mono/SkiaSharp/pull/1268)) -## Bug Fixes +## Platform Support -- Fixed assemblies not being strong named properly ([#1267](https://github.com/mono/SkiaSharp/issues/1267)) +| Platform | What's New | +|----------|-----------| +| 📦 General | Correctly signed assemblies | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2...v1.68.2.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.68.2.1) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.68.2.1) diff --git a/documentation/docfx/releases/1.68.2.md b/documentation/docfx/releases/1.68.2.md index 8ce82fcbb3d..72ff6c66cbd 100644 --- a/documentation/docfx/releases/1.68.2.md +++ b/documentation/docfx/releases/1.68.2.md @@ -1,141 +1,178 @@ + + + + # Version 1.68.2 -> **Rich API additions and performance improvements** · Released April 30, 2020 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.2) +> **Stability, API surface, and new platform views** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.2) ## Highlights -This release brings a wealth of new drawing APIs to SKCanvas, floating-point color support via SKColorF, and significant performance gains from removing all use of reflection. Structs across the library now implement `IEquatable` with proper equality operators, and memory management has been improved with array pooling and lifetime fixes. - -## Breaking Changes - -*None in this release.* +A large release that expands the API surface (`SKColorF` overloads, more `SKImage`, `SKRegion`, and `SKCanvas` members, and writable pixel spans), introduces GTK views for Xamarin.Forms, and resolves a broad set of view disposal, concurrency, and memory issues. Nine community contributors — including [@Gillibald](https://github.com/Gillibald), [@mischero](https://github.com/mischero), and [@bugfact](https://github.com/bugfact) — landed user-facing improvements across the views and bindings. ## New Features -### Drawing & Canvas - -- **SKColorF** — Added floating-point color type with overloads across the API for high-precision color workflows. -- **SKCanvas.DrawAtlas** — Draw sprite atlases with per-sprite transforms and colors. -- **SKCanvas.DrawPatch** — Draw Coons patches for advanced gradient meshes. -- **SKCanvas.DrawArc** — Draw arcs directly on the canvas. -- **SKCanvas.DrawRoundRectDifference** — Draw the difference between two rounded rectangles. - -### Imaging & Shaders +### Engine -- **SKImage.ToRasterImage() overload** — Request explicit pixel data loading when converting to a raster image. -- **SKImage.ToTextureImage** — Copy a CPU-backed image to a GPU texture. -- **ToShader() extensions** — Added `ToShader()` to `SKBitmap`, `SKImage`, and `SKPicture` for convenient shader creation. -- **Perlin noise shaders** — Improved support for Perlin noise shader generation. +- **Updated expat to 2.2.9** — Refreshes the bundled expat native dependency. ([#1214](https://github.com/mono/SkiaSharp/pull/1214)) +- **Buffer overflow fixes** — Cherry-picks upstream fixes for buffer overflow bugs. ([#1037](https://github.com/mono/SkiaSharp/pull/1037)) -### Geometry & Math +### GPU & Rendering -- **SKMatrix helpers** — Added `Concat`, `PreConcat`, and `PostConcat` members for cleaner matrix composition. -- **SKRegion operations** — Added "quick" reject/contains members and region iterators for faster spatial queries. +- **Improved Perlin noise shader** — Adds an `SKShader` binding to create improved Perlin noise. ([#1056](https://github.com/mono/SkiaSharp/pull/1056)) -### Struct Improvements +### API Surface -- **IEquatable\** — All structs now implement `IEquatable` with proper `Equals`, `GetHashCode`, and equality operators. -- **Readonly getters** — All struct getters are now `readonly` for better performance and correctness. -- **EditorBrowsable(Never)** — Obsolete members are now hidden from IntelliSense. +- **Writable pixel spans** — Exposes a generic, writable `Span` over pixel data. ([#1242](https://github.com/mono/SkiaSharp/pull/1242)) +- **`SKColorF` overloads** — Adds `SKColorF` overloads with `SKColorSpace` support. ([#1116](https://github.com/mono/SkiaSharp/pull/1116)) +- **More `SKImage` members** — Rounds out the `SKImage` API. ([#1126](https://github.com/mono/SkiaSharp/pull/1126)) +- **Complete `SKRegion` members** — Adds the remaining `SKRegion` members. ([#1125](https://github.com/mono/SkiaSharp/pull/1125)) +- **More `SKCanvas` members** — Adds additional members to `SKCanvas`. ([#1090](https://github.com/mono/SkiaSharp/pull/1090)) +- **Reflection-free object creation** — Removes reflection usage from `SKObject` creation for better performance. ❤️ [@Gillibald](https://github.com/Gillibald) ([#1209](https://github.com/mono/SkiaSharp/pull/1209)) +- **More .NET-friendly method names** — Renames some methods to follow .NET conventions. ([#1255](https://github.com/mono/SkiaSharp/pull/1255)) +- **Nullable merge filter overloads** — Merge filter factory overloads now accept `null` arguments. ❤️ [@bugfact](https://github.com/bugfact) ([#1185](https://github.com/mono/SkiaSharp/pull/1185)) -### Views & Platform Extensions +### Platform -- **GTK extensions** — Added extension methods for `SKRect`/`SKPoint`/`SKSize` conversion and image type conversions (`SKImage`/`SKBitmap`/`SKPixmap` ↔ `Pixbuf`). -- **SkiaSharp.Views.Forms.GTK** — New package bringing SkiaSharp views to Xamarin.Forms on GTK. -- **Mouse wheel scrolling** — Added scroll wheel support in Xamarin.Forms views. ❤️ [@alexandrvslv](https://github.com/alexandrvslv) -- **Touch device type & pressure** — Added `SKTouchDeviceType` and touch pressure support on Android. ❤️ [@mscherotter](https://github.com/mscherotter) +- **GTK views for Xamarin.Forms** — Adds GTK view support for Xamarin.Forms. ([#1089](https://github.com/mono/SkiaSharp/pull/1089)) +- **Multi-targeted Windows.Forms views** — `SkiaSharp.Views.Windows.Forms` is now multi-targeted. ([#1082](https://github.com/mono/SkiaSharp/pull/1082)) +- **Newer XF.Tizen overload** — Adds the expected overload for newer versions of Xamarin.Forms Tizen. ([#1117](https://github.com/mono/SkiaSharp/pull/1117)) +- **Richer touch events** — Adds device type (touch, mouse, pen) to touch events, plus pressure and eraser handling. ❤️ [@mischero](https://github.com/mischero) ([#1191](https://github.com/mono/SkiaSharp/pull/1191), [#1212](https://github.com/mono/SkiaSharp/pull/1212)) +- **VS2019 and .NET Core 3.0** — Upgrades the build to Visual Studio 2019 and .NET Core 3.0. ([#1030](https://github.com/mono/SkiaSharp/pull/1030)) +- **Improved native build + Nano Server** — Improves the native build process and adds Nano Server support. ([#1040](https://github.com/mono/SkiaSharp/pull/1040)) ## Bug Fixes -- Fixed passing `null` for image filters throwing an exception instead of being treated as no filter. ❤️ [@Ziriax](https://github.com/Ziriax) -- Fixed passing `null` to `SKPathMeasure` throwing an exception. ❤️ [@Ziriax](https://github.com/Ziriax) -- Fixed sampling issues with GPU-based views. ❤️ [@validvoid](https://github.com/validvoid) -- Fixed memory leak and crash in Xamarin.Forms views. ❤️ [@zbyszekpy](https://github.com/zbyszekpy) -- Fixed several object lifetime and disposal bugs across the library. - -## Performance - -- Removed all use of reflection for a significant performance boost. ❤️ [@Gillibald](https://github.com/Gillibald) -- Made use of array pools where possible to reduce allocations. -- Multiple memory management improvements throughout the library. - -## Maintenance - -- Updated to Visual Studio 2019 and .NET Core 3.0. -- Multi-targeting improvements. ❤️ [@bender2k14](https://github.com/bender2k14) -- Updated minimum Android to v4.1 (API 16). -- Updated Android NDK to r19c, MSVC to v14.2, and Clang to v9.0. -- Updated ANGLE to the latest commit. -- Updated Xamarin.Forms dependency to v4.4+. - -## Known Issues - -- WACK test false positive with `vcruntime140_1_app.dll` — this is resolved in the Windows Insider SDK. +- **GC no longer collects live objects** — Prevents the GC from collecting `this` and `pixels` during native calls. ([#1258](https://github.com/mono/SkiaSharp/pull/1258)) +- **Cleared fields on dispose** — Nulls out the field when disposing. Fixes #960. ([#1256](https://github.com/mono/SkiaSharp/pull/1256)) +- **No allocation on disposal** — Removes an unnecessary allocation during disposal. ([#1257](https://github.com/mono/SkiaSharp/pull/1257)) +- **Removed `[Preserve]` attribute** — Drops the obsolete `[Preserve]` attribute. ([#1229](https://github.com/mono/SkiaSharp/pull/1229)) +- **System fonts no longer disposed** — Ensures system fonts are not accidentally disposed. ([#1224](https://github.com/mono/SkiaSharp/pull/1224)) +- **Concurrency fixes** — Resolves a number of concurrency issues. ([#1200](https://github.com/mono/SkiaSharp/pull/1200)) +- **Fixed test crashes and WGL deadlock** — Fixes unit test crashes and a WGL deadlock. ([#1237](https://github.com/mono/SkiaSharp/pull/1237)) +- **Android surface refresh** — Refreshes the Android view surface when it is recreated. ([#1234](https://github.com/mono/SkiaSharp/pull/1234)) +- **Reworked view disposal** — Re-works views to avoid incorrect disposal and releases Skia objects when a view is unloaded. ([#1180](https://github.com/mono/SkiaSharp/pull/1180), [#1213](https://github.com/mono/SkiaSharp/pull/1213)) +- **UWP `SKSwapChainPanel` antialiasing** — Fixes broken antialiasing with the UWP `SKSwapChainPanel`. ❤️ [@validvoid](https://github.com/validvoid) ([#1086](https://github.com/mono/SkiaSharp/pull/1086)) +- **`SKGLViewRenderer` disposal** — Corrects `SKGLViewRenderer` disposal. ❤️ [@zbigniew.pytka-ext](https://github.com/zbigniew.pytka-ext) ([#1095](https://github.com/mono/SkiaSharp/pull/1095)) +- **WPF mouse wheel on touch** — Handles the WPF mouse wheel during touch events. ❤️ [@alexandrvslv](https://github.com/alexandrvslv) ([#1079](https://github.com/mono/SkiaSharp/pull/1079)) +- **Weak reference cleanup** — `TryRemove`s instances from `WeakReference`s. ❤️ [@daltonks](https://github.com/daltonks) ([#1039](https://github.com/mono/SkiaSharp/pull/1039)) +- **macOS `SKGLView` fixes** — Fixes a few issues with the macOS `SKGLView`. ([#1083](https://github.com/mono/SkiaSharp/pull/1083)) +- **Correct image decoding** — Fixes incorrect image decoding. ([#1055](https://github.com/mono/SkiaSharp/pull/1055)) +- **HarfBuzz string fixes** — Fixes issues with HarfBuzz strings. ([#1034](https://github.com/mono/SkiaSharp/pull/1034)) +- **Paint encoding fallback** — Changes paint encoding instead of throwing. ([#1152](https://github.com/mono/SkiaSharp/pull/1152)) +- **Redraw and load fixes** — Queues the redraw (fixes #1074), keeps the view in the hierarchy, calls `MakeCurrent` before drawing, and prevents a double-load issue (fixes #1118). ([#1135](https://github.com/mono/SkiaSharp/pull/1135), [#1143](https://github.com/mono/SkiaSharp/pull/1143), [#1141](https://github.com/mono/SkiaSharp/pull/1141), [#1133](https://github.com/mono/SkiaSharp/pull/1133)) + +Plus several build, CI, and documentation improvements. + +## Platform Support + +| Platform | What's New | +|----------|-----------| +| 🎨 Core API | Writable pixel spans, `SKColorF`/`SKImage`/`SKRegion`/`SKCanvas` members, Perlin noise shader | +| 🍎 Apple | macOS `SKGLView` fixes | +| 🪟 Windows | Multi-targeted Windows.Forms views, UWP `SKSwapChainPanel` antialiasing, WPF touch fixes | +| 🤖 Android | Surface refresh on recreation | +| 🐧 Linux | GTK views for Xamarin.Forms | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@Ziriax](https://github.com/Ziriax) | Fixed null parameter handling in image filters and path measure | -| [@Gillibald](https://github.com/Gillibald) | Removed all reflection usage for major performance gains | -| [@validvoid](https://github.com/validvoid) | Fixed GPU view sampling issues | -| [@alexandrvslv](https://github.com/alexandrvslv) | Added mouse wheel scrolling support | -| [@mscherotter](https://github.com/mscherotter) | Added touch device type and pressure on Android | -| [@zbyszekpy](https://github.com/zbyszekpy) | Fixed memory leak and crash in views | -| [@bender2k14](https://github.com/bender2k14) | Multi-targeting improvements | +| [@Gillibald](https://github.com/Gillibald) | Removed reflection usage from `SKObject` creation | +| [@mischero](https://github.com/mischero) | Added device type, pressure, and eraser handling to touch events | +| [@bugfact](https://github.com/bugfact) | Allowed `null` arguments in merge filter factory overloads | +| [@validvoid](https://github.com/validvoid) | Fixed UWP `SKSwapChainPanel` antialiasing | +| [@zbigniew.pytka-ext](https://github.com/zbigniew.pytka-ext) | Corrected `SKGLViewRenderer` disposal | +| [@alexandrvslv](https://github.com/alexandrvslv) | Added WPF mouse wheel handling on touch events | +| [@daltonks](https://github.com/daltonks) | Cleaned up weak reference tracking | +| [@bender2k14](https://github.com/bender2k14) | Sample cleanups | +| [@immo](https://github.com/immo) | Linked the Code of Conduct | ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.1.1...v1.68.2) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.1...v1.68.2) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.68.2) -- [Milestone](https://github.com/mono/SkiaSharp/milestone/30) - ---- - -## Preview 60 (April 13, 2020) - -Final preview with remaining bug fixes and stabilization before the GA release. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2-preview.50...v1.68.2-preview.60) - -## Preview 50 (April 3, 2020) - -Continued memory management improvements and additional API polish. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2-preview.45...v1.68.2-preview.50) - -## Preview 45 (March 24, 2020) - -Struct equality operators and `IEquatable` implementation across all value types. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2-preview.43...v1.68.2-preview.45) - -## Preview 43 (March 18, 2020) - -Added `ToTextureImage` and expanded shader creation methods on imaging types. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2-preview.39...v1.68.2-preview.43) - -## Preview 39 (February 27, 2020) - -New canvas drawing APIs including `DrawAtlas`, `DrawPatch`, and `DrawArc`. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2-preview.29...v1.68.2-preview.39) - -## Preview 29 (February 6, 2020) - -SKRegion enhancements and SKMatrix helper methods. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2-preview.21...v1.68.2-preview.29) - -## Preview 21 (January 20, 2020) - -GTK view extensions and Xamarin.Forms GTK package. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2-preview.17...v1.68.2-preview.21) - -## Preview 17 (January 11, 2020) - -Initial preview with SKColorF support and reflection removal for performance. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.1.1...v1.68.2-preview.17) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.68.2) diff --git a/documentation/docfx/releases/1.68.3.md b/documentation/docfx/releases/1.68.3.md index 9e66f002495..fc27be0ab75 100644 --- a/documentation/docfx/releases/1.68.3.md +++ b/documentation/docfx/releases/1.68.3.md @@ -1,22 +1,55 @@ + + + + # Version 1.68.3 -> **Performance improvements for frequently-used objects** · Released May 18, 2020 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.3) +> **Performance & packaging release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.68.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.3) ## Highlights -This is a focused maintenance release that improves performance for the most frequently-used SkiaSharp objects and updates the Tizen SDK to v3.7. +This release brings a round of performance improvements, updates the Tizen support to the latest platform, and ensures all shipping assemblies are properly signed. + +## New Features + +### Platform -## Breaking Changes +- **Updated Tizen support** — Moves to the new Tizen platform. ([#1280](https://github.com/mono/SkiaSharp/pull/1280)) -*None in this release.* +### API Surface + +- **Performance improvements** — A set of performance optimizations across the library. ([#1277](https://github.com/mono/SkiaSharp/pull/1277)) ## Bug Fixes -- Performance improvements for most frequently-used objects -- Updated Tizen SDK to v3.7 +- **Assembly signing** — Ensures that the shipped assemblies are in fact signed. ([#1268](https://github.com/mono/SkiaSharp/pull/1268)) + +## Platform Support + +| Platform | What's New | +|----------|-----------| +| 📦 General | Performance improvements, signed assemblies | +| 📱 Tizen | Updated to the new Tizen platform | ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2.1...v1.68.3) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.2...v1.68.3) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/1.68.3) -- [Milestone](https://github.com/mono/SkiaSharp/milestone/35) +- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/1.68.3) +- [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.68.3) diff --git a/documentation/docfx/releases/2.80.0.md b/documentation/docfx/releases/2.80.0.md index 1c5e52a9678..9113465b74b 100644 --- a/documentation/docfx/releases/2.80.0.md +++ b/documentation/docfx/releases/2.80.0.md @@ -1,131 +1,134 @@ + + + + # Version 2.80.0 -> **Major milestone update with Vulkan, ARM, and text overhaul** · Released July 9, 2020 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.80.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.80.0) +> **Major milestone update with Vulkan, ARM, and a text overhaul** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.80.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.80.0) ## Highlights -This is the biggest SkiaSharp release in years, upgrading to Skia milestone 80 and adding broad new platform support. Vulkan backends land on Android, Windows, and Linux. ARM64 support comes to Windows (UWP and Win32), and ARM/ARM64 support arrives for Linux — including Raspberry Pi. Text processing has been entirely rewritten around the new `SKFont` type with `Span`-based APIs for near-zero-allocation performance. Native libraries are no longer embedded in managed DLLs, improving build times and giving developers better control over native assets. Three community contributors helped drive this release. - -## Breaking Changes - -### API Renames - -- **`SKEncoding` → `SKTextEncoding`** — The old `SKEncoding` enum is deprecated in favor of `SKTextEncoding`. -- **`GRPixelConfig` deprecated** — Use `SKColorType` instead for GPU surface configuration. - -### Minimum Version Bumps - -- **UWP minimum** — Now requires Windows 10.0.16299 or later. -- **.NET Framework minimum** — Now requires .NET Framework 4.6.2 or later. -- **Xamarin.Forms minimum** — Now requires Xamarin.Forms 4.5+. - -### Color Space Rework - -- Several `SKColorSpace`-related types have been deprecated in favor of improved types with better access to transfer functions and ICC profiles. Usage of `SKMatrix44` is being phased out. +This is one of the biggest SkiaSharp releases in years, upgrading to Skia milestone 80 ([#986](https://github.com/mono/SkiaSharp/pull/986)) and broadening platform support dramatically. Vulkan backends land across Win32, Android, and Linux; ARM64 comes to Win32 and ARM/ARM64 to Linux; and a brand-new WebAssembly target is introduced. Text processing is rebuilt around a glyph-focused `SKFont` type. Community contributors [@bugfact](https://github.com/bugfact) and [@bender2k14](https://github.com/bender2k14) helped drive this release. -### Text Processing Rewrite +### ⚠️ Breaking Changes -- `SKTextBlob` and `SKTextBlobBuilder` now focus on glyphs and only expose convenience members for text. The underlying text engine has moved to `SKFont`. - -### Native Library Packaging - -- Native libSkiaSharp binaries are no longer embedded in managed DLLs. This improves build performance but may require updating deployment configurations. +- **Native libraries no longer embedded** — `libSkiaSharp` is no longer embedded inside the managed assemblies, which may require updating deployment configurations. ([#1296](https://github.com/mono/SkiaSharp/pull/1296)) +- **`SKFont` public API is now glyph-only** — Text-related members move under `SKFont`, with other types consuming it under the hood. ([#1299](https://github.com/mono/SkiaSharp/pull/1299)) +- **Enum members restored** — Previously removed enum members were added back to preserve compatibility. ([#1285](https://github.com/mono/SkiaSharp/pull/1285)) ## New Features ### Engine -- **Skia milestone 80** — Upgraded to the latest Skia engine with all upstream improvements. ([Native Changelogs](https://github.com/mono/SkiaSharp/wiki/Native-Changelogs)) +- **Skia milestone 80** — Upgraded the native engine to a much later Skia (m80) with all upstream improvements. ([#986](https://github.com/mono/SkiaSharp/pull/986)) ### GPU & Rendering -- **Vulkan backend support** — Full Vulkan rendering support on Android, Windows, and Linux with new `GRVkBackendContext`, `GRVkImageInfo`, and related types. ❤️ @tuccio ❤️ @MarchingCube -- **SharpVk integration** — New `GRSharpVkBackendContext` and extension methods for `GRVkExtensions` to use SharpVk objects directly. -- **Streamlined GPU types** — `GRContext` and `GRGlInterface` creation and usage have been simplified. +- **Vulkan for Win32 (plus APIs for everyone)** — Full Vulkan backend support on Win32 along with the shared Vulkan APIs. ([#1010](https://github.com/mono/SkiaSharp/pull/1010)) +- **Vulkan on all supported platforms** — Vulkan native libraries are now built across the supported platform matrix. ([#1287](https://github.com/mono/SkiaSharp/pull/1287)) +- **Improved GPU APIs** — Streamlined `GRContext` and related GPU type creation and usage. ([#1294](https://github.com/mono/SkiaSharp/pull/1294)) +- **GL ES 3.x preferred** — Explicitly requests GL ES 3.x when available. ([#1388](https://github.com/mono/SkiaSharp/pull/1388)) +- **Correct shader usage** — Fixes the shaders used during rendering. ([#1323](https://github.com/mono/SkiaSharp/pull/1323)) -### Text +### Text & Fonts -- **`SKFont` type** — New text-focused type that is a subset of `SKPaint`, providing cleaner text APIs. -- **`Span`-based text APIs** — Near-zero-allocation text processing across the text pipeline. -- **Improved `DrawTextOnPath`** — `SKCanvas.DrawTextOnPath` now supports not warping characters, with a better managed implementation after native support was dropped in Skia. ❤️ @Ziriax -- **Simplified `DrawShapedText`** — New overloads for `SKCanvas.DrawShapedText` via SkiaSharp.HarfBuzz for easier common cases. +- **`SKFont` text engine** — The public `SKFont` API is now glyph-focused, providing a cleaner text pipeline. ([#1299](https://github.com/mono/SkiaSharp/pull/1299)) +- **`SKCanvas.DrawTextOnPath`** — Implemented drawing text along a path. ❤️ [@bugfact](https://github.com/bugfact) ([#1198](https://github.com/mono/SkiaSharp/pull/1198)) ### API Surface -- **`SKColorSpace` rework** — New types for accessing transfer functions and ICC profiles. -- **`SKColorF` on `SKPaint`** — Get and set colors using `SKColorF` with optional color space support. -- **`SKPath.ToWinding()`** — Convert paths to winding fill type. -- **Additional `SKImageFilter` overloads** — More factory method overloads for image filters. -- **Native version validation** — The managed library now validates the native library version and throws if incompatible. ([#1252](https://github.com/mono/SkiaSharp/pull/1252)) +- **`SKPath.ToWinding()`** — Convert paths to the winding fill type. ([#1326](https://github.com/mono/SkiaSharp/pull/1326)) +- **`SKPaint.ColorF`** — Get and set colors using floating-point `SKColorF`. ([#1325](https://github.com/mono/SkiaSharp/pull/1325)) +- **Snapshots with bounds** — Add surface snapshots constrained to bounds. ([#1357](https://github.com/mono/SkiaSharp/pull/1357)) +- **Reduced deprecated native usage** — Internal calls moved off deprecated native functions. ([#1356](https://github.com/mono/SkiaSharp/pull/1356)) ### Platform -- **Windows ARM64** — Full ARM64 support for both UWP and Win32 platforms. -- **Linux ARM / ARM64** — Native binaries for Debian ARM, ARM64, and Raspberry Pi. -- **Alpine / musl support** — Linux builds for Alpine and other musl-based distributions, including no-dependency variants. -- **WASM static library (experimental)** — Pre-built `.a` file for WebAssembly via `SkiaSharp.NativeAssets.WebAssembly`, for manual linking or use with Uno Platform. ([#1389](https://github.com/mono/SkiaSharp/pull/1389)) -- **.NET Framework ARM** — Proper 32/64 bit and ARM library loading for .NET Framework apps. +- **WebAssembly support** — A new WASM package, WASM build of `libSkiaSharp`, and WASM unit tests. ([#1389](https://github.com/mono/SkiaSharp/pull/1389), [#1359](https://github.com/mono/SkiaSharp/pull/1359), [#1361](https://github.com/mono/SkiaSharp/pull/1361)) +- **Linux ARM32 & ARM64** — Native libraries built for armhf and aarch64, including Raspberry Pi. ([#1382](https://github.com/mono/SkiaSharp/pull/1382)) +- **Win32 ARM64** — SkiaSharp now builds for Win32 ARM64. ([#1358](https://github.com/mono/SkiaSharp/pull/1358)) +- **Alpine native libraries** — Added musl-based Alpine Linux binaries. ([#1339](https://github.com/mono/SkiaSharp/pull/1339)) +- **Per-library native loading** — Load specific native libraries on desktop/.NET Framework. ([#1342](https://github.com/mono/SkiaSharp/pull/1342)) +- **Tizen Clang update** — Updated the Clang version used to build for Tizen. ([#1386](https://github.com/mono/SkiaSharp/pull/1386)) + +## Bug Fixes + +- **Crash with no GL context** — Fixed a crash that occurred when there was no GL context. ([#1328](https://github.com/mono/SkiaSharp/pull/1328)) +- **Managed/native disposal** — Correctly disposes the managed/native object relationship again. ([#1344](https://github.com/mono/SkiaSharp/pull/1344)) +- **Text blob builder lifetime** — Keeps the text blob builder alive to prevent premature collection. ([#1365](https://github.com/mono/SkiaSharp/pull/1365)) +- **Font set lifetime** — Keeps the font set alive to prevent premature collection. ([#1362](https://github.com/mono/SkiaSharp/pull/1362)) +- **Dependency prefixing** — No longer adds the SkiaSharp prefix to dependencies. ([#1331](https://github.com/mono/SkiaSharp/pull/1331)) +- **Issue #1353** — Resolved the reported regression. ([#1368](https://github.com/mono/SkiaSharp/pull/1368)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🪟 Windows | ARM64 for UWP and Win32, Vulkan backend, Nano Server support | -| 🐧 Linux | ARM / ARM64 / Raspberry Pi, Alpine / musl, Vulkan backend | -| 🤖 Android | Vulkan backend | -| 🌐 WebAssembly | Experimental static library package | -| 🍎 Apple | Xamarin.Forms minimum bumped to 4.5+ | +| 🌐 WebAssembly | New WASM package, native build, and unit tests | +| 🐧 Linux | ARM32/ARM64 builds, Alpine native libraries | +| 🪟 Windows | Win32 ARM64 build, Vulkan backend | +| 🤖 Android | Vulkan backend support | +| 🎨 Core API | `SKFont` text engine, `SKPaint.ColorF`, `SKPath.ToWinding()` | +| 🏗️ Build/CI | Native libraries no longer embedded in managed assemblies | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@tuccio](https://github.com/tuccio) | Vulkan backend support | -| [@MarchingCube](https://github.com/MarchingCube) | Vulkan backend support | -| [@Ziriax](https://github.com/Ziriax) | Improved `DrawTextOnPath` with non-warping character support | +| [@bugfact](https://github.com/bugfact) | Implemented `SKCanvas.DrawTextOnPath` | +| [@bender2k14](https://github.com/bender2k14) | Made the SkiaSharpSample the default startup project in the WPF sample solution | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v1.68.3...v2.80.0) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.80.0) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.80.0) - ---- - -## Preview Build 33 (July 1, 2020) - -Pre-release build leading up to the stable release. - -[Full Changelog](https://github.com/mono/SkiaSharp/releases/tag/v2.80.0) - ---- - -## Preview Build 24 (June 27, 2020) - -Pre-release build with ongoing stabilization. - -[Full Changelog](https://github.com/mono/SkiaSharp/releases/tag/v2.80.0) - ---- - -## Preview Build 14 (June 18, 2020) - -Pre-release build with ongoing stabilization. - -[Full Changelog](https://github.com/mono/SkiaSharp/releases/tag/v2.80.0) - ---- - -## Preview Build 12 (June 16, 2020) - -Pre-release build with ongoing stabilization. - -[Full Changelog](https://github.com/mono/SkiaSharp/releases/tag/v2.80.0) - ---- - -## Preview Build 3 (June 8, 2020) - -Initial preview of the 2.80.0 release cycle. - -[Full Changelog](https://github.com/mono/SkiaSharp/releases/tag/v2.80.0) diff --git a/documentation/docfx/releases/2.80.1.md b/documentation/docfx/releases/2.80.1.md index 0521c59a248..abfb106509d 100644 --- a/documentation/docfx/releases/2.80.1.md +++ b/documentation/docfx/releases/2.80.1.md @@ -1,35 +1,47 @@ -# Version 2.80.1 + -A quick follow-up to 2.80.0 that fixes a regression where `SKTypeface.GetGlyphs` changed meaning. This release also introduces the new `SkiaSharp.Views.Uno` package with CPU views for Android, iOS, and macOS — contributed by three community members. + -## Breaking Changes +# Version 2.80.1 -*None in this release.* +> **Maintenance release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.80.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.80.1) -## Bug Fixes +## Highlights -- **`SKTypeface.GetGlyphs` regression** — Fixed the changed behavior of `SKTypeface.GetGlyphs` introduced in v2.80.0. ([#1398](https://github.com/mono/SkiaSharp/issues/1398)) +This release adds Uno Platform support and corrects `SKTypeface` glyph counting. ## New Features ### Platform -- **Uno Platform CPU views** — New `SkiaSharp.Views.Uno` package with CPU rendering views for Android, iOS, and macOS. ❤️ @jeromelaban ❤️ @ghuntley ❤️ @MartinZikmund +- **Uno Platform support** — Adds first-class support for running SkiaSharp on the Uno Platform. ([#1396](https://github.com/mono/SkiaSharp/pull/1396)) + +## Bug Fixes + +- **`SKTypeface` glyph count** — `SKTypeface` now counts glyphs rather than bytes, returning the correct glyph count. ([#1399](https://github.com/mono/SkiaSharp/pull/1399)) -## Community Contributors ❤️ +## Platform Support -| Contributor | What They Did | -|-------------|--------------| -| [@jeromelaban](https://github.com/jeromelaban) | Uno Platform CPU views | -| [@ghuntley](https://github.com/ghuntley) | Uno Platform CPU views | -| [@MartinZikmund](https://github.com/MartinZikmund) | Uno Platform CPU views | +| Platform | What's New | +|----------|-----------| +| 📦 Uno Platform | New platform support | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.0...v2.80.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.80.1) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.80.1) diff --git a/documentation/docfx/releases/2.80.2.md b/documentation/docfx/releases/2.80.2.md index d1b2bd4512e..80630f20cfb 100644 --- a/documentation/docfx/releases/2.80.2.md +++ b/documentation/docfx/releases/2.80.2.md @@ -1,101 +1,117 @@ + + + + # Version 2.80.2 > **Bug-fix release with memory debugging and Uno GPU views** · Released September 12, 2020 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.80.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.80.2) ## Highlights -A stability-focused release fixing numerous bugs across image encoding, text rendering, interop, and native library loading. New memory debugging APIs (`SKGraphics`, `SKTraceMemoryDump`) help diagnose GPU memory usage. The Uno Platform views gain GPU support via `SKSwapChainPanel` and WASM CPU rendering. Two community contributors drove key fixes. +A stability-focused release fixing numerous bugs across image encoding, text rendering, interop, and native library loading. New memory debugging APIs help diagnose GPU resource usage, and the Uno Platform views gain GPU support plus WASM CPU rendering. Community contributor [@bugfact](https://github.com/bugfact) drove two of the iOS and surface fixes. -## Breaking Changes +## New Features -*None in this release.* +### Engine -## New Features +- **Skia update** — Bumped the native Skia engine to pick up upstream fixes ([#1436](https://github.com/mono/SkiaSharp/pull/1436)). ### API Surface -- **Memory debugging APIs** — Added `SKGraphics` and `SKTraceMemoryDump` types, plus memory debugging members on `GRContext`, for inspecting GPU resource usage. -- **`SKColorF` extension methods** — New extension methods in SkiaSharp.Views to convert between native platform colors and `SKColorF`. -- **Xamarin.Forms `SKColorF` extensions** — Convert between Xamarin.Forms `Color` and `SKColorF`. -- **Replacement methods for obsoleted members** — Added new methods to replace previously obsoleted APIs. +- **Memory debugging APIs** — Exposed `SKGraphics` for diagnostics, plus additional GPU memory debugging members on `GRContext` ([#1473](https://github.com/mono/SkiaSharp/pull/1473), [#1478](https://github.com/mono/SkiaSharp/pull/1478)). +- **`SKColorF` extension methods** — New extensions to convert between native platform colors and `SKColorF` ([#1469](https://github.com/mono/SkiaSharp/pull/1469)). +- **Replacement methods for obsoleted members** — Added new methods to replace previously obsoleted APIs ([#1431](https://github.com/mono/SkiaSharp/pull/1431)). ### Platform -- **Uno Platform WASM CPU views** — CPU rendering views for WASM via Uno Platform. ❤️ @jeromelaban ❤️ @ghuntley ❤️ @MartinZikmund -- **Uno Platform GPU views** — New `SKSwapChainPanel` GPU view for Android, iOS, macOS, and WASM. +- **Uno Platform WASM support** — CPU rendering views for WebAssembly via Uno Platform ([#1333](https://github.com/mono/SkiaSharp/pull/1333)). +- **Uno Platform GPU views** — New `SKSwapChainPanel` GPU view for Android, iOS, macOS, and WASM, plus further Uno integration ([#1429](https://github.com/mono/SkiaSharp/pull/1429), [#1420](https://github.com/mono/SkiaSharp/pull/1420)). +- **Xamarin.Forms performance** — Rendering performance improvements for Forms ([#1424](https://github.com/mono/SkiaSharp/pull/1424)). +- **UWP non-blocking invalidation** — UWP no longer blocks the UI thread when invalidating ([#1468](https://github.com/mono/SkiaSharp/pull/1468)). +- **macOS redraw fix** — Use `NeedsDisplay` instead of `Display` for correct macOS redraws ([#1475](https://github.com/mono/SkiaSharp/pull/1475)). + +### Build & Packaging + +- **Native-only NuGet package** — A new package containing just the native binaries ([#1456](https://github.com/mono/SkiaSharp/pull/1456)). +- **Debug bootstrapper builds** — Passing `--configuration=debug` to the bootstrapper now produces a debug library ([#1418](https://github.com/mono/SkiaSharp/pull/1418)). ## Bug Fixes -- **`SKSurface.Create` origin ignored** — Fixed the origin parameter being ignored when creating surfaces. ❤️ @Ziriax -- **`SKData` from non-seekable stream** — Fixed exception when creating `SKData` from a non-seekable stream. -- **`SKCanvas.DrawTextOnPath` null reference** — Fixed `NullReferenceException` in `DrawTextOnPath`. ❤️ @Ziriax -- **No-dependency builds using dependencies** — Fixed Linux "no dependencies" builds that were still linking against dependencies. -- **Image subset encoding** — Fixed an issue where encoding a subset of some images would encode the entire original image instead. -- **Text rendering crashes** — Fixed several text rendering issues and crashes. -- **Transitive dependency native binaries** — Fixed native binaries not reaching the final app when only referenced as a transitive dependency (also fixed for HarfBuzzSharp). -- **ASP.NET `DllNotFoundException`** — Fixed `DllNotFoundException` when running in ASP.NET. -- **WASM interop** — Fixed invalid interop on WASM for some methods. -- **`SKCanvas.DrawPoint` layering** — Fixed an issue with layering in `SKCanvas.DrawPoint`. +- **`SKSurface.Create` origin ignored** — Fixed the origin parameter being ignored when creating surfaces. ❤️ [@bugfact](https://github.com/bugfact) ([#1404](https://github.com/mono/SkiaSharp/pull/1404)) +- **`SKCanvas.DrawTextOnPath` null reference** — Fixed a `NullReferenceException` in `DrawTextOnPath` on iOS. ❤️ [@bugfact](https://github.com/bugfact) ([#1410](https://github.com/mono/SkiaSharp/pull/1410)) +- **`SKData` from non-seekable stream** — Fixed an exception when creating `SKData` from a non-seekable stream ([#1411](https://github.com/mono/SkiaSharp/pull/1411)). +- **ASP.NET `DllNotFoundException`** — Now checks the correct directory for native libraries under ASP.NET ([#1483](https://github.com/mono/SkiaSharp/pull/1483)). +- **Image subset encoding** — Fixed encoding overwriting the underlying pixels / encoding the full image instead of a subset ([#1457](https://github.com/mono/SkiaSharp/pull/1457)). +- **WASM + GL** — Use the correct native code for WASM with GL ([#1445](https://github.com/mono/SkiaSharp/pull/1445)). +- **Transitive dependency native binaries** — Native binaries now reach the final app via `buildTransitive` when only referenced transitively ([#1440](https://github.com/mono/SkiaSharp/pull/1440)). +- **Text rendering** — Use linear metrics for backwards compatibility and handle invalid text correctly ([#1439](https://github.com/mono/SkiaSharp/pull/1439), [#1438](https://github.com/mono/SkiaSharp/pull/1438)). +- **Alpine no-dependency builds** — Fixed Alpine builds that were still linking against fontconfig when asked not to ([#1416](https://github.com/mono/SkiaSharp/pull/1416)). +- **Interop float return** — Worked around cases where a float could not be returned correctly ([#1453](https://github.com/mono/SkiaSharp/pull/1453)). +- **`SetScaleTranslate` revert** — Reverted a regression in `SetScaleTranslate` ([#1452](https://github.com/mono/SkiaSharp/pull/1452)). ## Platform Support | Platform | What's New | |----------|-----------| -| 🐧 Linux | Fixed no-dependency builds | -| 🌐 WebAssembly | WASM interop fixes, Uno CPU + GPU views | -| 📦 General | Transitive dependency fix for native binaries, ASP.NET loading fix | +| 🍎 Apple | iOS `DrawTextOnPath` fix, macOS redraw fix | +| 🪟 Windows | UWP non-blocking invalidation | +| 🐧 Linux | Alpine no-dependency build fix | +| 🌐 WebAssembly | Uno WASM CPU views, WASM + GL fix | +| 🎨 Core API | Memory debugging APIs, `SKColorF` extensions | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@Ziriax](https://github.com/Ziriax) | Fixed `SKSurface.Create` origin and `DrawTextOnPath` null reference | -| [@jeromelaban](https://github.com/jeromelaban) | Uno Platform WASM CPU views | -| [@ghuntley](https://github.com/ghuntley) | Uno Platform WASM CPU views | -| [@MartinZikmund](https://github.com/MartinZikmund) | Uno Platform WASM CPU views | +| [@bugfact](https://github.com/bugfact) | Fixed the ignored `SKSurface.Create` origin and the iOS `DrawTextOnPath` `NullReferenceException` | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.1...v2.80.2) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.80.2) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.80.2) - ---- - -## Preview Build 36 (September 3, 2020) - -Stabilization and final bug fixes before the stable release. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.2-preview.33...v2.80.2-preview.36) - ---- - -## Preview Build 33 (August 25, 2020) - -Continued bug fixes and stability improvements. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.2-preview.19...v2.80.2-preview.33) - ---- - -## Preview Build 19 (August 4, 2020) - -Bug fixes for image encoding, text rendering, and native library loading. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.2-preview.18...v2.80.2-preview.19) - ---- - -## Preview Build 18 (August 2, 2020) - -Initial fixes for transitive dependency and ASP.NET loading issues. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.2-preview.9...v2.80.2-preview.18) - ---- - -## Preview Build 9 (July 27, 2020) - -First preview of the 2.80.2 release cycle with early bug fixes. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.1...v2.80.2-preview.9) diff --git a/documentation/docfx/releases/2.80.3.md b/documentation/docfx/releases/2.80.3.md index 21dd1d6c024..2ceba02fec2 100644 --- a/documentation/docfx/releases/2.80.3.md +++ b/documentation/docfx/releases/2.80.3.md @@ -1,111 +1,143 @@ + + + + # Version 2.80.3 -> **Metal, runtime effects, WinUI, and .NET 5 support** · Released July 12, 2021 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.80.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.80.3) +> **Released July 12, 2021** · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.80.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.80.3) ## Highlights -A feature-packed release bringing Metal rendering APIs to Apple platforms, the new `SKRuntimeEffect` API for custom GPU shaders, WinUI 3 desktop support, macOS ARM64 (Apple Silicon) native builds, .NET 5.0 support, and .NET Interactive integration. This release also includes Exif SubIFD reading, `SKPicture` serialization, `GRContextOptions`, and improved musl system detection. Five community contributors helped shape this release. - -## Breaking Changes - -*None in this release.* +A feature-packed release that brings the Metal rendering backend to Apple platforms, the new `SKRuntimeEffect` API for custom SkSL shaders, WinUI 3 desktop support, macOS ARM64 (Apple Silicon) native builds, .NET 5.0 targeting, and .NET Interactive notebook integration. Community contributors [@gmurray](https://github.com/gmurray), [@HarlanHugh](https://github.com/HarlanHugh), [@blasterloremaster](https://github.com/blasterloremaster), and [@jerome.laban](https://github.com/jerome.laban) all helped shape this release. ## New Features ### GPU & Rendering -- **Metal API support** — Full Metal rendering backend for Apple platforms (iOS, macOS), bringing hardware-accelerated GPU rendering via Metal. ([#1394](https://github.com/mono/SkiaSharp/pull/1394), [#1598](https://github.com/mono/SkiaSharp/pull/1598), [#1615](https://github.com/mono/SkiaSharp/pull/1615)) -- **`SKRuntimeEffect` API** — New API for custom GPU shader effects using SkSL (Skia Shading Language). ([#1604](https://github.com/mono/SkiaSharp/pull/1604)) +- **Metal rendering backend** — Full Metal GPU APIs for iOS and macOS. ([#1394](https://github.com/mono/SkiaSharp/pull/1394), [#1598](https://github.com/mono/SkiaSharp/pull/1598), [#1615](https://github.com/mono/SkiaSharp/pull/1615)) +- **`SKRuntimeEffect` API** — Custom GPU shader effects authored in SkSL (Skia Shading Language). ([#1604](https://github.com/mono/SkiaSharp/pull/1604)) - **`GRContextOptions`** — Exposed `GRContextOptions` for fine-grained control over GPU context creation. ([#1529](https://github.com/mono/SkiaSharp/pull/1529)) - **`GRContext.IsAbandoned`** — Exposed the `IsAbandoned` property in the C# API. ([#1659](https://github.com/mono/SkiaSharp/pull/1659)) -- **GL surface creation resilience** — Better handling of GL surface creation failures. ❤️ @gmurray81 ([#1642](https://github.com/mono/SkiaSharp/pull/1642)) +- **Resilient GL surface creation** — Gracefully handles failures when creating a GL surface. ❤️ [@gmurray](https://github.com/gmurray) ([#1642](https://github.com/mono/SkiaSharp/pull/1642)) +- **ANGLE `GRGlInterface`** — Allow assembling an ANGLE-based `GRGlInterface` outside UWP. ❤️ [@blasterloremaster](https://github.com/blasterloremaster) ([#1519](https://github.com/mono/SkiaSharp/pull/1519)) ### API Surface - **`SKPicture` serialization** — New bindings for serializing and deserializing `SKPicture` objects. ([#1514](https://github.com/mono/SkiaSharp/pull/1514)) -- **Exif SubIFD support** — Added support for reading the Exif SubIFD from image metadata. ([#1518](https://github.com/mono/SkiaSharp/pull/1518)) -- **ANGLE `GRGlInterface` outside UWP** — Allow creating ANGLE-based `GRGlInterface` from non-UWP environments. ❤️ @Mikolaytis ([#1519](https://github.com/mono/SkiaSharp/pull/1519)) -- **Stream copy optimization** — Eliminated unnecessary array allocations when copying streams. ([#1510](https://github.com/mono/SkiaSharp/pull/1510)) +- **Exif SubIFD reading** — Read the Exif SubIFD block from image metadata. ([#1518](https://github.com/mono/SkiaSharp/pull/1518)) +- **Allocation-free stream copies** — Avoids allocating temporary arrays when copying streams. ([#1510](https://github.com/mono/SkiaSharp/pull/1510)) + +### Text & Fonts + +- **HarfBuzz interop generation** — HarfBuzzSharp interop is now generated, and a HarfBuzzSharp WASM package is registered. ([#1447](https://github.com/mono/SkiaSharp/pull/1447), [#1525](https://github.com/mono/SkiaSharp/pull/1525)) +- **iOS font loading** — Fonts are now loaded correctly on iOS. ([#1539](https://github.com/mono/SkiaSharp/pull/1539)) ### Platform -- **macOS ARM64 (Apple Silicon)** — Native ARM64 build target for macOS. ([#1627](https://github.com/mono/SkiaSharp/pull/1627)) -- **.NET 5.0 support** — Updated to target .NET 5.0. ([#1697](https://github.com/mono/SkiaSharp/pull/1697)) -- **WinUI 3 Desktop support** — New views and rendering support for WinUI 3 desktop applications. ([#1696](https://github.com/mono/SkiaSharp/pull/1696), [#1741](https://github.com/mono/SkiaSharp/pull/1741)) -- **Uno Platform `SKXamlCanvas`** — Support for `SKXamlCanvas` on Uno Platform SkiaSharp backends v2.0. ([#1704](https://github.com/mono/SkiaSharp/pull/1704)) -- **.NET Interactive support** — SkiaSharp images can now be displayed directly in .NET Interactive notebooks. ([#1710](https://github.com/mono/SkiaSharp/pull/1710)) -- **Improved musl detection** — Properly detect and handle musl-based Linux systems. ([#1657](https://github.com/mono/SkiaSharp/pull/1657)) -- **Multiple emscripten WASM builds** — Includes all emscripten versions for WASM compatibility. ([#1590](https://github.com/mono/SkiaSharp/pull/1590)) +- **macOS ARM64 (Apple Silicon)** — New native arm64 build target for macOS. ([#1627](https://github.com/mono/SkiaSharp/pull/1627)) +- **.NET 5.0** — Updated to target .NET 5.0. ([#1697](https://github.com/mono/SkiaSharp/pull/1697)) +- **WinUI 3 desktop** — Views and rendering support for WinUI 3 desktop apps. ([#1696](https://github.com/mono/SkiaSharp/pull/1696), [#1741](https://github.com/mono/SkiaSharp/pull/1741)) +- **Uno Platform** — `SKXamlCanvas` support on Uno SkiaSharp backends v2.0, plus an update to Uno Platform v3.0. ([#1704](https://github.com/mono/SkiaSharp/pull/1704), [#1489](https://github.com/mono/SkiaSharp/pull/1489)) +- **.NET Interactive** — Render SkiaSharp images directly in .NET Interactive notebooks. ([#1710](https://github.com/mono/SkiaSharp/pull/1710)) +- **musl detection** — Properly detects and handles musl-based Linux systems. ([#1657](https://github.com/mono/SkiaSharp/pull/1657)) +- **WASM emscripten builds** — Builds and ships all required emscripten versions for WASM. ([#1590](https://github.com/mono/SkiaSharp/pull/1590)) ## Bug Fixes -- **`SKMatrix.IsInvertible` crash** — Fixed a crash when calling `IsInvertible` on certain matrices. ([#1527](https://github.com/mono/SkiaSharp/pull/1527)) -- **Image pixel reading** — Fixed incorrect image pixel reading. ([#1636](https://github.com/mono/SkiaSharp/pull/1636)) -- **iOS font loading** — Fixed font loading issues on iOS. ([#1539](https://github.com/mono/SkiaSharp/pull/1539)) -- **Display link defensiveness** — More defensive handling in display link callbacks. ([#1620](https://github.com/mono/SkiaSharp/pull/1620)) -- **Buffer swap after resize** — Fixed buffer swap issues after surface resize. ([#1668](https://github.com/mono/SkiaSharp/pull/1668)) -- **WPF `SKElement.OnRender`** — `SKElement.OnRender` now does nothing if there is no `PresentationSource`, preventing crashes. ❤️ @HarlanHugh ([#1606](https://github.com/mono/SkiaSharp/pull/1606)) +- **`SKMatrix.IsInvertible`** — No longer crashes. ([#1527](https://github.com/mono/SkiaSharp/pull/1527)) +- **Image pixel reads** — Ensures image pixels are read correctly. ([#1636](https://github.com/mono/SkiaSharp/pull/1636)) +- **Swapchain resize** — Buffers are swapped after a resize. ([#1668](https://github.com/mono/SkiaSharp/pull/1668)) +- **Display links** — More defensive handling of the display links. ([#1620](https://github.com/mono/SkiaSharp/pull/1620)) +- **WPF `SKElement.OnRender`** — Does nothing when there is no `PresentationSource`, avoiding errors. ❤️ [@HarlanHugh](https://github.com/HarlanHugh) ([#1606](https://github.com/mono/SkiaSharp/pull/1606)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | Metal rendering, macOS ARM64 (Apple Silicon), iOS font loading fix | -| 🪟 Windows | WinUI 3 Desktop support | -| 🐧 Linux | Improved musl system detection | -| 🌐 WebAssembly | Multiple emscripten builds, Uno `SKXamlCanvas` | +| 🍎 Apple | Metal backend, macOS ARM64 builds, iOS font loading | +| 🪟 Windows | WinUI 3 desktop support | +| 🐧 Linux | musl system detection | +| 🌐 WebAssembly | All emscripten versions, HarfBuzzSharp WASM package | +| 🎨 Core API | `SKRuntimeEffect`, `GRContextOptions`, `SKPicture` serialization | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@gmurray81](https://github.com/gmurray81) | Improved GL surface creation failure handling | -| [@HarlanHugh](https://github.com/HarlanHugh) | Fixed WPF `SKElement.OnRender` crash without `PresentationSource` | -| [@Mikolaytis](https://github.com/Mikolaytis) | Enabled ANGLE `GRGlInterface` creation outside UWP | -| [@jeromelaban](https://github.com/jeromelaban) | Uno Platform documentation updates | +| [@gmurray](https://github.com/gmurray) | Made GL surface creation resilient to failures | +| [@HarlanHugh](https://github.com/HarlanHugh) | Guarded WPF `SKElement.OnRender` against a missing `PresentationSource` | +| [@blasterloremaster](https://github.com/blasterloremaster) | Allowed assembling an ANGLE `GRGlInterface` outside UWP | +| [@jerome.laban](https://github.com/jerome.laban) | Added Uno Platform documentation references | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.2...v2.80.3) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.80.3) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.80.3) - ---- - -## Preview 93 (July 12, 2021) - -Added `SKXamlCanvas` support for Uno Platform SkiaSharp backends v2.0. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3-preview.90...v2.80.3-preview.93) - ---- - -## Preview 90 (May 30, 2021) - -Major preview with Metal APIs, `SKRuntimeEffect`, macOS ARM64, .NET 5.0, WinUI Desktop, .NET Interactive, and musl detection improvements. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3-preview.40...v2.80.3-preview.90) - ---- - -## Preview 40 (February 6, 2021) - -Added Metal APIs, `GRContextOptions`, WPF rendering fix, and build improvements. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3-preview.24...v2.80.3-preview.40) - ---- - -## Preview 24 (January 27, 2021) - -WASM emscripten builds and build system updates. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3-preview.18...v2.80.3-preview.24) - ---- - -## Preview 18 (November 10, 2020) - -Initial preview with `SKPicture` serialization, Exif SubIFD support, ANGLE improvements, stream optimization, and `SKMatrix.IsInvertible` fix. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.2...v2.80.3-preview.18) diff --git a/documentation/docfx/releases/2.80.4.md b/documentation/docfx/releases/2.80.4.md index c171382b133..5fc7cd9fb1d 100644 --- a/documentation/docfx/releases/2.80.4.md +++ b/documentation/docfx/releases/2.80.4.md @@ -1,67 +1,52 @@ + + + + # Version 2.80.4 -> **Stability fixes for surface allocation and anti-alias edging** · Released May 21, 2022 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.80.4) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.80.4-preview.9) +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.80.4) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.80.4) ## Highlights -A small maintenance release that improves resilience when GPU surface allocation fails, fixes `IsAntialias` to correctly control font edging, and addresses an ANGLE packaging issue with `zlib1.dll`. One community contributor drove the surface allocation fix. - -## Breaking Changes - -*None in this release.* +This servicing release fixes antialiasing edge behaviour and hardens surface allocation against failures, with a robustness fix contributed by [@richirisu](https://github.com/richirisu). ## Bug Fixes -- **Surface allocation failure handling** — Returns an empty surface instead of crashing when GPU surface allocation fails. ❤️ @richirisu ([#1784](https://github.com/mono/SkiaSharp/pull/1784)) -- **`IsAntialias` controls edging** — `IsAntialias` now correctly also controls the font edging setting. ([#1802](https://github.com/mono/SkiaSharp/pull/1802)) -- **ANGLE `zlib1.dll` packaging** — Fixed missing `zlib1.dll` output from ANGLE builds. ([#1807](https://github.com/mono/SkiaSharp/pull/1807)) +- **`IsAntialias` now controls edging** — Setting `IsAntialias` on a paint now correctly drives the edging mode again. ([#1802](https://github.com/mono/SkiaSharp/pull/1802)) +- **Graceful surface allocation failure** — Returns an empty surface instead of faulting when the underlying allocation fails. ❤️ [@richirisu](https://github.com/richirisu) ([#1784](https://github.com/mono/SkiaSharp/pull/1784)) +- **ANGLE `zlib1.dll` output** — The ANGLE build now also emits `zlib1.dll`, fixing a missing native dependency on Windows. ([#1807](https://github.com/mono/SkiaSharp/pull/1807)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🪟 Windows | Fixed ANGLE `zlib1.dll` packaging | +| 🎨 Core API | `IsAntialias` edging fix, safe surface allocation | +| 🪟 Windows | ANGLE now emits `zlib1.dll` | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@richirisu](https://github.com/richirisu) | Fixed crash on GPU surface allocation failure | +| [@richirisu](https://github.com/richirisu) | Returned an empty surface when allocation fails instead of faulting | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3...v2.80.4) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.80.4) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.80.4) - ---- - -## Preview 9 (May 11, 2022) - -CI infrastructure updates. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.4-preview.6...v2.80.4-preview.9) - ---- - -## Preview 6 (September 28, 2021) - -Fixed ANGLE `zlib1.dll` packaging. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.4-preview.5...v2.80.4-preview.6) - ---- - -## Preview 5 (September 13, 2021) - -Fixed surface allocation failure handling and `IsAntialias` edging control. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.4-preview.2...v2.80.4-preview.5) - ---- - -## Preview 2 (August 19, 2021) - -Initial preview of the 2.80.4 release cycle. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3...v2.80.4-preview.2) diff --git a/documentation/docfx/releases/2.88.0.md b/documentation/docfx/releases/2.88.0.md index fb3e1a1e882..c135e3e8d7c 100644 --- a/documentation/docfx/releases/2.88.0.md +++ b/documentation/docfx/releases/2.88.0.md @@ -1,208 +1,159 @@ + + + + # Version 2.88.0 -> **.NET 6, MAUI, and Mac Catalyst debut** · Released May 22, 2022 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.0) +> **.NET MAUI & .NET 6 release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.0) ## Highlights -A landmark release bringing SkiaSharp into the .NET 6 era. This version introduces first-class .NET MAUI views (both compatibility shims and native handlers), adds Mac Catalyst support, enables ASP.NET Blazor WebAssembly rendering, and splits the monolithic NuGet package into smaller per-platform native asset packages for faster restores and smaller deployments. Six community contributors helped shape the release. +A landmark release that brings first-class **.NET MAUI** views (both compatibility shims and handlers), **Mac Catalyst** support, **ASP.NET Blazor WebAssembly** components, and full **.NET 6 / `net6.0`** targets. The SkiaSharp package was also split into smaller per-platform "Native Asset" packages, and HarfBuzz was updated to 2.8.2. Several community contributors helped across Android, Uno, WebAssembly, and compliance. -## Breaking Changes +## New Features -*None in this release.* +### API Surface -## New Features +- **.NET MAUI views** — Adds `SkiaSharp.Views.Maui` with both compatibility views and handlers. ([#1678](https://github.com/mono/SkiaSharp/pull/1678)) +- **New drawing APIs** — Surfaces additional Skia APIs to the managed binding. ([#1828](https://github.com/mono/SkiaSharp/pull/1828)) -### Platform +### GPU & Rendering -- **Mac Catalyst support** — Full support for Mac Catalyst, including framework-based native packaging and build task integration. ([#1681](https://github.com/mono/SkiaSharp/pull/1681), [#1760](https://github.com/mono/SkiaSharp/pull/1760)) -- **.NET MAUI views** — New `SKCanvasView` and `SKGLView` for .NET MAUI with both compatibility and handler-based implementations. ([#1678](https://github.com/mono/SkiaSharp/pull/1678)) -- **.NET 6 TFMs** — Added `net6.0-ios`, `net6.0-android`, `net6.0-macos`, `net6.0-maccatalyst`, and `net6.0-tvos` targets for the binding projects. ([#1707](https://github.com/mono/SkiaSharp/pull/1707)) -- **ASP.NET Blazor WebAssembly** — Render SkiaSharp content in Blazor WASM applications. ([#1811](https://github.com/mono/SkiaSharp/pull/1811)) -- **Xamarin.Forms on netcoreapp3.1** — Extended Xamarin.Forms support to .NET Core 3.1 desktop scenarios. ([#1774](https://github.com/mono/SkiaSharp/pull/1774)) -- **Emscripten 2.0.23 support** — Updated WASM builds for newer Emscripten toolchain. ❤️ @jeromelaban ([#1746](https://github.com/mono/SkiaSharp/pull/1746)) -- **Uno Platform 4.0** — Bumped Uno Platform support to version 4.0. ❤️ @jeromelaban ([#1873](https://github.com/mono/SkiaSharp/pull/1873)) +- **WinUI accelerated views** — Adds support for hardware-accelerated WinUI views. ([#1733](https://github.com/mono/SkiaSharp/pull/1733)) -### Packaging +### Text & Fonts -- **Split native asset packages** — The SkiaSharp NuGet is now split into smaller per-platform `SkiaSharp.NativeAssets.*` packages for faster restore and reduced download size. ([#1758](https://github.com/mono/SkiaSharp/pull/1758)) -- **HarfBuzzSharp.NativeAssets packages** — HarfBuzz native assets also split into per-platform packages with Windows symbols included. ([#1797](https://github.com/mono/SkiaSharp/pull/1797)) -- **PDB files in packages** — Debug symbols now ship inside the NuGet packages for better debugging. ([#1781](https://github.com/mono/SkiaSharp/pull/1781)) -- **Software Bill of Materials (SBOM)** — SBOM manifest generation added to the build. ❤️ @mjbond-msft ([#1954](https://github.com/mono/SkiaSharp/pull/1954)) +- **HarfBuzz 2.8.2** — Updates the bundled HarfBuzz to 2.8.2. ([#1766](https://github.com/mono/SkiaSharp/pull/1766)) -### Engine +### Platform -- **WindowsAppSDK support** — Migrated Windows views to the Windows App SDK. ([#1800](https://github.com/mono/SkiaSharp/pull/1800)) -- **HarfBuzz updated to 2.8.2** — Brings the latest text shaping improvements. ([#1766](https://github.com/mono/SkiaSharp/pull/1766)) -- **New APIs** — Additional Skia APIs exposed to C#. ([#1828](https://github.com/mono/SkiaSharp/pull/1828)) +- **Mac Catalyst** — Adds Mac Catalyst support, moving build configuration into the `gn` files. ([#1760](https://github.com/mono/SkiaSharp/pull/1760), [#1681](https://github.com/mono/SkiaSharp/pull/1681)) +- **ASP.NET Blazor WebAssembly** — Adds support for Blazor WebAssembly components. ([#1811](https://github.com/mono/SkiaSharp/pull/1811)) +- **.NET 6 targets** — Adds `net6.0-*` targets for the binding projects. ([#1707](https://github.com/mono/SkiaSharp/pull/1707), [#1740](https://github.com/mono/SkiaSharp/pull/1740)) +- **Xamarin.Forms on `netcoreapp3.1`** — Adds Xamarin.Forms support on .NET Core 3.1. ([#1774](https://github.com/mono/SkiaSharp/pull/1774)) +- **WindowsAppSDK** — Moves Windows support onto the WindowsAppSDK. ([#1800](https://github.com/mono/SkiaSharp/pull/1800)) +- **Native Asset packages** — Splits the SkiaSharp package into smaller per-platform "Native Asset" packages, with native Windows symbols and `HarfBuzzSharp.NativeAssets.*`. ([#1758](https://github.com/mono/SkiaSharp/pull/1758), [#1797](https://github.com/mono/SkiaSharp/pull/1797)) +- **emscripten 2.0.23** — ❤️ [@jerome.laban](https://github.com/jerome.laban) adds support for emscripten 2.0.23 on WebAssembly. ([#1746](https://github.com/mono/SkiaSharp/pull/1746)) +- **Uno 4.0** — ❤️ [@jerome.laban](https://github.com/jerome.laban) bumps the Uno Platform support to 4.0. ([#1873](https://github.com/mono/SkiaSharp/pull/1873)) +- **Android packaging** — ❤️ [@jonathan.peppers](https://github.com/jonathan.peppers) stops shipping `.so` files in class libraries and trims `Resource.designer.cs` fields. ([#1895](https://github.com/mono/SkiaSharp/pull/1895), [#1812](https://github.com/mono/SkiaSharp/pull/1812)) +- **Debug symbols** — Adds the main PDB files to the packages. ([#1781](https://github.com/mono/SkiaSharp/pull/1781)) + +### Security + +- **Software Bill of Materials** — ❤️ [@mjbond-msft](https://github.com/mjbond-msft) generates an SBOM manifest for the build. ([#1954](https://github.com/mono/SkiaSharp/pull/1954)) ## Bug Fixes -- **Fix NRE in .NET MAUI SKCanvasView** — Resolved a null reference when using the canvas view in MAUI. ❤️ @jsuarezruiz ([#1734](https://github.com/mono/SkiaSharp/pull/1734)) -- **Return empty surface on allocation failure** — Gracefully handle failed surface allocations instead of crashing. ❤️ @richirisu ([#1784](https://github.com/mono/SkiaSharp/pull/1784)) -- **`IsAntialias` now controls Edging** — Setting `IsAntialias` correctly updates the font edging mode. ([#1802](https://github.com/mono/SkiaSharp/pull/1802)) -- **Fix `IgnorePixelScaling` behavior** — Corrected how the `IgnorePixelScaling` property works on views. ([#1804](https://github.com/mono/SkiaSharp/pull/1804)) -- **Prevent infinite loop in Blazor SKCanvasView** — Fixed a rendering loop that could freeze Blazor apps. ❤️ @JensKrumsieck ([#1889](https://github.com/mono/SkiaSharp/pull/1889)) -- **HandleDictionary lock replaced with critical section** — Improved thread-safety on Windows by replacing `lock` with a lightweight critical section. ❤️ @toptensoftware ([#1817](https://github.com/mono/SkiaSharp/pull/1817)) -- **Never dispose native statics** — Prevents crashes from premature disposal of shared native objects. ([#1863](https://github.com/mono/SkiaSharp/pull/1863)) -- **Work around enums not being blittable** — Fixed interop issues with enum types in certain .NET runtimes. ([#1857](https://github.com/mono/SkiaSharp/pull/1857)) -- **LibraryLoader: Try libdl.so.2 before libdl.so on Linux** — Fixes library loading on newer Linux distributions. ❤️ @akoeplinger ([#2010](https://github.com/mono/SkiaSharp/pull/2010)) -- **Android: Don't include .so files in class libraries** — Corrected native library packaging for Android. ❤️ @jonathanpeppers ([#1895](https://github.com/mono/SkiaSharp/pull/1895)) -- **Android: Eliminate unnecessary Resource.designer.cs fields** — Reduced generated code size. ❤️ @jonathanpeppers ([#1812](https://github.com/mono/SkiaSharp/pull/1812)) +- **`IgnorePixelScaling`** — Fixes the behavior of the `IgnorePixelScaling` property. ([#1804](https://github.com/mono/SkiaSharp/pull/1804)) +- **Blazor `SKCanvasView` loop** — ❤️ [@j.krumsieck](https://github.com/j.krumsieck) prevents an infinite loop in the Blazor `SKCanvasView`. ([#1889](https://github.com/mono/SkiaSharp/pull/1889)) +- **MAUI `SKCanvasView` NRE** — ❤️ [@javiersuarezruiz](https://github.com/javiersuarezruiz) guards against a `NullReferenceException` in the .NET MAUI `SKCanvasView`. ([#1734](https://github.com/mono/SkiaSharp/pull/1734)) +- **Linux `libdl` resolution** — ❤️ [@alex.koeplinger](https://github.com/alex.koeplinger) tries `libdl.so.2` before `libdl.so`. ([#2010](https://github.com/mono/SkiaSharp/pull/2010)) +- **Windows handle locking** — ❤️ [@github](https://github.com/github) replaces the `HandleDictionary` lock with a critical section on Windows. ([#1817](https://github.com/mono/SkiaSharp/pull/1817)) +- **Blittable enums** — Works around enums not being blittable. ([#1857](https://github.com/mono/SkiaSharp/pull/1857)) +- **Native statics** — Never disposes the native static objects. ([#1863](https://github.com/mono/SkiaSharp/pull/1863)) +- **Mac Catalyst build** — Fixes the Mac Catalyst build task Inputs/Outputs. ([#1865](https://github.com/mono/SkiaSharp/pull/1865)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | Mac Catalyst support, iOS view background fix, macOS Monterey CI | -| 🪟 Windows | WindowsAppSDK migration, native symbols in packages | -| 🐧 Linux | libdl.so.2 fallback for newer distros | -| 🤖 Android | Leaner .so packaging, reduced Resource.designer.cs | -| 🌐 WebAssembly | Blazor WASM support, Emscripten 2.0.23 | +| 🍎 Apple | Mac Catalyst support | +| 🪟 Windows | WindowsAppSDK, WinUI accelerated views, native symbols, critical-section handle locking | +| 🐧 Linux | `libdl.so.2` resolution | +| 🤖 Android | `.so` files excluded from class libraries, trimmed resources | +| 🌐 WebAssembly | Blazor WASM components, emscripten 2.0.23, Uno 4.0 | +| 🎨 Core API | .NET MAUI views, new drawing APIs, HarfBuzz 2.8.2 | +| 📦 General | .NET 6 targets, Native Asset packages, PDB symbols, SBOM | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@jsuarezruiz](https://github.com/jsuarezruiz) | Fixed NRE in MAUI SKCanvasView | -| [@richirisu](https://github.com/richirisu) | Graceful surface allocation failure handling | -| [@jonathanpeppers](https://github.com/jonathanpeppers) | Android packaging improvements | -| [@toptensoftware](https://github.com/toptensoftware) | HandleDictionary critical section optimization | -| [@JensKrumsieck](https://github.com/JensKrumsieck) | Fixed Blazor infinite loop | -| [@mjbond-msft](https://github.com/mjbond-msft) | SBOM manifest generation | -| [@jeromelaban](https://github.com/jeromelaban) | Emscripten 2.0.23, Uno 4.0 | -| [@akoeplinger](https://github.com/akoeplinger) | Linux libdl.so.2 fallback | +| [@jerome.laban](https://github.com/jerome.laban) | Added emscripten 2.0.23 support and bumped Uno to 4.0 | +| [@jonathan.peppers](https://github.com/jonathan.peppers) | Improved Android packaging and trimmed generated resource fields | +| [@j.krumsieck](https://github.com/j.krumsieck) | Fixed an infinite loop in the Blazor `SKCanvasView` | +| [@javiersuarezruiz](https://github.com/javiersuarezruiz) | Guarded against an NRE in the MAUI `SKCanvasView` | +| [@alex.koeplinger](https://github.com/alex.koeplinger) | Improved `libdl` resolution on Linux | +| [@github](https://github.com/github) | Replaced the `HandleDictionary` lock with a critical section on Windows | +| [@mjbond-msft](https://github.com/mjbond-msft) | Added SBOM manifest generation | ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3...v2.88.0) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.4...v2.88.0) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.88.0) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.88.0) -- [Samples](https://aka.ms/skiasharp/samples) - ---- - -## Preview 256 (May 11, 2022) - -Building with .NET MAUI RC 2. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.254...v2.88.0-preview.256) - ---- - -## Preview 254 (May 11, 2022) - -Updated to .NET MAUI RC 1 and macOS 11 build environment. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.232...v2.88.0-preview.254) - ---- - -## Preview 232 (May 11, 2022) - -SBOM generation, MAUI Preview 14, and CI pipeline improvements. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.209...v2.88.0-preview.232) - ---- - -## Preview 209 (May 11, 2022) - -CI improvements and Mac Catalyst workaround removals. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.187...v2.88.0-preview.209) - ---- - -## Preview 187 (May 11, 2022) - -Android packaging fix and MAUI Preview 12 update. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.179...v2.88.0-preview.187) - ---- - -## Preview 179 (January 18, 2022) - -Uno Platform 4.0 support. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3...v2.88.0-preview.179) - ---- - -## Preview 178 (January 18, 2022) - -HandleDictionary critical section, Blazor infinite loop fix, and native statics disposal fix. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3...v2.88.0-preview.178) - ---- - -## Preview 155 (January 18, 2022) - -Dependency updates across the board. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3...v2.88.0-preview.155) - ---- - -## Preview 152 (October 22, 2021) - -New Skia APIs exposed to C#. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3...v2.88.0-preview.152) - ---- - -## Preview 150 (October 11, 2021) - -ASP.NET Blazor WebAssembly support added. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3...v2.88.0-preview.150) - ---- - -## Preview 145 (September 28, 2021) - -Windows native symbols and HarfBuzzSharp native asset packages. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.140...v2.88.0-preview.145) - ---- - -## Preview 140 (September 28, 2021) - -ANGLE zlib1.dll output fix for Windows GPU rendering. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.139...v2.88.0-preview.140) - ---- - -## Preview 139 (September 13, 2021) - -WindowsAppSDK migration, `IsAntialias`/`IgnorePixelScaling` fixes, and graceful surface allocation failure. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.127...v2.88.0-preview.139) - ---- - -## Preview 127 (September 13, 2021) - -HarfBuzz 2.8.2 update, Xamarin.Forms netcoreapp3.1 support, and PDB files in packages. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.120...v2.88.0-preview.127) - ---- - -## Preview 120 (August 10, 2021) - -Mac Catalyst support, split native asset packages, and Emscripten 2.0.23. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0-preview.61...v2.88.0-preview.120) - ---- - -## Preview 61 (July 12, 2021) - -Initial .NET 6 TFMs and .NET MAUI views with compatibility and handler support. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.80.3...v2.88.0-preview.61) diff --git a/documentation/docfx/releases/2.88.1.md b/documentation/docfx/releases/2.88.1.md index 051a6e4357f..a534686949d 100644 --- a/documentation/docfx/releases/2.88.1.md +++ b/documentation/docfx/releases/2.88.1.md @@ -1,139 +1,141 @@ + + + + # Version 2.88.1 -> **Skottie animations, WinUI, and Tizen support** · Released August 17, 2022 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.1) +> **Skottie & platform release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.1) ## Highlights -This release introduces Skottie (Lottie animation) support as a new standalone package, adds WinUI views for the Uno Platform, brings Tizen as a first-class TFM target, and enables nullable reference type annotations. Native dependencies are updated to address security issues in zlib, libexpat, libwebp, and libjpeg-turbo. Five community contributors made their first contributions. +This release introduces **Skottie**, SkiaSharp's Lottie animation engine, alongside new **WinUI** support and **AVIF** image encoding. It also refreshes the bundled native dependencies (libjpeg-turbo, libwebp, libexpat and zlib) for security and correctness. Skottie, WinUI and several fixes were driven by community contributors including [@jerome.laban](https://github.com/jerome.laban), [@smallville7123](https://github.com/smallville7123), [@koolkdev](https://github.com/koolkdev), [@HarlanHugh](https://github.com/HarlanHugh) and [@RichardD2](https://github.com/RichardD2). -## Breaking Changes +## New Features -*None in this release.* +### Engine -## New Features +- **libjpeg-turbo 2.1.3** — Updates the bundled JPEG decoder. ([#2206](https://github.com/mono/SkiaSharp/pull/2206), skia [mono/skia#97](https://github.com/mono/skia/pull/97)) +- **libwebp 1.2.3** — Updates the bundled WebP codec. ([#2193](https://github.com/mono/SkiaSharp/pull/2193)) +- **libexpat 2.4.8** — Updates the bundled XML parser. ([#2189](https://github.com/mono/SkiaSharp/pull/2189)) +- **zlib PNG fix** — Updates zlib to resolve PNG loading issues. ([#2045](https://github.com/mono/SkiaSharp/pull/2045)) -### API Surface +### Animation -- **Skottie animation support** — New `SkiaSharp.Skottie` package for playing Lottie/Bodymovin animations backed by Skia's Skottie engine, including nullable attributes, `TimeSpan` overloads, non-seekable stream handling, and BOM support. ❤️ @jeromelaban ([#1987](https://github.com/mono/SkiaSharp/pull/1987), [#2091](https://github.com/mono/SkiaSharp/pull/2091), [#2119](https://github.com/mono/SkiaSharp/pull/2119), [#2126](https://github.com/mono/SkiaSharp/pull/2126), [#2167](https://github.com/mono/SkiaSharp/pull/2167)) -- **AVIF image encode format** — Exposed the AVIF encoder for saving images in AVIF format. ❤️ @mgood7123 ([#2154](https://github.com/mono/SkiaSharp/pull/2154)) -- **SKShaper text alignment** — `SKShaper` now respects the `SKPaint.TextAlign` property when shaping text. ❤️ @koolkdev ([#1910](https://github.com/mono/SkiaSharp/pull/1910)) -- **Nullable annotations** — Added nullable reference type annotations and newer TFMs across the library. ([#2120](https://github.com/mono/SkiaSharp/pull/2120)) -- **SKDataStream made writeable** — `SKDataStream` now supports write operations, matching `SKData` behavior. ([#2128](https://github.com/mono/SkiaSharp/pull/2128)) +- **Skottie (Lottie) support** — Adds a managed Skottie binding for playing Lottie/After Effects animations, with nullable annotations, `TimeSpan` overloads and non-seekable stream handling. Skottie and SceneGraph now ship outside the core `SkiaSharp.dll`. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#1987](https://github.com/mono/SkiaSharp/pull/1987), [#2091](https://github.com/mono/SkiaSharp/pull/2091), [#2119](https://github.com/mono/SkiaSharp/pull/2119), [#2126](https://github.com/mono/SkiaSharp/pull/2126)) -### Platform +### Images & Documents -- **WinUI support for Uno** — Added SkiaSharp views for Uno Platform's WinUI target. ❤️ @jeromelaban ([#2042](https://github.com/mono/SkiaSharp/pull/2042)) -- **Tizen TFM** — Added `net6.0-tizen` target framework for Samsung Tizen devices. ([#2099](https://github.com/mono/SkiaSharp/pull/2099)) -- **Emscripten 3.1.7** — Updated WASM builds for Emscripten 3.1.7. ❤️ @jeromelaban ([#2094](https://github.com/mono/SkiaSharp/pull/2094)) -- **Skottie on all .NET 6 platforms** — Skottie available on iOS, Android, Mac Catalyst, macOS, tvOS, and Tizen. ❤️ @jeromelaban ([#2133](https://github.com/mono/SkiaSharp/pull/2133)) +- **AVIF encoding** — Exposes the AVIF image encode format. ❤️ [@smallville7123](https://github.com/smallville7123) ([#2154](https://github.com/mono/SkiaSharp/pull/2154)) +- **Animations with a BOM** — Supports loading animations whose data starts with a byte-order mark. ([#2167](https://github.com/mono/SkiaSharp/pull/2167)) -### Engine +### API Surface + +- **Writeable `SKDataStream`** — Makes `SKDataStream` writeable, matching `SKData`. ([#2128](https://github.com/mono/SkiaSharp/pull/2128)) +- **Nullable annotations & newer TFMs** — Adds nullable reference type annotations and additional target frameworks across the libraries. ([#2120](https://github.com/mono/SkiaSharp/pull/2120)) -- **SKGLView backing scale factor** — `SKGLView` now reshapes when the window's `BackingScaleFactor` changes (e.g., moving between Retina and non-Retina displays). ❤️ @HarlanHugh ([#1854](https://github.com/mono/SkiaSharp/pull/1854)) -- **Internal library configuration** — Added an initial configuration system for internal library settings. ([#1856](https://github.com/mono/SkiaSharp/pull/1856)) +### Text & Fonts -## Security +- **`SKShaper` text alignment** — `SKShaper` now honors the `SKPaint.TextAlign` property. ❤️ [@koolkdev](https://github.com/koolkdev) ([#1910](https://github.com/mono/SkiaSharp/pull/1910)) + +### Platform -- **Update zlib** — Fixed PNG loading issues by updating the bundled zlib. ([#2045](https://github.com/mono/SkiaSharp/pull/2045)) -- **Update libexpat to 2.4.8** — Addresses known vulnerabilities. ([#2189](https://github.com/mono/SkiaSharp/pull/2189)) -- **Update libwebp to 1.2.3** — Addresses known vulnerabilities. ([#2193](https://github.com/mono/SkiaSharp/pull/2193)) -- **Update libjpeg-turbo to 2.1.3** — Addresses known vulnerabilities. ([#2206](https://github.com/mono/SkiaSharp/pull/2206)) +- **WinUI support** — Adds a WinUI rendering backend. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2042](https://github.com/mono/SkiaSharp/pull/2042)) +- **emscripten 3.1.7** — Updates the WebAssembly toolchain to emscripten 3.1.7. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2094](https://github.com/mono/SkiaSharp/pull/2094)) +- **`net6.0-tizen` TFM** — Adds a `net6.0-tizen` target framework. ([#2099](https://github.com/mono/SkiaSharp/pull/2099)) ## Bug Fixes -- **Return null on invalid resize bounds** — Prevents crashes when calling resize with invalid dimensions. ([#2054](https://github.com/mono/SkiaSharp/pull/2054)) -- **Fix Alpine Linux builds** — Corrected native library loading on Alpine/musl-based distributions. ([#2168](https://github.com/mono/SkiaSharp/pull/2168), [#2192](https://github.com/mono/SkiaSharp/pull/2192)) -- **Fix critical section after deletion** — Prevents accessing a deleted critical section during HandleDictionary cleanup. ❤️ @RichardD2 ([#2195](https://github.com/mono/SkiaSharp/pull/2195)) -- **Fix font loading with Unicode names** — Fonts with Unicode characters in their names now load correctly. ❤️ @lindexi ([#2146](https://github.com/mono/SkiaSharp/pull/2146)) -- **Use full libc library name** — Fixes P/Invoke resolution on certain Linux configurations. ([#2213](https://github.com/mono/SkiaSharp/pull/2213)) +- **Fixed loading fonts with Unicode names** — Resolves failures loading fonts whose file name contains Unicode text. ([#2146](https://github.com/mono/SkiaSharp/pull/2146)) +- **Fixed Alpine builds** — Corrects the Alpine Linux build. ([#2168](https://github.com/mono/SkiaSharp/pull/2168), [#2192](https://github.com/mono/SkiaSharp/pull/2192)) +- **Guarded finalized locks** — Checks whether a lock has been finalized before entering or leaving the critical section. ❤️ [@RichardD2](https://github.com/RichardD2) ([#2195](https://github.com/mono/SkiaSharp/pull/2195)) +- **Reshaped `SKGLView` on scale change** — Reshapes the view when `Window.BackingScaleFactor` changes (#1853). ❤️ [@HarlanHugh](https://github.com/HarlanHugh) ([#1854](https://github.com/mono/SkiaSharp/pull/1854)) +- **Returned null on invalid resize bounds** — Avoids errors when resize bounds are invalid. ([#2054](https://github.com/mono/SkiaSharp/pull/2054)) +- **Implemented the missing macioS feature** — Fills in functionality that was previously unimplemented on Mac/iOS. ([#2198](https://github.com/mono/SkiaSharp/pull/2198)) +- **Fixed Uno Roslyn generation** — Forces Uno's Roslyn-hosted generators and adds the missing Uno.WinUI JavaScript support file. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2199](https://github.com/mono/SkiaSharp/pull/2199), [#2086](https://github.com/mono/SkiaSharp/pull/2086)) + +Plus the C API increment, newer .NET targeting and numerous CI and packaging improvements. ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | Skottie on iOS/macOS/tvOS/Mac Catalyst, SKGLView backing scale fix | -| 🪟 Windows | WinUI views for Uno Platform | -| 🐧 Linux | Alpine build fixes, full libc name resolution | -| 🤖 Android | Skottie support | -| 🌐 WebAssembly | Emscripten 3.1.7, Uno WinUI WASM support | +| 🪟 Windows | WinUI rendering backend | +| 🌐 WebAssembly | emscripten 3.1.7, Uno.WinUI support | +| 🤖 Tizen | `net6.0-tizen` target framework | +| 🎨 Core API | Skottie animation engine, AVIF encoding, writeable `SKDataStream`, nullable annotations | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@jeromelaban](https://github.com/jeromelaban) | Skottie support, WinUI, Emscripten 3.1.7, multi-platform Skottie | -| [@koolkdev](https://github.com/koolkdev) | SKShaper text alignment support | -| [@mgood7123](https://github.com/mgood7123) | AVIF encode format | -| [@HarlanHugh](https://github.com/HarlanHugh) | SKGLView backing scale factor reshape | -| [@lindexi](https://github.com/lindexi) | Unicode font name loading fix | -| [@RichardD2](https://github.com/RichardD2) | Critical section deletion fix | +| [@jerome.laban](https://github.com/jerome.laban) | Basic Skottie support, WinUI backend, emscripten 3.1.7, Skottie TFMs, Uno fixes, CI retries | +| [@smallville7123](https://github.com/smallville7123) | Exposed AVIF encoding and tidied `.gitignore` | +| [@koolkdev](https://github.com/koolkdev) | Added `SKPaint.TextAlign` support to `SKShaper` | +| [@HarlanHugh](https://github.com/HarlanHugh) | Reshaped `SKGLView` on backing-scale changes | +| [@RichardD2](https://github.com/RichardD2) | Guarded against entering a finalized lock | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0...v2.88.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.88.1) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.88.1) - ---- - -## Preview 108 (August 12, 2022) - -Internal library configuration, full libc library name, and .NET updates. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.1-preview.104...v2.88.1-preview.108) - ---- - -## Preview 104 (August 10, 2022) - -Security updates for libexpat, libwebp, and libjpeg-turbo. Alpine build fixes and Unicode font name loading. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.1-preview.91...v2.88.1-preview.104) - ---- - -## Preview 91 (August 4, 2022) - -AVIF encode format, Skottie BOM support, Alpine build fixes, and XML documentation improvements. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.1-preview.79...v2.88.1-preview.91) - ---- - -## Preview 79 (August 4, 2022) - -SKDataStream writeable, Skottie on all .NET 6 platform TFMs. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.1-preview.75...v2.88.1-preview.79) - ---- - -## Preview 75 (August 4, 2022) - -SKGLView backing scale factor reshape and Skottie non-seekable stream handling. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.1-preview.71...v2.88.1-preview.75) - ---- - -## Preview 71 (August 4, 2022) - -Nullable annotations and Skottie API improvements with TimeSpan overloads. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.1-preview.63...v2.88.1-preview.71) - ---- - -## Preview 63 (August 4, 2022) - -Skottie animation support, WinUI for Uno, Tizen TFM, SKShaper text alignment, and Emscripten 3.1.7. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.1-preview.1...v2.88.1-preview.63) - ---- - -## Preview 1 (May 22, 2022) - -Initial preview with zlib fix for PNG loading issues. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.0...v2.88.1-preview.1) diff --git a/documentation/docfx/releases/2.88.2.md b/documentation/docfx/releases/2.88.2.md index 395b881321a..6703d6f22ed 100644 --- a/documentation/docfx/releases/2.88.2.md +++ b/documentation/docfx/releases/2.88.2.md @@ -1,33 +1,55 @@ + + + + # Version 2.88.2 -> **Tizen backend fix and Apple rect conversion** · Released September 8, 2022 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.2) +> **Platform fixes release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.2) ## Highlights -A focused patch release with three targeted fixes: Tizen's graphics backend engine is updated for better rendering, an unused native library block is cleaned up from the Uno WinUI packages, and `SKRect` to `CGRect` conversion on Apple platforms is corrected. One new community contributor joined. +This release corrects Apple coordinate conversion and brings two community-driven platform fixes for Uno Platform and Tizen. Thanks to [@jerome.laban](https://github.com/jerome.laban) and [@sngn.lee](https://github.com/sngn.lee) for their contributions. + +## New Features -## Breaking Changes +### Platform -*None in this release.* +- **Tizen graphics backend** — Changes the Tizen graphics backend engine for improved rendering on the platform. ❤️ [@sngn.lee](https://github.com/sngn.lee) ([#2225](https://github.com/mono/SkiaSharp/pull/2225)) ## Bug Fixes -- **Tizen graphics backend engine change** — Switched the Tizen graphics backend for improved rendering behavior. ❤️ @myroot ([#2225](https://github.com/mono/SkiaSharp/pull/2225)) -- **Remove unused native library block from Uno views** — Cleaned up unnecessary native library references in `SkiaSharp.Views.Uno.UI/WinUI`. ❤️ @jeromelaban ([#2231](https://github.com/mono/SkiaSharp/pull/2231)) -- **Fix SKRect to CGRect conversion** — Corrected the conversion between SkiaSharp rectangles and Apple Core Graphics rectangles on iOS/macOS. ([#2243](https://github.com/mono/SkiaSharp/pull/2243)) +- **Correct `SKRect` to `CGRect` conversion** — Fixes incorrect coordinate conversion when interoperating with Apple's `CGRect`. ([#2243](https://github.com/mono/SkiaSharp/pull/2243)) +- **Removed unused native library block in Uno WinUI** — Drops a stale native library reference from `SkiaSharp.Views.Uno.WinUI`. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2231](https://github.com/mono/SkiaSharp/pull/2231)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | Fixed `SKRect` to `CGRect` conversion | +| 🍎 Apple | Correct `SKRect` → `CGRect` conversion | +| 📦 Tizen | New graphics backend engine | +| 🎨 Uno Platform | Removed unused native library block (WinUI) | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@myroot](https://github.com/myroot) | Tizen graphics backend update | -| [@jeromelaban](https://github.com/jeromelaban) | Uno WinUI cleanup | +| [@jerome.laban](https://github.com/jerome.laban) | Removed an unused native library block from `SkiaSharp.Views.Uno.WinUI` | +| [@sngn.lee](https://github.com/sngn.lee) | Changed the Tizen graphics backend engine | ## Links diff --git a/documentation/docfx/releases/2.88.3.md b/documentation/docfx/releases/2.88.3.md index b0361c8e411..7d4a708b3a3 100644 --- a/documentation/docfx/releases/2.88.3.md +++ b/documentation/docfx/releases/2.88.3.md @@ -1,45 +1,68 @@ + + + + # Version 2.88.3 -> **.NET 7 and Blazor support** · Released October 4, 2022 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.3) +> **.NET 7 and WebAssembly improvements** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.3) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.3) ## Highlights -This release adds .NET 7 build infrastructure and Blazor view support, updates the WASM backend to Emscripten 3.1.12 with SIMD features, fixes a Linux native library loading issue with `RTLD_DEEPBIND`, and corrects stream skip behavior. One new community contributor joined. - -## Breaking Changes - -*None in this release.* +This release adds .NET 7 support for Blazor views and the build infrastructure behind it, upgrades the WebAssembly build to Emscripten 3.1.12 with SIMD features, and improves GL interop for .NET. Community contributors [@jerome.laban](https://github.com/jerome.laban) and [@snnz](https://github.com/snnz) drove the WebAssembly and Linux loader improvements. ## New Features -### Platform +### GPU & Rendering -- **.NET 7 build infrastructure** — Added build support for the .NET 7 SDK and runtime. ([#2255](https://github.com/mono/SkiaSharp/pull/2255)) -- **.NET 7 Blazor views** — SkiaSharp Blazor views now target .NET 7. ([#2254](https://github.com/mono/SkiaSharp/pull/2254)) -- **Emscripten 3.1.12 with SIMD** — WASM builds updated with Emscripten 3.1.12 and SIMD feature support for improved performance. ❤️ @jeromelaban ([#2259](https://github.com/mono/SkiaSharp/pull/2259)) +- **GL interception for .NET** — Intercepts and captures GL for .NET. ([#2268](https://github.com/mono/SkiaSharp/pull/2268)) -### Engine +### Platform -- **GL interception for .NET** — Intercept and capture OpenGL contexts for .NET-based GPU rendering. ([#2268](https://github.com/mono/SkiaSharp/pull/2268)) +- **.NET 7 Blazor views** — Adds .NET 7 support for Blazor views, along with the supporting build infrastructure. ([#2254](https://github.com/mono/SkiaSharp/pull/2254), [#2255](https://github.com/mono/SkiaSharp/pull/2255)) +- **Emscripten 3.1.12 with SIMD** — Generates for Emscripten 3.1.12 and enables SIMD features for WebAssembly. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2259](https://github.com/mono/SkiaSharp/pull/2259)) +- **`RTLD_DEEPBIND` dlopen flag** — Adds the `RTLD_DEEPBIND` flag to the `dlopen` mode on Linux. ❤️ [@snnz](https://github.com/snnz) ([#2247](https://github.com/mono/SkiaSharp/pull/2247)) ## Bug Fixes -- **Add `RTLD_DEEPBIND` flag to `dlopen`** — Prevents symbol conflicts when loading native libraries on Linux. ❤️ @snnz ([#2247](https://github.com/mono/SkiaSharp/pull/2247)) -- **Fix stream skip implementation** — Stream skip operations now correctly read to a null buffer instead of seeking, fixing issues with non-seekable streams. ([#2265](https://github.com/mono/SkiaSharp/pull/2265)) +- **WASM archive lookup** — Fixes invalid globbing for the 3.1.12 archive lookup. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2269](https://github.com/mono/SkiaSharp/pull/2269)) +- **Null-buffer skip** — Treats a skip as a read into a null buffer. ([#2265](https://github.com/mono/SkiaSharp/pull/2265)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🐧 Linux | `RTLD_DEEPBIND` for safer native library loading | -| 🌐 WebAssembly | Emscripten 3.1.12, SIMD features, .NET 7 Blazor | +| 🌐 WebAssembly | Emscripten 3.1.12 with SIMD, archive lookup fix | +| 📦 General | .NET 7 Blazor views and build infrastructure, GL interception | +| 🐧 Linux | `RTLD_DEEPBIND` dlopen flag | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@snnz](https://github.com/snnz) | `RTLD_DEEPBIND` flag for Linux `dlopen` | -| [@jeromelaban](https://github.com/jeromelaban) | Emscripten 3.1.12 and SIMD features | +| [@jerome.laban](https://github.com/jerome.laban) | Upgraded WebAssembly to Emscripten 3.1.12 with SIMD and fixed archive lookup | +| [@snnz](https://github.com/snnz) | Added the `RTLD_DEEPBIND` dlopen flag on Linux | ## Links diff --git a/documentation/docfx/releases/2.88.4.md b/documentation/docfx/releases/2.88.4.md index 8e0afe44c7e..9cfd6056103 100644 --- a/documentation/docfx/releases/2.88.4.md +++ b/documentation/docfx/releases/2.88.4.md @@ -1,120 +1,148 @@ + + + + # Version 2.88.4 -> **.NET 8 preview, ARM64 macOS, and security updates** · Released August 22, 2023 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.4) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.4) +> **Apple Silicon & WebAssembly release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.4) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.4) ## Highlights -A substantial servicing release spanning nearly a year of work. Key additions include .NET 8 preview support, ARM64 macOS build machines, WASM multi-threading with SIMD, and Android `.aar` shipping in NuGet. Security updates cover zlib, libpng, and libexpat. Ten new community contributors helped fix disposal bugs, improve performance, and refine Uno Platform integration. +This release adds native support for ARM64 (Apple Silicon) macOS machines and brings a wave of WebAssembly improvements — including exception handling, SIMD, and multithreading across .NET 7 and .NET 8 targets. It also refreshes core native dependencies for security and lands a large number of community-driven Uno, MAUI, and Tizen fixes. -## Breaking Changes +## New Features -*None in this release.* +### Engine -## New Features +- **Updated native dependencies** — Bumps libpng to v1.6.40 and libexpat to 2.5.0+ for security and stability. ([#2510](https://github.com/mono/SkiaSharp/pull/2510)) +- **Updated zlib to 1.2.13** — Refreshes the bundled zlib for the latest fixes. ([#2484](https://github.com/mono/SkiaSharp/pull/2484)) ### Platform -- **.NET 8 Preview support** — Build infrastructure updated for .NET 8 Preview 4. ❤️ @jeromelaban ([#2457](https://github.com/mono/SkiaSharp/pull/2457)) -- **ARM64 macOS build machines** — Native builds now run on Apple Silicon (ARM64) macOS machines. ([#2468](https://github.com/mono/SkiaSharp/pull/2468)) -- **WASM multi-threading and SIMD** — Added multi-threaded and multi-threaded+SIMD WASM configurations. ❤️ @jeromelaban ([#2286](https://github.com/mono/SkiaSharp/pull/2286)) -- **WASM Exception Handling and SIMD for .NET 8+** — Enabled Wasm EH and SIMD in all configurations for .NET 8 and later. ❤️ @jeromelaban ([#2495](https://github.com/mono/SkiaSharp/pull/2495)) -- **Blazor .NET 8 assets** — New WASM assets included for Blazor on .NET 8. ([#2497](https://github.com/mono/SkiaSharp/pull/2497)) -- **JSImport for WinUI on .NET 7** — Moved from JS interop to modern `JSImport` for Uno WinUI WASM targets. ❤️ @jeromelaban ([#2428](https://github.com/mono/SkiaSharp/pull/2428)) -- **Ship .aar with Android NuGet** — Android Archive (`.aar`) now included in the NuGet for better Android tooling integration. ❤️ @dellis1972 ([#2465](https://github.com/mono/SkiaSharp/pull/2465)) -- **iOS Hot Restart NativeReference** — Added `NativeReference` metadata so iOS Hot Restart works correctly. ([#2553](https://github.com/mono/SkiaSharp/pull/2553)) -- **iOS Simulator RID artifacts** — The `iossimulator` RID now ships native assets. ([#2498](https://github.com/mono/SkiaSharp/pull/2498)) -- **Windows App SDK update** — Bumped to a newer Windows App SDK. ([#2276](https://github.com/mono/SkiaSharp/pull/2276)) +- **ARM64 macOS support** — Adds support for Apple Silicon (ARM64) macOS machines. ([#2468](https://github.com/mono/SkiaSharp/pull/2468)) +- **JSImport for WinUI on net7.0** — Moves the WASM WinUI target to JSImport. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2428](https://github.com/mono/SkiaSharp/pull/2428)) +- **WASM exception handling & SIMD** — Enables WebAssembly exception handling and SIMD in all configurations for net8+. ❤️ [@jlaban](https://github.com/jlaban) ([#2495](https://github.com/mono/SkiaSharp/pull/2495)) +- **WASM multithreading & SIMD** — Adds `mt` and `mt+simd` variants and fixes HarfBuzz for emsdk 3.1.12. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2286](https://github.com/mono/SkiaSharp/pull/2286)) +- **Blazor WASM assets for .NET 8** — Ships the new WASM assets in Blazor for .NET 8. ([#2497](https://github.com/mono/SkiaSharp/pull/2497)) +- **Uno.WinUI target resolution** — Disambiguates `SKGLView` for Uno and MAUI targets and adjusts net7.0 resolution for Uno.WinUI. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2529](https://github.com/mono/SkiaSharp/pull/2529), [#2503](https://github.com/mono/SkiaSharp/pull/2503)) +- **Android .aar packaging** — Ships the `.aar` with the Android NuGet. ❤️ [@dellis1972](https://github.com/dellis1972) ([#2465](https://github.com/mono/SkiaSharp/pull/2465)) +- **Hot Restart support** — Includes the `NativeReference` for Hot Restart. ([#2553](https://github.com/mono/SkiaSharp/pull/2553)) +- **.NET 8 Preview 4 support** — Adds support for .NET 8 Preview 4. ❤️ [@jlaban](https://github.com/jlaban) ([#2457](https://github.com/mono/SkiaSharp/pull/2457)) +- **.NET iOS & Mac Catalyst samples** — Adds a .NET iOS & Mac Catalyst sample and .NET "Core" sample support. ([#2491](https://github.com/mono/SkiaSharp/pull/2491)) -### Engine +### API Surface -- **SKColor hex parsing performance** — Significantly improved hex string parsing performance for `SKColor`. ❤️ @jwikberg ([#2467](https://github.com/mono/SkiaSharp/pull/2467)) -- **CodeQL security scanning** — Enabled CodeQL analysis in CI for automated vulnerability detection. ❤️ @Redth ([#2303](https://github.com/mono/SkiaSharp/pull/2303)) -- **CVE binary tool scanning** — Added `cve-bin-tool` to CI for detecting known vulnerabilities in native binaries. ([#2490](https://github.com/mono/SkiaSharp/pull/2490)) +- **Faster SKColor hex parsing** — Improves the performance of hex string parsing in `SKColor`. ❤️ [@jwikberg](https://github.com/jwikberg) ([#2467](https://github.com/mono/SkiaSharp/pull/2467)) +- **Code cleanup** — Reduces nesting levels using block-scoped `using` statements. ❤️ [@Lehonti](https://github.com/Lehonti) ([#2528](https://github.com/mono/SkiaSharp/pull/2528)) -## Security +### Security -- **Update zlib to 1.2.13** — Addresses known vulnerabilities in the compression library. ([#2484](https://github.com/mono/SkiaSharp/pull/2484)) -- **Update libpng to v1.6.40** — Addresses known vulnerabilities. ([#2510](https://github.com/mono/SkiaSharp/pull/2510)) -- **Update libexpat to 2.5.0** — Addresses known vulnerabilities. ([#2510](https://github.com/mono/SkiaSharp/pull/2510)) +- **Enabled CodeQL** — Adds CodeQL static analysis to the build. ❤️ [@jondick](https://github.com/jondick) ([#2303](https://github.com/mono/SkiaSharp/pull/2303)) +- **CVE scanning** — Runs `cve-bin-tool` against native binaries. ([#2490](https://github.com/mono/SkiaSharp/pull/2490)) ## Bug Fixes -- **Fix Tizen canvas size calculation** — Corrected how canvas dimensions are computed on Tizen. ❤️ @myroot ([#2322](https://github.com/mono/SkiaSharp/pull/2322)) -- **Fix Android ObjectDisposedException** — Added additional checks to avoid `ObjectDisposedException` on Android views. ❤️ @FoggyFinder ([#2313](https://github.com/mono/SkiaSharp/pull/2313)) -- **Fix SKCanvasView dispose before render** — Prevents exceptions when the view is disposed before its first render. ❤️ @jjzhang12 ([#2472](https://github.com/mono/SkiaSharp/pull/2472)) -- **Fix `ToRect` extension method** — Corrected the `ToRect` extension to return proper values. ❤️ @niza93 ([#2392](https://github.com/mono/SkiaSharp/pull/2392)) -- **Fix Uno opaque defaults on iOS/macOS** — Set `SKSwapChainPanel` and `SKXamlCanvas` to non-opaque by default for consistency. ❤️ @roubachof ([#2398](https://github.com/mono/SkiaSharp/pull/2398), [#2400](https://github.com/mono/SkiaSharp/pull/2400), [#2401](https://github.com/mono/SkiaSharp/pull/2401)) -- **Fix macOS opaque method** — Used the correct method for setting `Opaque` on macOS. ([#2477](https://github.com/mono/SkiaSharp/pull/2477)) -- **Fix bitmap SKAlphaType in WASM** — Corrected alpha type when rendering bitmaps in `SKXamlCanvas` on WASM. ❤️ @roubachof ([#2443](https://github.com/mono/SkiaSharp/pull/2443)) -- **Disambiguate SKGLView for Uno/MAUI** — Resolved type conflicts between Uno and MAUI `SKGLView` targets. ❤️ @jeromelaban ([#2529](https://github.com/mono/SkiaSharp/pull/2529)) +- **Fixed `ToRect` extension method** — Corrects the `ToRect` extension. ❤️ [@niza93](https://github.com/niza93) ([#2392](https://github.com/mono/SkiaSharp/pull/2392)) +- **Fixed `SKCanvasView` dispose exception** — Resolves an exception when the view is disposed before it has rendered. ❤️ [@jjzhang12](https://github.com/jjzhang12) ([#2472](https://github.com/mono/SkiaSharp/pull/2472)) +- **Added guard against exception** — Adds an additional check to avoid an exception. ❤️ [@FoggyFinder](https://github.com/FoggyFinder) ([#2313](https://github.com/mono/SkiaSharp/pull/2313)) +- **Fixed Tizen canvas size calculation** — Corrects the canvas size calculation on Tizen. ❤️ [@sngn.lee](https://github.com/sngn.lee) ([#2322](https://github.com/mono/SkiaSharp/pull/2322)) +- **Corrected macOS Opaque handling** — Uses the correct method for setting `Opaque` on macOS. ([#2477](https://github.com/mono/SkiaSharp/pull/2477)) +- **Uno: SKXamlCanvas alpha type & Opaque** — Updates the bitmap `SKAlphaType` in `SKXamlCanvas.Wasm`, defaults `Opaque` to false on macOS and iOS, and updates the `SKSwapChainPanel` for Android and iOS. ❤️ [@jm.alfonsi](https://github.com/jm.alfonsi) ([#2443](https://github.com/mono/SkiaSharp/pull/2443), [#2398](https://github.com/mono/SkiaSharp/pull/2398), [#2400](https://github.com/mono/SkiaSharp/pull/2400), [#2401](https://github.com/mono/SkiaSharp/pull/2401)) + +Plus several CI, build, and tooling improvements, including pipeline fixes from [@pecolli](https://github.com/pecolli) ([#2393](https://github.com/mono/SkiaSharp/pull/2393), [#2389](https://github.com/mono/SkiaSharp/pull/2389)) and a `cgmanifest.json` schema from [@jamie.magee](https://github.com/jamie.magee) ([#2232](https://github.com/mono/SkiaSharp/pull/2232)). ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | ARM64 macOS builds, iOS Hot Restart support, iOS Simulator RID, opaque fix | -| 🪟 Windows | Updated Windows App SDK | -| 🤖 Android | `.aar` in NuGet, `ObjectDisposedException` fix, canvas dispose fix | -| 🌐 WebAssembly | Multi-threading, SIMD, .NET 8 Blazor, JSImport for WinUI, alpha type fix | +| 🍎 Apple | ARM64 (Apple Silicon) macOS support, iOS & Mac Catalyst samples, macOS Opaque fix | +| 🌐 WebAssembly | Exception handling, SIMD, multithreading, JSImport, Blazor .NET 8 assets | +| 🤖 Android | `.aar` shipped with the NuGet, SwapChainPanel fixes | +| 📱 Tizen | Canvas size calculation fix | +| 🎨 Core API | Faster `SKColor` hex parsing, `ToRect` fix | +| 🏗️ Build/CI | CodeQL, CVE scanning, refreshed native dependencies | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@Redth](https://github.com/Redth) | CodeQL security scanning | -| [@roubachof](https://github.com/roubachof) | Uno opaque defaults and WASM alpha type fixes | -| [@dellis1972](https://github.com/dellis1972) | Android `.aar` in NuGet | -| [@FoggyFinder](https://github.com/FoggyFinder) | Android `ObjectDisposedException` guard | -| [@jjzhang12](https://github.com/jjzhang12) | SKCanvasView dispose-before-render fix | -| [@jwikberg](https://github.com/jwikberg) | SKColor hex parsing performance | -| [@niza93](https://github.com/niza93) | `ToRect` extension method fix | -| [@JamieMagee](https://github.com/JamieMagee) | `$schema` for `cgmanifest.json` | -| [@Lehonti](https://github.com/Lehonti) | Code cleanup with block-scoped `using` | -| [@myroot](https://github.com/myroot) | Tizen canvas size fix | -| [@jeromelaban](https://github.com/jeromelaban) | WASM MT+SIMD, .NET 8, JSImport, SKGLView disambiguation | +| [@jerome.laban](https://github.com/jerome.laban) | WASM multithreading/SIMD, JSImport WinUI target, Uno target resolution, HarfBuzz fix | +| [@jlaban](https://github.com/jlaban) | WASM exception handling & SIMD, .NET 8 Preview 4 support | +| [@jm.alfonsi](https://github.com/jm.alfonsi) | Uno SKXamlCanvas alpha type & Opaque defaults, SwapChainPanel updates | +| [@dellis1972](https://github.com/dellis1972) | Shipped the Android `.aar` with the NuGet | +| [@jwikberg](https://github.com/jwikberg) | Improved `SKColor` hex string parsing performance | +| [@niza93](https://github.com/niza93) | Fixed the `ToRect` extension method | +| [@jjzhang12](https://github.com/jjzhang12) | Fixed `SKCanvasView` dispose exception | +| [@FoggyFinder](https://github.com/FoggyFinder) | Added a guard against an exception | +| [@sngn.lee](https://github.com/sngn.lee) | Fixed Tizen canvas size calculation | +| [@Lehonti](https://github.com/Lehonti) | Reduced nesting with block-scoped `using` statements | +| [@jondick](https://github.com/jondick) | Enabled CodeQL static analysis | +| [@pecolli](https://github.com/pecolli) | CI pipeline improvements | +| [@jamie.magee](https://github.com/jamie.magee) | Added a `$schema` to `cgmanifest.json` | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.3...v2.88.4) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.88.4) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.88.4) - ---- - -## Preview 96 (August 22, 2023) - -.NET SDK version tracking improvements. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.4-preview.95...v2.88.4-preview.96) - ---- - -## Preview 95 (August 22, 2023) - -Updated libpng and libexpat, SKGLView disambiguation for Uno/MAUI, and iOS Hot Restart support. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.4-preview.82...v2.88.4-preview.95) - ---- - -## Preview 82 (June 26, 2023) - -Blazor .NET 8 assets, `ToRect` fix, JSImport for WinUI, and iOS Simulator RID. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.4-preview.76...v2.88.4-preview.82) - ---- - -## Preview 76 (June 19, 2023) - -ARM64 macOS builds, SKColor hex parsing performance, and WASM EH+SIMD for .NET 8. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.4-preview.70...v2.88.4-preview.76) - ---- - -## Preview 70 (June 16, 2023) - -Initial preview with .NET 5 SDK removal, Windows App SDK update, WASM multi-threading, zlib 1.2.13, CodeQL scanning, and multiple Uno/Android/Tizen bug fixes. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.3...v2.88.4-preview.70) +- [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.4) diff --git a/documentation/docfx/releases/2.88.5.md b/documentation/docfx/releases/2.88.5.md index 59bccd5f7b6..6dc2ccfca21 100644 --- a/documentation/docfx/releases/2.88.5.md +++ b/documentation/docfx/releases/2.88.5.md @@ -1,27 +1,42 @@ -# Version 2.88.5 + + + -SkiaSharp 2.88.5 is a targeted patch release that fixes canvas rendering issues on the Uno Platform (including WebAssembly) and corrects outward rounding when converting `SKRect` to `SKRectI`. One community contributor drove two of the three fixes. +# Version 2.88.5 + +> **Uno Platform and rectangle conversion fixes** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.5) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.5) -## Breaking Changes +## Highlights -*None in this release.* +A targeted patch release that fixes canvas rendering on the Uno Platform (including WebAssembly) and corrects outward rounding when converting `SKRect` to `SKRectI`. [@jeromelaban](https://github.com/jeromelaban) drove the Uno and WASM fixes. ## Bug Fixes -- **Uno canvas context not active during rendering** — Fixed an issue where the canvas GL context was not properly activated before rendering on Uno Platform targets. ❤️ @jeromelaban ([#2560](https://github.com/mono/SkiaSharp/pull/2560)) -- **WASM canvas lookup failure** — `SKXamlCanvas` on WebAssembly no longer throws when the underlying canvas element cannot be found. ❤️ @jeromelaban ([#2564](https://github.com/mono/SkiaSharp/pull/2564)) -- **`SKRect` to `SKRectI` rounding** — `SKRect` now floors outward correctly when converting to `SKRectI`, preventing off-by-one pixel clipping. ([#2574](https://github.com/mono/SkiaSharp/pull/2574)) +- **Uno canvas context not active during rendering** — Ensures the canvas GL context is active before rendering on Uno Platform targets. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2560](https://github.com/mono/SkiaSharp/pull/2560)) +- **WASM canvas lookup failure** — `SKXamlCanvas` on WebAssembly no longer fails when the underlying canvas element cannot be found. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2564](https://github.com/mono/SkiaSharp/pull/2564)) +- **`SKRect` → `SKRectI` rounding** — Now floors outward correctly when converting to `SKRectI`, preventing off-by-one pixel clipping. ([#2574](https://github.com/mono/SkiaSharp/pull/2574)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🌐 WebAssembly | Canvas lookup failure fix for WASM targets | -| 🎨 Core API | Correct outward rounding for `SKRect` → `SKRectI` conversion | +| 🌐 WebAssembly | Canvas lookup and Uno context rendering fixes | +| 🎨 Core API | Correct outward rounding for `SKRect` → `SKRectI` | ## Community Contributors ❤️ diff --git a/documentation/docfx/releases/2.88.6.md b/documentation/docfx/releases/2.88.6.md index f0aefb4b168..ee9f02916a5 100644 --- a/documentation/docfx/releases/2.88.6.md +++ b/documentation/docfx/releases/2.88.6.md @@ -1,50 +1,58 @@ + + + + # Version 2.88.6 -> **Native dependency updates and WASM compatibility** · Released September 21, 2023 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.6) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.6) +> **Dependency & hardening release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.6) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.6) ## Highlights -SkiaSharp 2.88.6 updates several bundled native libraries — HarfBuzz to 7.3.0, libjpeg-turbo to 3.0.0, and libwebp to 1.3.2 — keeping the dependency chain current and addressing known issues. The release also restores non-SIMD WebAssembly builds needed for Microsoft Edge Enhanced Security mode and Safari compatibility. +This servicing release refreshes the bundled native image and text dependencies — WebP, HarfBuzz, and libjpeg-turbo — and restores no-SIMD builds needed for Microsoft Edge's enhanced security mode and Safari. -## Breaking Changes +## New Features -*None in this release.* +### Engine -## New Features +- **WebP 1.3.2** — Updates the bundled libwebp to 1.3.2. ([#2623](https://github.com/mono/SkiaSharp/pull/2623)) +- **HarfBuzz 7.3.0** — Updates the bundled HarfBuzz to 7.3.0. ([#2577](https://github.com/mono/SkiaSharp/pull/2577)) +- **libjpeg-turbo 3.0.0** — Updates the bundled libjpeg-turbo to 3.0.0. ([#2581](https://github.com/mono/SkiaSharp/pull/2581)) -### Dependencies +### Security -- **HarfBuzz updated to 7.3.0** — Bumped the bundled HarfBuzz text-shaping library. ([#2577](https://github.com/mono/SkiaSharp/pull/2577)) -- **libjpeg-turbo updated to 3.0.0** — Bumped the bundled JPEG codec library. ([#2581](https://github.com/mono/SkiaSharp/pull/2581)) -- **libwebp updated to 1.3.2** — Bumped the bundled WebP codec library. ([#2623](https://github.com/mono/SkiaSharp/pull/2623)) +- **Restore no-SIMD builds** — Restores the no-SIMD native builds required by Microsoft Edge's enhanced security mode and Safari. ([#2618](https://github.com/mono/SkiaSharp/pull/2618)) ## Bug Fixes -- **Restore non-SIMD WASM builds** — Re-added non-SIMD WebAssembly builds required for Edge Enhanced Security mode and older Safari versions. ❤️ @jeromelaban ([#2618](https://github.com/mono/SkiaSharp/pull/2618)) +- **Remove unused arm64e architecture** — Drops the unused `arm64e` slice from native builds. ([#2590](https://github.com/mono/SkiaSharp/pull/2590)) +- **Drop unused libjpeg** — Removes the unused libjpeg dependency. ([#2589](https://github.com/mono/SkiaSharp/pull/2589)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🌐 WebAssembly | Non-SIMD builds restored for Edge Enhanced Security and Safari compatibility | -| 🍎 Apple | Removed unused arm64e architecture slice | - -## Community Contributors ❤️ - -| Contributor | What They Did | -|-------------|--------------| -| [@jeromelaban](https://github.com/jeromelaban) | Restored non-SIMD WASM builds for browser compatibility | +| 🏗️ Build/CI | WebP, HarfBuzz, libjpeg-turbo updates; no-SIMD builds restored | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.5...v2.88.6) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.88.6) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.88.6) - ---- - -## Preview 1 (August 31, 2023) - -Updated HarfBuzz to 7.3.0 and libjpeg-turbo to 3.0.0, and removed the unused arm64e Apple architecture slice. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.5...v2.88.6-preview.1.2) diff --git a/documentation/docfx/releases/2.88.7.md b/documentation/docfx/releases/2.88.7.md index 9450db8c666..e165acbb6bc 100644 --- a/documentation/docfx/releases/2.88.7.md +++ b/documentation/docfx/releases/2.88.7.md @@ -1,18 +1,42 @@ + + + + # Version 2.88.7 > **libjpeg-turbo rollback for stability** · Released January 11, 2024 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.7) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.7) ## Highlights -SkiaSharp 2.88.7 reverts the libjpeg-turbo update from 2.88.6 back to version 2.1.5.1 to address compatibility issues introduced by the 3.0.0 upgrade. This is a focused stability patch with no other user-facing changes. +A focused stability patch that reverts the libjpeg-turbo update shipped in 2.88.6 back to 2.1.5.1, resolving compatibility issues introduced by the 3.0.0 upgrade. There are no other user-facing changes in this release. + +## Bug Fixes -## Breaking Changes +- **Reverted libjpeg-turbo to 2.1.5.1** — Rolled back the libjpeg-turbo update (from 3.0.0 in v2.88.6) to resolve compatibility issues ([#2702](https://github.com/mono/SkiaSharp/pull/2702)). -*None in this release.* +Plus several CI and compliance pipeline improvements. -## Bug Fixes +## Platform Support -- **Reverted libjpeg-turbo to 2.1.5.1** — Rolled back the libjpeg-turbo update (from 3.0.0 in v2.88.6) to version 2.1.5.1 to resolve compatibility issues. ([#2702](https://github.com/mono/SkiaSharp/pull/2702)) +| Platform | What's New | +|----------|-----------| +| 📦 General | libjpeg-turbo rolled back to 2.1.5.1 | ## Links diff --git a/documentation/docfx/releases/2.88.8.md b/documentation/docfx/releases/2.88.8.md index 5f5f2123d68..70ca342bfe2 100644 --- a/documentation/docfx/releases/2.88.8.md +++ b/documentation/docfx/releases/2.88.8.md @@ -1,44 +1,57 @@ + + + + # Version 2.88.8 -> **Trimming, OpenGL, and API compatibility improvements** · Released April 10, 2024 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.8) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.8) +> **Released April 10, 2024** · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.8) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.8) ## Highlights -SkiaSharp 2.88.8 fixes tvOS compilation with trimming enabled, eliminates an `async void` issue in `SKXamlCanvas`, and hides missing OpenGL functions on Windows to prevent runtime errors. The release also adds new method overloads for improved API compatibility. - -## Breaking Changes - -*None in this release.* +A maintenance release that adds new method overloads for better API compatibility, hides OpenGL entry points that `opengl32.dll` does not export to prevent runtime errors on Windows, fixes tvOS compilation under trimming, and removes an `async void` from `SKXamlCanvas`. Several fixes were backported via the [@github-actions](https://github.com/apps/github-actions) bot. ## New Features ### API Surface -- **New method overloads for compatibility** — Added additional overloads to improve compatibility with various consuming patterns. ([#2810](https://github.com/mono/SkiaSharp/pull/2810)) +- **New compatibility overloads** — Additional method overloads to improve source compatibility. ([#2810](https://github.com/mono/SkiaSharp/pull/2810)) ## Bug Fixes -- **Hidden unavailable OpenGL functions on Windows** — Functions that `opengl32.dll` does not actually export are no longer surfaced, preventing `EntryPointNotFoundException` at runtime. ([#2710](https://github.com/mono/SkiaSharp/pull/2710)) -- **Eliminated `async void` in `SKXamlCanvas`** — Replaced `async void` with a safer async pattern to prevent unobserved exceptions in XAML canvas rendering. ([#2731](https://github.com/mono/SkiaSharp/pull/2731)) -- **tvOS compilation with trimming** — Made `PlatformConfiguration` properties trimmable, fixing compilation failures on tvOS when trimming is enabled. ([#2734](https://github.com/mono/SkiaSharp/pull/2734)) +- **Windows OpenGL externs** — No longer exposes OpenGL functions that `opengl32.dll` does not export, preventing `EntryPointNotFoundException` at runtime. ([#2710](https://github.com/mono/SkiaSharp/pull/2710)) +- **`SKXamlCanvas` async void** — Replaces `async void` with a safer async pattern to avoid unobserved exceptions. ([#2731](https://github.com/mono/SkiaSharp/pull/2731)) +- **tvOS trimming** — Makes `PlatformConfiguration` properties trimmable, fixing tvOS compilation when trimming is enabled. ([#2734](https://github.com/mono/SkiaSharp/pull/2734)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | tvOS compilation fixed when trimming is enabled | -| 🪟 Windows | Hidden unavailable OpenGL entry points in `opengl32.dll` | +| 🍎 Apple | tvOS compiles correctly when trimming is enabled | +| 🪟 Windows | Unavailable `opengl32.dll` entry points are no longer surfaced | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.7...v2.88.8) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.88.8) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.88.8) - ---- - -## Preview 1 (April 5, 2024) - -All fixes and features in this release were included in Preview 1: OpenGL function visibility fix, `async void` elimination, tvOS trimming fix, and new API overloads. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.7...v2.88.8-preview.1.1) diff --git a/documentation/docfx/releases/2.88.9.md b/documentation/docfx/releases/2.88.9.md index 6caade19ece..15cdc582715 100644 --- a/documentation/docfx/releases/2.88.9.md +++ b/documentation/docfx/releases/2.88.9.md @@ -1,64 +1,74 @@ + + + + # Version 2.88.9 -> **.NET 9 support, WinUI fixes, and debug symbols** · Released November 7, 2024 · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.9) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.9) +> **.NET 9 & platform fixes release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/2.88.9) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v2.88.9) ## Highlights -SkiaSharp 2.88.9 adds .NET 9 target framework support, ships debug symbols in NuGet packages for improved diagnostics, and fixes several canvas and text API issues across Uno/WinUI and XAML platforms. One community contributor drove key WinUI and platform fixes. - -## Breaking Changes - -*None in this release.* +This release adds support for .NET 9 and ships a batch of WinUI/Uno fixes, along with debug symbols now included in the packages. Community contributors [@jerome](https://github.com/jerome) and [@github-actions[bot]](https://github.com/apps/github-actions) drove the user-facing changes. ## New Features ### Platform -- **.NET 9 support** — Added target framework support for .NET 9. ([#3012](https://github.com/mono/SkiaSharp/pull/3012)) -- **Debug symbols in NuGet packages** — Symbol packages are now included, enabling source-level debugging and better stack traces. ([#3046](https://github.com/mono/SkiaSharp/pull/3046)) +- **.NET 9 support** — Adds targeting and support for .NET 9. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#3012](https://github.com/mono/SkiaSharp/pull/3012)) +- **WinUI `GetByteBuffer` native helper** — Adds a native helper enabling `GetByteBuffer` on WinUI. ❤️ [@jerome](https://github.com/jerome) ([#3039](https://github.com/mono/SkiaSharp/pull/3039)) ### API Surface -- **WinUI `GetByteBuffer` native helper** — Added a native helper method for `GetByteBuffer` on WinUI, improving interop for byte buffer scenarios. ❤️ @jeromelaban ([#3039](https://github.com/mono/SkiaSharp/pull/3039)) +- **Debug symbols in packages** — The NuGet packages now ship with symbols for easier debugging. ([#3046](https://github.com/mono/SkiaSharp/pull/3046)) ## Bug Fixes -- **`XamlRoot` null check on unload** — `SKXamlCanvas` no longer throws when `XamlRoot` is null during unload. ([#2884](https://github.com/mono/SkiaSharp/pull/2884)) -- **`GetKerningPairAdjustments` API fixed** — Corrected the kerning pair adjustments API to return proper values. ([#2886](https://github.com/mono/SkiaSharp/pull/2886)) -- **`SKXamlCanvas` pixel format on Uno Skia** — Fixed `SKXamlCanvas` on Uno Skia targets to use `Bgra8888` for correct color rendering. ([#2919](https://github.com/mono/SkiaSharp/pull/2919)) +- **`SKXamlCanvas` on Uno Skia uses Bgra8888** — Corrects the pixel format used by `SKXamlCanvas` on Uno Skia. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#2919](https://github.com/mono/SkiaSharp/pull/2919)) +- **`GetKerningPairAdjustments` fix** — Restores correct behaviour of the `GetKerningPairAdjustments` API. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#2886](https://github.com/mono/SkiaSharp/pull/2886)) +- **Null `XamlRoot` on unload** — Guards against a null `XamlRoot` when an `SKXamlCanvas` is unloaded. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#2884](https://github.com/mono/SkiaSharp/pull/2884)) ## Platform Support | Platform | What's New | |----------|-----------| +| 🎨 Core API | .NET 9 support, debug symbols in packages | | 🪟 Windows | WinUI `GetByteBuffer` native helper | -| 🌐 WebAssembly | `SKXamlCanvas` pixel format fix on Uno Skia | -| 📦 General | .NET 9 support; debug symbols in packages | +| 🌐 WebAssembly | `SKXamlCanvas` Bgra8888 and `XamlRoot` fixes on Uno Skia | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@jeromelaban](https://github.com/jeromelaban) | WinUI `GetByteBuffer` native helper | +| [@jerome](https://github.com/jerome) | Added a WinUI native helper for `GetByteBuffer` | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.8...v2.88.9) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/2.88.9) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/2.88.9) - ---- - -## Preview 2 (October 24, 2024) - -Added .NET 9 target framework support and WinUI `GetByteBuffer` native helper. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.9-preview.1.1...v2.88.9-preview.2.2) - ---- - -## Preview 1 (July 18, 2024) - -Fixed `XamlRoot` null reference on canvas unload, corrected `GetKerningPairAdjustments` API, and fixed `SKXamlCanvas` pixel format on Uno Skia. Also adopted new NuGet license expressions. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.8...v2.88.9-preview.1.1) diff --git a/documentation/docfx/releases/3.0.0.md b/documentation/docfx/releases/3.0.0.md index 9708b31934c..5ed4fbf2613 100644 --- a/documentation/docfx/releases/3.0.0.md +++ b/documentation/docfx/releases/3.0.0.md @@ -1,148 +1,246 @@ + + + + # Version 3.0.0 -> **Major version overhaul** · Previews released February – October 2024 · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.0.0-preview.5.4) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.0.0-preview.5.4) +> **Preview only** · Superseded by [3.116.0](3.116.0.md) · Never released as stable — these changes rolled up into 3.116.0 · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.0.0-preview) ## Highlights -SkiaSharp 3.0 is a major overhaul of the library, modernizing the interop layer with function pointers and `LibraryImport`, upgrading the Skia engine to milestone 116, and adding .NET 8 and .NET 9 support. This release removes all previously deprecated APIs and introduces new features including `SKBlender`, Skottie Animation Builder, Metal on Mac Catalyst, GPU-accelerated views for MAUI, WPF, and WinUI, and `Span`-based API overloads throughout. Ten community contributors drove significant features and bug fixes across the preview series. - -> [!NOTE] -> Version 3.0.0 was released only as previews. The first stable release in the 3.x line is [3.116.0](3.116.0.md), which adopted milestone-based versioning. - -## Breaking Changes - -### Removed Deprecated APIs +The first public preview of **SkiaSharp 3.0** — a major modernization built on Skia **m116**, with new `net8.0` (and early `net9.0`) targets, a modernized P/Invoke layer using function pointers and `LibraryImport`, and a large round of new drawing, picture, and shader APIs. As a preview that never shipped stable, all of this work rolled up cumulatively into [3.116.0](3.116.0.md). Many community contributors drove interop, API, and platform fixes across this preview. -- **All `[Obsolete]` members and types removed** — Previously deprecated APIs have been removed to clean up the API surface. See the [full API diff](https://github.com/mono/SkiaSharp/blob/main/changelogs/SkiaSharp/3.0.0/SkiaSharp.humanreadable.md) for details. ([#2539](https://github.com/mono/SkiaSharp/pull/2539)) +### ⚠️ Breaking Changes -### API Cleanup - -- **SKTextBlobBuilder and SKRunBuffer APIs cleaned up** — Streamlined text blob builder APIs for consistency. ([#2775](https://github.com/mono/SkiaSharp/pull/2775)) -- **Compatibility APIs added and removed** — Some APIs were added for backward compatibility while others were removed as part of the 3.0 transition. ([#2789](https://github.com/mono/SkiaSharp/pull/2789)) +- **Removed all `[Obsolete]` members and types** — Every previously deprecated API has been removed in 3.0. ([#2539](https://github.com/mono/SkiaSharp/pull/2539)) +- **Modernized interop** — The binding moves to function pointers and `LibraryImport`, changing the generated interop surface. ❤️ [@maxkatz6](https://github.com/maxkatz6) ([#2917](https://github.com/mono/SkiaSharp/pull/2917)) +- **`SKFilterQuality` replaced by `SamplingOptions`** — `SKFilterQuality` is superseded by sampling options, with compatibility overloads provided for migration. ([#2789](https://github.com/mono/SkiaSharp/pull/2789), [#2924](https://github.com/mono/SkiaSharp/pull/2924)) ## New Features ### Engine -- **Skia updated to milestone 116** — Core graphics engine updated through milestones 115 and 116 for the latest rendering improvements. ([#2547](https://github.com/mono/SkiaSharp/pull/2547), [#2829](https://github.com/mono/SkiaSharp/pull/2829)) -- **Function pointers and LibraryImport** — Modernized P/Invoke layer using function pointers and `LibraryImport` for improved performance and AOT compatibility. ❤️ @maxkatz6 ([#2917](https://github.com/mono/SkiaSharp/pull/2917)) -- **Performance improvements with Unsafe.As** — Internal performance optimizations using `Unsafe.As` for type conversions. ([#2780](https://github.com/mono/SkiaSharp/pull/2780)) +- **Skia m116** — Updates the bundled Skia engine to milestone 116. ([#2829](https://github.com/mono/SkiaSharp/pull/2829), [#2885](https://github.com/mono/SkiaSharp/pull/2885)) +- **Further Skia update** — ❤️ [@jondick](https://github.com/jondick) brings in additional Skia changes. ([#3026](https://github.com/mono/SkiaSharp/pull/3026)) +- **Modernized repository** — Reworks the repository and prepares the SkiaSharp 3.0 foundation. ([#2505](https://github.com/mono/SkiaSharp/pull/2505)) ### API Surface -- **SKBlender exposed** — New `SKBlender` type for custom blending operations. ([#2830](https://github.com/mono/SkiaSharp/pull/2830)) -- **SKImage.ToRawShader** — Create shaders from images with raw (non-color-managed) data. ([#2748](https://github.com/mono/SkiaSharp/pull/2748)) -- **Skottie Animation Builder** — Bound Skottie's Animation Builder for Lottie animation support. ([#2630](https://github.com/mono/SkiaSharp/pull/2630)) -- **Additional SKPicture APIs** — Extended the `SKPicture` API surface with new methods. ([#2883](https://github.com/mono/SkiaSharp/pull/2883)) -- **R-Tree overload for BeginRecording** — Enables spatial indexing for recorded drawing operations. ([#2889](https://github.com/mono/SkiaSharp/pull/2889)) -- **GetPixelSpan() with offsets** — Access pixel data at specific offsets without copying. ([#2609](https://github.com/mono/SkiaSharp/pull/2609)) -- **Span overloads for color filters** — Memory-efficient `Span`-based overloads for color filter APIs. ([#2879](https://github.com/mono/SkiaSharp/pull/2879)) -- **Span overload for SetRectRadii** — Memory-efficient overload for setting rounded rectangle radii. ❤️ @Youssef1313 ([#2949](https://github.com/mono/SkiaSharp/pull/2949)) -- **SKFilterQuality compatibility overloads** — Backward-compatible overloads easing migration from the removed filter quality API. ❤️ @Youssef1313 ([#2963](https://github.com/mono/SkiaSharp/pull/2963)) -- **Text-based blobs restored** — Re-added text-based blob creation APIs that were removed in the initial cleanup. ([#2545](https://github.com/mono/SkiaSharp/pull/2545)) +- **Expose `SKBlender`** — Adds bindings for `SKBlender`. ([#2830](https://github.com/mono/SkiaSharp/pull/2830)) +- **More `SKPicture` APIs** — Expands the `SKPicture` surface. ([#2883](https://github.com/mono/SkiaSharp/pull/2883)) +- **R-Tree `BeginRecording`** — Adds an R-Tree overload of `BeginRecording`. ([#2889](https://github.com/mono/SkiaSharp/pull/2889)) +- **Skottie Animation Builder** — Binds Skottie's `Animation.Builder`. ([#2630](https://github.com/mono/SkiaSharp/pull/2630)) +- **`SKImage.ToRawShader`** — Adds `SKImage.ToRawShader`. ([#2748](https://github.com/mono/SkiaSharp/pull/2748)) +- **`GetPixelSpan` with offsets** — Adds a `GetPixelSpan()` overload that accepts offsets. ([#2609](https://github.com/mono/SkiaSharp/pull/2609)) +- **`Span` for `SetRectRadii`** — ❤️ [@youssefvictor00](https://github.com/youssefvictor00) adds a `Span` overload for `SetRectRadii`. ([#2949](https://github.com/mono/SkiaSharp/pull/2949)) +- **Spans for color filters** — Adds `Span` overloads to the color filters. ([#2879](https://github.com/mono/SkiaSharp/pull/2879)) +- **`SKFilterQuality` compatibility overloads** — ❤️ [@youssefvictor00](https://github.com/youssefvictor00) adds compatibility overloads for `SKFilterQuality`. ([#2963](https://github.com/mono/SkiaSharp/pull/2963)) +- **Trimmable `PlatformConfiguration`** — ❤️ [@maxkatz6](https://github.com/maxkatz6) makes `PlatformConfiguration` properties trimmable. ([#2717](https://github.com/mono/SkiaSharp/pull/2717)) ### GPU & Rendering -- **Metal backend on Mac Catalyst** — Use Metal as the GPU backend on Mac Catalyst for hardware-accelerated rendering. ([#2747](https://github.com/mono/SkiaSharp/pull/2747)) -- **Metal APIs on common .NET TFM** — Metal GPU APIs are now available on a common target framework, simplifying cross-platform GPU code. ❤️ @maxkatz6 ([#2788](https://github.com/mono/SkiaSharp/pull/2788)) -- **ANGLE built separately** — ANGLE (OpenGL ES backend for Windows) is now built as a separate component. ([#2950](https://github.com/mono/SkiaSharp/pull/2950)) +- **`SKGLView`** — Implements `SKGLView`. ([#2598](https://github.com/mono/SkiaSharp/pull/2598)) +- **`SKGLElement` for WPF** — ❤️ [@gmurray](https://github.com/gmurray) adds `SKGLElement` to `SkiaSharp.Views.WPF`. ([#2317](https://github.com/mono/SkiaSharp/pull/2317)) +- **WinUI accelerated views** — Adds support for hardware-accelerated WinUI views. ([#2733](https://github.com/mono/SkiaSharp/pull/2733)) +- **Metal on Mac Catalyst** — Uses Metal as the backend on Mac Catalyst. ([#2747](https://github.com/mono/SkiaSharp/pull/2747)) +- **Common Metal TFM** — ❤️ [@maxkatz6](https://github.com/maxkatz6) brings the Metal APIs to a common .NET TFM. ([#2788](https://github.com/mono/SkiaSharp/pull/2788)) + +### Text & Fonts + +- **HarfBuzz 8.3.0** — Updates HarfBuzz to 8.3.0 (from 7.3.0 earlier in the cycle). ([#2624](https://github.com/mono/SkiaSharp/pull/2624), [#2582](https://github.com/mono/SkiaSharp/pull/2582)) ### Platform -- **.NET 8 and .NET 9 support** — Updated target frameworks to support .NET 8 and .NET 9. ❤️ @jeromelaban (.NET 9) ([#2927](https://github.com/mono/SkiaSharp/pull/2927), [#3010](https://github.com/mono/SkiaSharp/pull/3010)) -- **SKGLView for .NET MAUI** — Hardware-accelerated OpenGL view for MAUI applications. ([#2598](https://github.com/mono/SkiaSharp/pull/2598)) -- **SKGLElement for WPF** — Hardware-accelerated OpenGL element for WPF applications. ❤️ @gmurray81 ([#2317](https://github.com/mono/SkiaSharp/pull/2317)) -- **WinUI accelerated views** — GPU-accelerated rendering views for WinUI applications. ([#2733](https://github.com/mono/SkiaSharp/pull/2733)) -- **Updated GLControl for WinForms** — Switched to the new GLControl packages for Windows Forms. ([#2989](https://github.com/mono/SkiaSharp/pull/2989)) -- **Blazor DPI exposure** — Expose DPI information in Blazor components for high-DPI rendering. ❤️ @beto-rodriguez ([#1832](https://github.com/mono/SkiaSharp/pull/1832)) -- **Trimmable PlatformConfiguration (tvOS fix)** — Made platform configuration properties trimmable, fixing tvOS compilation. ❤️ @maxkatz6 ([#2717](https://github.com/mono/SkiaSharp/pull/2717)) -- **AOT-compatible IBufferByteAccess** — Updated `IBufferByteAccess` for ahead-of-time compilation compatibility. ([#2920](https://github.com/mono/SkiaSharp/pull/2920)) -- **WASM no-SIMD builds** — Restored no-SIMD builds for Edge enhanced security mode and Safari compatibility. ❤️ @jeromelaban ([#2612](https://github.com/mono/SkiaSharp/pull/2612)) +- **.NET 8** — Updates the binding and samples to .NET 8. ([#2927](https://github.com/mono/SkiaSharp/pull/2927)) +- **.NET 9 support** — ❤️ [@jerome](https://github.com/jerome) adds early support for .NET 9. ([#3010](https://github.com/mono/SkiaSharp/pull/3010)) +- **WinForms GLControl** — Uses the new `GLControl` packages for WinForms. ([#2989](https://github.com/mono/SkiaSharp/pull/2989)) +- **Blazor component DPI** — ❤️ [@rodriguezo.alberto](https://github.com/rodriguezo.alberto) exposes DPI on the Blazor components. ([#1832](https://github.com/mono/SkiaSharp/pull/1832)) -### Dependencies +### Images & Documents -- **HarfBuzz updated to 8.3.0** — Text shaping engine updated from 7.3.0 through to 8.3.0. ([#2582](https://github.com/mono/SkiaSharp/pull/2582), [#2624](https://github.com/mono/SkiaSharp/pull/2624)) -- **libwebp updated to 1.3.2** — WebP codec updated for bug fixes and improvements. ([#2622](https://github.com/mono/SkiaSharp/pull/2622)) +- **libjpeg-turbo 3.0.0** — Updates libjpeg-turbo to 3.0.0 (later rolled back to 2.1.5.1 for stability). ([#2583](https://github.com/mono/SkiaSharp/pull/2583), [#2699](https://github.com/mono/SkiaSharp/pull/2699)) +- **libwebp 1.3.2** — Updates libwebp to 1.3.2. ([#2622](https://github.com/mono/SkiaSharp/pull/2622)) ## Bug Fixes -- **MAUI view memory leaks fixed** — Resolved memory leaks in MAUI views. ([#2955](https://github.com/mono/SkiaSharp/pull/2955)) -- **SKPaint.Clone fixed** — Corrected the clone behavior for paint objects. ❤️ @jeremy-visionaid ([#2904](https://github.com/mono/SkiaSharp/pull/2904)) -- **GetKerningPairAdjustments API fixed** — Corrected the kerning pair adjustments API. ❤️ @pdjonov ([#2858](https://github.com/mono/SkiaSharp/pull/2858)) -- **SKXamlCanvas Bgra8888 on Uno Skia** — Fixed color format for `SKXamlCanvas` on Uno Skia platform. ❤️ @Youssef1313 ([#2918](https://github.com/mono/SkiaSharp/pull/2918)) -- **Apple Metal snapshot magenta fix** — Fixed snapshot returning magenta color on Apple Metal. ❤️ @taublast ([#2804](https://github.com/mono/SkiaSharp/pull/2804)) -- **SKRectI floor conversion** — Fixed floor-outward rounding when converting to `SKRectI`. ([#2568](https://github.com/mono/SkiaSharp/pull/2568)) -- **SKBitmap.Encode behavior reverted** — Reverted `SKBitmap.Encode` with `SKPngEncoderOptions` to the 2.88.8 behavior. ❤️ @sungaila ([#3014](https://github.com/mono/SkiaSharp/pull/3014)) -- **Async void removed from SKXamlCanvas** — Eliminated async void pattern in `SKXamlCanvas` for better error handling. ❤️ @lindexi ([#2720](https://github.com/mono/SkiaSharp/pull/2720)) -- **XamlRoot null check on unload** — Fixed null reference when `SKXamlCanvas` is unloaded. ❤️ @jeromelaban ([#2854](https://github.com/mono/SkiaSharp/pull/2854)) -- **Uno canvas rendering context** — Ensured the canvas context is active when rendering on Uno. ❤️ @jeromelaban ([#2559](https://github.com/mono/SkiaSharp/pull/2559)) -- **WASM canvas graceful failure** — Don't fail when the canvas can't be found in WASM. ❤️ @jeromelaban ([#2563](https://github.com/mono/SkiaSharp/pull/2563)) +- **MAUI memory leaks** — Fixes memory leaks in the MAUI views. ([#2955](https://github.com/mono/SkiaSharp/pull/2955)) +- **`SKRectI` rounding** — Floors outwards when converting to `SKRectI`. ([#2568](https://github.com/mono/SkiaSharp/pull/2568)) +- **Cloned `SKPaint` disposal** — ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) fixes an `AccessViolationException` when disposing a cloned `SKPaint`. ([#2904](https://github.com/mono/SkiaSharp/pull/2904)) +- **`SKBitmap.Encode` regression** — ❤️ [@david.sungaila](https://github.com/david.sungaila) reverts `SKBitmap.Encode` with `SKPngEncoderOptions` to the 2.88.8 behavior. ([#3014](https://github.com/mono/SkiaSharp/pull/3014)) +- **Uno Skia pixel format** — ❤️ [@youssefvictor00](https://github.com/youssefvictor00) fixes `SKXamlCanvas` on Uno Skia to use `Bgra8888`. ([#2918](https://github.com/mono/SkiaSharp/pull/2918)) +- **`XamlRoot` null** — ❤️ [@jlaban](https://github.com/jlaban) handles a null `XamlRoot` when the `SKXamlCanvas` is unloaded. ([#2854](https://github.com/mono/SkiaSharp/pull/2854)) +- **Metal snapshot color** — ❤️ [@taublast](https://github.com/taublast) fixes `Snapshot` returning magenta on Apple Metal. ([#2804](https://github.com/mono/SkiaSharp/pull/2804)) +- **Kerning adjustments** — ❤️ [@phill](https://github.com/phill) fixes the `GetKerningPairAdjustments` API. ([#2858](https://github.com/mono/SkiaSharp/pull/2858)) +- **`async void` in `SKXamlCanvas`** — ❤️ [@lindexi](https://github.com/lindexi) avoids `async void` in `SKXamlCanvas`. ([#2720](https://github.com/mono/SkiaSharp/pull/2720)) +- **WASM canvas lookup** — ❤️ [@jerome.laban](https://github.com/jerome.laban) stops the WASM `SKXamlCanvas` failing when the canvas can't be found. ([#2563](https://github.com/mono/SkiaSharp/pull/2563)) +- **Uno render context** — ❤️ [@jerome.laban](https://github.com/jerome.laban) ensures the canvas' context is active when rendering on Uno. ([#2559](https://github.com/mono/SkiaSharp/pull/2559)) +- **nosimd builds** — ❤️ [@jerome.laban](https://github.com/jerome.laban) restores `nosimd` builds for enhanced-security Edge and Safari. ([#2612](https://github.com/mono/SkiaSharp/pull/2612)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | Metal on Mac Catalyst, Metal APIs on common TFM, fixed snapshot magenta on Metal, trimmable tvOS | -| 🪟 Windows | WinUI accelerated views, updated GLControl for WinForms, ANGLE built separately | -| 🌐 WebAssembly | Blazor DPI exposure, no-SIMD builds for Edge/Safari, canvas graceful failure | +| 🍎 Apple | Metal backend on Mac Catalyst, common Metal TFM, magenta snapshot fix | +| 🪟 Windows | WinUI accelerated views, WinForms GLControl, WPF `SKGLElement` | +| 🌐 WebAssembly | nosimd builds, Uno/WASM canvas fixes, Blazor DPI | +| 🎨 Core API | `SKBlender`, more `SKPicture` APIs, Skottie builder, span overloads, Skia m116 | +| 📦 General | .NET 8 (+ early .NET 9), modernized interop, removed obsolete APIs | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@maxkatz6](https://github.com/maxkatz6) | Function pointers and LibraryImport, Metal APIs on common TFM, trimmable tvOS | -| [@jeromelaban](https://github.com/jeromelaban) | .NET 9 support, Uno canvas fixes, WASM no-SIMD builds | -| [@Youssef1313](https://github.com/Youssef1313) | Span overloads for SetRectRadii, SKFilterQuality compatibility, Uno Bgra8888 fix | -| [@gmurray81](https://github.com/gmurray81) | SKGLElement for WPF | -| [@taublast](https://github.com/taublast) | Fixed Apple Metal snapshot magenta color | -| [@beto-rodriguez](https://github.com/beto-rodriguez) | Exposed Blazor components DPI | -| [@pdjonov](https://github.com/pdjonov) | Fixed GetKerningPairAdjustments API | -| [@jeremy-visionaid](https://github.com/jeremy-visionaid) | Fixed SKPaint.Clone | -| [@lindexi](https://github.com/lindexi) | Removed async void from SKXamlCanvas | -| [@sungaila](https://github.com/sungaila) | Reverted SKBitmap.Encode to 2.88.8 behavior | +| [@maxkatz6](https://github.com/maxkatz6) | Modernized interop with function pointers/`LibraryImport`, common Metal TFM, trimmable config | +| [@youssefvictor00](https://github.com/youssefvictor00) | Added `SKFilterQuality` and `SetRectRadii` overloads and fixed Uno pixel format | +| [@jerome.laban](https://github.com/jerome.laban) | Fixed WASM/Uno canvas rendering and restored nosimd builds | +| [@jondick](https://github.com/jondick) | Brought in additional Skia updates | +| [@jerome](https://github.com/jerome) | Added .NET 9 support | +| [@david.sungaila](https://github.com/david.sungaila) | Reverted an `SKBitmap.Encode` regression | +| [@jeremy-visionaid](https://github.com/jeremy-visionaid) | Fixed an AVE disposing a cloned `SKPaint` | +| [@jlaban](https://github.com/jlaban) | Handled a null `XamlRoot` on unload | +| [@taublast](https://github.com/taublast) | Fixed magenta snapshots on Apple Metal | +| [@phill](https://github.com/phill) | Fixed `GetKerningPairAdjustments` | +| [@lindexi](https://github.com/lindexi) | Avoided `async void` in `SKXamlCanvas` | +| [@gmurray](https://github.com/gmurray) | Added `SKGLElement` to the WPF views | +| [@rodriguezo.alberto](https://github.com/rodriguezo.alberto) | Exposed DPI on the Blazor components | +| [@Fxplorer](https://github.com/Fxplorer) | Fixed a typo in the README | ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.7...v3.0.0-preview.5.4) -- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/3.0.0-preview.5.4) -- [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/3.0.0) - ---- - -## Preview 5 (October 24, 2024) - -Updated .NET to 8.0, added function pointers and LibraryImport for modern interop, Span overloads for SetRectRadii and SKFilterQuality, fixed MAUI memory leaks, and added .NET 9 support. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.4.1...v3.0.0-preview.5.4) - ---- - -## Preview 4 (July 18, 2024) - -Updated Skia to milestone 116, exposed SKBlender, added Span-based color filter overloads, additional SKPicture and R-Tree recording APIs, and multiple Uno/XAML bug fixes. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.3.1...v3.0.0-preview.4.1) - ---- - -## Preview 3 (April 10, 2024) - -Added SKGLElement for WPF, cleaned up text blob APIs, exposed Blazor DPI, brought Metal APIs to common TFM, and fixed Apple Metal snapshot color issues. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.2.1...v3.0.0-preview.3.1) - ---- - -## Preview 2 (February 20, 2024) - -Added SKImage.ToRawShader, Metal backend on Mac Catalyst, and bound Skottie's Animation Builder. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.1.8...v3.0.0-preview.2.1) - ---- - -## Preview 1 (February 6, 2024) - -Initial SkiaSharp 3.0 preview: modernized repository, updated Skia to milestone 115, removed deprecated APIs, added SKGLView for MAUI, WinUI accelerated views, and dev container support. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.7...v3.0.0-preview.1.8) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.9...v3.0.0-preview.5) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/3.0.0-preview) diff --git a/documentation/docfx/releases/3.116.0.md b/documentation/docfx/releases/3.116.0.md index 0a7dd51dbe4..8fc0e0b2cef 100644 --- a/documentation/docfx/releases/3.116.0.md +++ b/documentation/docfx/releases/3.116.0.md @@ -1,59 +1,250 @@ + + + + # Version 3.116.0 -> **First stable milestone-based release** · Released December 3, 2024 · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.116.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.116.0) +> **SkiaSharp 3.0 — major release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.116.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.116.0) + +> **Supersedes [3.0.0](3.0.0.md)** · Rolls up preview-only work that was never released as stable — those changes are included cumulatively below. ## Highlights -SkiaSharp 3.116.0 is the first stable release in the 3.x line, adopting milestone-based versioning that aligns with the underlying Skia engine version. This release adds `Span`-based overloads for `SKMatrix` and `SKPath`, multi-threaded and SIMD WebAssembly support, and resolves .NET 9 Blazor compatibility issues. Two community contributors added new API surface and updated the Skia engine. +SkiaSharp 3.116.0 is the first stable release of the modernized **SkiaSharp 3.0** line. It rolls up all of the preview-only **3.0.0** work cumulatively and ships it as a single stable package. The engine is updated to **Skia m116**, the interop layer is rebuilt on **function pointers and `LibraryImport`**, and the libraries now target **.NET 8 and .NET 9** with multi-threaded/SIMD WebAssembly, a Metal backend on Mac Catalyst, and a wave of new span-based APIs. This is a **major version** with breaking changes — see below. Dozens of community contributors helped land this release, including [@maxkatz6](https://github.com/maxkatz6), [@jerome.laban](https://github.com/jerome.laban), [@youssefvictor00](https://github.com/youssefvictor00), [@alexandrvslv](https://github.com/alexandrvslv), [@jondick](https://github.com/jondick) and [@gmurray](https://github.com/gmurray). -## Breaking Changes +### ⚠️ Breaking Changes -*None in this release.* +- **All `[Obsolete]` members and types removed** — Every previously deprecated API has been deleted as part of the 3.0 cleanup. ([#2539](https://github.com/mono/SkiaSharp/pull/2539)) +- **`SKFilterQuality` replaced by `SamplingOptions`** — Filter quality is superseded by sampling options; compatibility overloads are provided to ease migration. ([#2789](https://github.com/mono/SkiaSharp/pull/2789), [#2963](https://github.com/mono/SkiaSharp/pull/2963), [#2924](https://github.com/mono/SkiaSharp/pull/2924)) +- **Interop rebuilt on function pointers / `LibraryImport`** — The P/Invoke layer now uses function pointers and source-generated `LibraryImport`, modernizing the native interop surface. ([#2917](https://github.com/mono/SkiaSharp/pull/2917)) ## New Features +### Engine + +- **Skia updated to m116** — Brings the bundled Skia engine up to milestone 116, plus follow-up external updates. ([#2829](https://github.com/mono/SkiaSharp/pull/2829), [#2885](https://github.com/mono/SkiaSharp/pull/2885)) ❤️ [@jondick](https://github.com/jondick) ([#3026](https://github.com/mono/SkiaSharp/pull/3026)) +- **HarfBuzz 7.3.0 → 8.3.0** — Updates the bundled HarfBuzz for improved text shaping. ([#2582](https://github.com/mono/SkiaSharp/pull/2582), [#2624](https://github.com/mono/SkiaSharp/pull/2624)) +- **libjpeg-turbo 3.0.0 & libwebp 1.3.2** — Refreshes the bundled JPEG and WebP codecs. ([#2583](https://github.com/mono/SkiaSharp/pull/2583), [#2622](https://github.com/mono/SkiaSharp/pull/2622)) +- **SkiaSharp 3.0 modernization** — Modernizes the repository, build and packaging and targets .NET 8 and .NET 9. ([#2505](https://github.com/mono/SkiaSharp/pull/2505), [#2927](https://github.com/mono/SkiaSharp/pull/2927)) ❤️ [@jerome](https://github.com/jerome) ([#3010](https://github.com/mono/SkiaSharp/pull/3010)) + +### GPU & Rendering + +- **`SKBlender`** — Exposes Skia's blender API for custom blend modes. ([#2830](https://github.com/mono/SkiaSharp/pull/2830)) +- **`SKImage.ToRawShader`** — Adds a raw-shader variant of image shaders. ([#2748](https://github.com/mono/SkiaSharp/pull/2748)) +- **Metal backend on Mac Catalyst** — Uses Metal as the rendering backend on Mac Catalyst. ([#2747](https://github.com/mono/SkiaSharp/pull/2747)) +- **Common Metal TFM** — Brings the Metal APIs to a common .NET target framework. ❤️ [@maxkatz6](https://github.com/maxkatz6) ([#2788](https://github.com/mono/SkiaSharp/pull/2788)) +- **WinUI accelerated views** — Adds support for hardware-accelerated WinUI views. ([#2733](https://github.com/mono/SkiaSharp/pull/2733)) +- **Multi-threaded / SIMD WebAssembly** — Adds support for multi-threaded and/or SIMD WebAssembly builds. ([#2620](https://github.com/mono/SkiaSharp/pull/2620)) + ### API Surface -- **SKMatrix.MapPoints/MapVectors and SKPath.AddPoly Span overloads** — Added memory-efficient `Span` overloads for mapping points, mapping vectors, and adding polygons. ❤️ @alexandrvslv ([#3030](https://github.com/mono/SkiaSharp/pull/3030)) +- **Span overloads across the API** — Adds `Span` overloads for `SKMatrix.MapPoints`/`MapVectors` and `SKPath.AddPoly`, a span overload for `SetRectRadii`, and span overloads on the color filters. ❤️ [@alexandrvslv](https://github.com/alexandrvslv) ([#3030](https://github.com/mono/SkiaSharp/pull/3030)) · ❤️ [@youssefvictor00](https://github.com/youssefvictor00) ([#2949](https://github.com/mono/SkiaSharp/pull/2949)) · ([#2879](https://github.com/mono/SkiaSharp/pull/2879)) +- **`GetPixelSpan()` with offsets** — Adds an offset-aware pixel span accessor. ([#2609](https://github.com/mono/SkiaSharp/pull/2609)) +- **More `SKPicture` APIs & R-Tree recording** — Expands the `SKPicture` surface and adds an R-Tree overload of `BeginRecording`. ([#2883](https://github.com/mono/SkiaSharp/pull/2883), [#2889](https://github.com/mono/SkiaSharp/pull/2889)) +- **`SKFilterQuality` compatibility overloads** — Provides compatibility overloads to bridge `SKFilterQuality` to the new sampling options. ❤️ [@youssefvictor00](https://github.com/youssefvictor00) ([#2963](https://github.com/mono/SkiaSharp/pull/2963)) +- **Read-only `GRMtlTextureInfo` getters** — Makes `GRMtlTextureInfo` getters read-only. ([#2833](https://github.com/mono/SkiaSharp/pull/2833)) +- **Trimmable `PlatformConfiguration`** — Marks `PlatformConfiguration` properties trimmable for smaller AOT/trimmed apps. ❤️ [@maxkatz6](https://github.com/maxkatz6) ([#2717](https://github.com/mono/SkiaSharp/pull/2717)) -### Platform +### Text & Fonts -- **Multi-thread and SIMD WebAssembly** — Added support for multi-threaded and/or SIMD WebAssembly builds, enabling significantly better performance in browser scenarios. ([#2620](https://github.com/mono/SkiaSharp/pull/2620)) +- **Skottie Animation Builder** — Binds Skottie's animation builder for richer Lottie animation construction. ([#2630](https://github.com/mono/SkiaSharp/pull/2630)) +- **Cleaner text-blob APIs** — Tidies the `SKTextBlobBuilder` and `SKRunBuffer` APIs. ([#2775](https://github.com/mono/SkiaSharp/pull/2775)) -### Engine +### Platform -- **Skia engine updated** — Updated the underlying Skia engine. ❤️ @Redth ([#3026](https://github.com/mono/SkiaSharp/pull/3026)) +- **`SKGLElement` for WPF** — Adds an OpenGL-accelerated `SKGLElement` to `SkiaSharp.Views.WPF`. ❤️ [@gmurray](https://github.com/gmurray) ([#2317](https://github.com/mono/SkiaSharp/pull/2317)) +- **New WinForms GLControl** — Moves WinForms onto the new GLControl packages. ([#2989](https://github.com/mono/SkiaSharp/pull/2989)) +- **Blazor component DPI** — Exposes the device pixel ratio on the Blazor components. ❤️ [@rodriguezo.alberto](https://github.com/rodriguezo.alberto) ([#1832](https://github.com/mono/SkiaSharp/pull/1832)) ## Bug Fixes -- **Fixed .NET 9 ASP.NET Blazor issues** — Resolved compatibility issues with .NET 9 ASP.NET Blazor applications. ([#3081](https://github.com/mono/SkiaSharp/pull/3081)) -- **Blazor WASM module loading fix** — Moved the Blazor workaround into the WASM layer for proper module loading. ([#3087](https://github.com/mono/SkiaSharp/pull/3087), [#3089](https://github.com/mono/SkiaSharp/pull/3089)) -- **Fixed import for apps with a base path** — Resolved WASM import issues for Blazor apps hosted at a sub-path. ([#3093](https://github.com/mono/SkiaSharp/pull/3093)) +- **Fixed MAUI view memory leaks** — Resolves leaks in the MAUI views. ([#2955](https://github.com/mono/SkiaSharp/pull/2955)) +- **Fixed access violation disposing a cloned `SKPaint`** — Prevents an AVE when disposing a cloned paint. ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) ([#2904](https://github.com/mono/SkiaSharp/pull/2904)) +- **Fixed magenta Metal snapshots** — Corrects `Snapshot` returning a magenta image on Apple Metal. ❤️ [@taublast](https://github.com/taublast) ([#2804](https://github.com/mono/SkiaSharp/pull/2804)) +- **Fixed Uno `SKXamlCanvas` color format** — Uses `Bgra8888` for `SKXamlCanvas` on Uno Skia. ❤️ [@youssefvictor00](https://github.com/youssefvictor00) ([#2918](https://github.com/mono/SkiaSharp/pull/2918)) +- **Fixed null `XamlRoot` on unload** — Handles `XamlRoot` being null when the `SKXamlCanvas` is unloaded. ❤️ [@jlaban](https://github.com/jlaban) ([#2854](https://github.com/mono/SkiaSharp/pull/2854)) +- **Avoided `async void` in `SKXamlCanvas`** — Removes an `async void` path in `SKXamlCanvas`. ❤️ [@lindexi](https://github.com/lindexi) ([#2720](https://github.com/mono/SkiaSharp/pull/2720)) +- **Fixed `GetKerningPairAdjustments`** — Corrects the kerning-pair adjustment API. ❤️ [@phill](https://github.com/phill) ([#2858](https://github.com/mono/SkiaSharp/pull/2858)) +- **Restored `SKBitmap.Encode` behavior** — Reverts `SKBitmap.Encode` with `SKPngEncoderOptions` to the previous (2.88.8) behavior. ❤️ [@david.sungaila](https://github.com/david.sungaila) ([#3014](https://github.com/mono/SkiaSharp/pull/3014)) +- **Fixed .NET 9 ASP.NET Blazor & WASM issues** — Resolves Blazor base-path imports and .NET 9 Blazor/WebAssembly problems. ([#3081](https://github.com/mono/SkiaSharp/pull/3081), [#3087](https://github.com/mono/SkiaSharp/pull/3087), [#3089](https://github.com/mono/SkiaSharp/pull/3089), [#3093](https://github.com/mono/SkiaSharp/pull/3093)) +- **Floored outwards converting to `SKRectI`** — Rounds outward when converting to integer rects. ([#2568](https://github.com/mono/SkiaSharp/pull/2568)) +- **Restored no-SIMD WebAssembly builds** — Restores `nosimd` builds for hardened-security Edge and Safari. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2612](https://github.com/mono/SkiaSharp/pull/2612)) + +Plus the migration to 1ES pipelines, an MSVC build, dev-container support and many other CI, compliance and documentation improvements. ## Platform Support | Platform | What's New | |----------|-----------| -| 🪟 Windows | SDK version packaging fix | -| 🌐 WebAssembly | Multi-thread and SIMD support, .NET 9 Blazor fixes, base path import fix | +| 🍎 Apple | Metal backend on Mac Catalyst, common Metal TFM, magenta-snapshot fix | +| 🪟 Windows | WinUI accelerated views, new WinForms GLControl, WPF `SKGLElement` | +| 🌐 WebAssembly | Multi-threaded/SIMD builds, .NET 9 Blazor fixes, `nosimd` builds restored | +| 🎨 Core API | Skia m116, function pointers/`LibraryImport`, `SKBlender`, span overloads, .NET 8/9 | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@Redth](https://github.com/Redth) | Updated the Skia engine | -| [@alexandrvslv](https://github.com/alexandrvslv) | Added Span overloads for SKMatrix and SKPath | +| [@maxkatz6](https://github.com/maxkatz6) | Function pointers & `LibraryImport` interop, common Metal TFM, trimmable `PlatformConfiguration` | +| [@youssefvictor00](https://github.com/youssefvictor00) | `SKFilterQuality` compatibility overloads, `SetRectRadii` span overload, Uno `Bgra8888` fix | +| [@jerome.laban](https://github.com/jerome.laban) | Restored `nosimd` WebAssembly builds and Uno/WASM fixes | +| [@alexandrvslv](https://github.com/alexandrvslv) | Added `Span` overloads for `MapPoints`/`MapVectors`/`AddPoly` | +| [@jondick](https://github.com/jondick) | Updated the bundled Skia | +| [@jerome](https://github.com/jerome) | Added .NET 9 support | +| [@gmurray](https://github.com/gmurray) | Added `SKGLElement` to `SkiaSharp.Views.WPF` | +| [@rodriguezo.alberto](https://github.com/rodriguezo.alberto) | Exposed DPI on the Blazor components | +| [@david.sungaila](https://github.com/david.sungaila) | Restored prior `SKBitmap.Encode` PNG behavior | +| [@jeremy-visionaid](https://github.com/jeremy-visionaid) | Fixed an access violation disposing a cloned `SKPaint` | +| [@taublast](https://github.com/taublast) | Fixed magenta `Snapshot` on Apple Metal | +| [@phill](https://github.com/phill) | Fixed `GetKerningPairAdjustments` | +| [@jlaban](https://github.com/jlaban) | Fixed null `XamlRoot` on `SKXamlCanvas` unload | +| [@lindexi](https://github.com/lindexi) | Removed an `async void` path in `SKXamlCanvas` | +| [@Fxplorer](https://github.com/Fxplorer) | Fixed a typo in the README | ## Links -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.5.4...v3.116.0) +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.9...v3.116.0) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/3.116.0) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/3.116.0) - ---- - -## Preview 6 (November 6, 2024) - -Updated Skia engine, added Span-based overloads for SKMatrix and SKPath, and multi-thread/SIMD WebAssembly support. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.5.4...v3.116.0-preview.6.1) diff --git a/documentation/docfx/releases/3.116.1.md b/documentation/docfx/releases/3.116.1.md index 624de8e853b..3b3cbde5b09 100644 --- a/documentation/docfx/releases/3.116.1.md +++ b/documentation/docfx/releases/3.116.1.md @@ -1,26 +1,45 @@ + + + + # Version 3.116.1 -> **Android 16KB page size compliance** · Released December 5, 2024 · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.116.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.116.1) +> **Android & packaging servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.116.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.116.1) ## Highlights -A patch release that updates the Android NDK to r27c with 16KB page alignment, ensuring compatibility with Android 15+ memory page size requirements, and fixes a NuGet package path attribute. +This servicing release updates the Android NDK to r27c with 16 KB page-size alignment and corrects NuGet packaging paths. Both changes were backported automatically via [@github-actions[bot]](https://github.com/apps/github-actions). + +## New Features -## Breaking Changes +### Platform -*None in this release.* +- **Android NDK r27c with 16 KB alignment** — Updates the Android NDK to r27c and enables 16 KB page-size alignment, keeping SkiaSharp compatible with newer Android devices. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#3098](https://github.com/mono/SkiaSharp/pull/3098)) ## Bug Fixes -- **Android NDK updated to r27c with 16KB alignment** — Updated the Android NDK and enabled 16KB page alignment to comply with Android 15+ requirements. ([#3098](https://github.com/mono/SkiaSharp/pull/3098)) -- **Corrected NuGet PackagePath attribute** — Fixed the `PackagePath` attribute in NuGet packaging. ([#3102](https://github.com/mono/SkiaSharp/pull/3102)) +- **Correct NuGet `PackagePath`** — Uses the correct `PackagePath` attribute so packaged assets land in the expected locations. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#3102](https://github.com/mono/SkiaSharp/pull/3102)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🤖 Android | NDK r27c with 16KB page alignment | -| 📦 General | NuGet packaging fix | +| 🤖 Android | NDK r27c, 16 KB page-size alignment | +| 📦 General | Corrected NuGet packaging paths | ## Links diff --git a/documentation/docfx/releases/3.119.1.md b/documentation/docfx/releases/3.119.1.md index 0f5c204fcf1..4ed784109cd 100644 --- a/documentation/docfx/releases/3.119.1.md +++ b/documentation/docfx/releases/3.119.1.md @@ -1,65 +1,96 @@ + + + + # Version 3.119.1 -> **Stability and platform fixes** · Released September 23, 2025 · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.119.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.119.1) +> **Metal and Apple platform fixes** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.119.1) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.119.1) ## Highlights -This release delivers key stability fixes for Metal on Apple platforms, resolves several crashes and rendering issues, and adds the new `PostScriptName` property to `SKTypeface`. Four community contributors — [@jeremy-visionaid](https://github.com/jeremy-visionaid), [@taublast](https://github.com/taublast), [@spouliot](https://github.com/spouliot), and [@jonlipsky](https://github.com/jonlipsky) — drove the majority of user-facing changes. - -## Breaking Changes - -*None in this release.* +A servicing release focused on Apple platform stability — fixing Metal rendering on iOS 15 and lower, MacCatalyst canvas opacity, and disposal crashes — alongside a zlib update and a new `PostScriptName` on `SKTypeface`. Most user-facing fixes came from community contributors including [@taublast](https://github.com/taublast), [@jeremy-visionaid](https://github.com/jeremy-visionaid), [@jon](https://github.com/jon), and [@sebastien.pouliot](https://github.com/sebastien.pouliot). ## New Features -### Text & Fonts +### Engine -- **`PostScriptName` on `SKTypeface`** — Exposes the PostScript name of a typeface, useful for font identification and PDF workflows. ❤️ [@jonlipsky](https://github.com/jonlipsky) ([#3263](https://github.com/mono/SkiaSharp/pull/3263)) +- **Updated zlib to v1.3.0.1+** — Refreshes the bundled zlib native dependency. ([#3058](https://github.com/mono/SkiaSharp/pull/3058)) -## Bug Fixes +### Text & Fonts -- **SKMetalView double initialization** — Avoids initializing `SKMetalView` twice, preventing redundant setup on Apple platforms. ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) ([#3256](https://github.com/mono/SkiaSharp/pull/3256)) -- **`SKAutoCanvasRestore` crash on disposed canvas** — Prevents a crash when `SKAutoCanvasRestore` is disposed after its canvas has already been disposed. ❤️ [@taublast](https://github.com/taublast) ([#3291](https://github.com/mono/SkiaSharp/pull/3291)) -- **`SKXamlCanvas` opaque on Mac Catalyst** — Fixes `SKXamlCanvas` incorrectly rendering as opaque on Mac Catalyst, restoring transparency support. ❤️ [@spouliot](https://github.com/spouliot) ([#3236](https://github.com/mono/SkiaSharp/pull/3236)) -- **Metal crash on iOS 15 and lower** — Hotfixes a Metal backend crash affecting devices running iOS 15 and earlier. ❤️ [@taublast](https://github.com/taublast) ([#3293](https://github.com/mono/SkiaSharp/pull/3293)) -- **UTC `DateTime` conversion in PDF metadata** — Fixes incorrect `DateTime` conversion in `SKDocumentPdfMetadata`, ensuring dates are correctly stored as UTC. ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) ([#3333](https://github.com/mono/SkiaSharp/pull/3333)) +- **`PostScriptName` on `SKTypeface`** — Exposes the PostScript name of a typeface. ❤️ [@jon](https://github.com/jon) ([#3263](https://github.com/mono/SkiaSharp/pull/3263)) -## Security +### Platform -- **zlib updated to v1.3.0.1+** — Bumps the bundled zlib to address known vulnerabilities. ([#3058](https://github.com/mono/SkiaSharp/pull/3058)) +- **WinUI Interop built as `/MT`** — Builds the WinUI interop library with the static runtime. ([#3341](https://github.com/mono/SkiaSharp/pull/3341)) +- **EGL/GLESv2 build targets** — Builds EGL as win32 and GLESv2 as WASDK. ([#3338](https://github.com/mono/SkiaSharp/pull/3338)) -## Platform +## Bug Fixes -- **WinUI unpackaged app loading fix** — Builds EGL as Win32 and GLESv2 as WASDK to resolve native library loading failures in unpackaged WinUI apps. ([#3338](https://github.com/mono/SkiaSharp/pull/3338)) -- **WinUI Interop built as `/MT`** — Switches the WinUI interop library to static CRT linking (`/MT`), eliminating runtime dependency issues. ([#3341](https://github.com/mono/SkiaSharp/pull/3341)) +- **Metal on iOS 15 and lower** — Hotfixes Metal rendering for iOS 15 and earlier. ❤️ [@taublast](https://github.com/taublast) ([#3293](https://github.com/mono/SkiaSharp/pull/3293)) +- **`SKAutoCanvasRestore` disposal crash** — Avoids a crash at `Dispose` when the canvas was already disposed. ❤️ [@taublast](https://github.com/taublast) ([#3291](https://github.com/mono/SkiaSharp/pull/3291)) +- **MacCatalyst canvas opacity** — Ensures `SKXamlCanvas` is not opaque on MacCatalyst. ❤️ [@sebastien.pouliot](https://github.com/sebastien.pouliot) ([#3236](https://github.com/mono/SkiaSharp/pull/3236)) +- **Double `SKMetalView` initialization** — Avoids initializing `SKMetalView` twice. ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) ([#3256](https://github.com/mono/SkiaSharp/pull/3256)) +- **UTC `DateTime` conversion** — Fixes UTC `DateTime` conversion. ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) ([#3333](https://github.com/mono/SkiaSharp/pull/3333)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | Metal fixes for iOS 15, `SKMetalView` double-init fix, Mac Catalyst transparency | -| 🪟 Windows | WinUI unpackaged loading fix, static CRT for WinUI interop | -| 🎨 Core API | `SKTypeface.PostScriptName`, `SKAutoCanvasRestore` crash fix, PDF `DateTime` fix | +| 🍎 Apple | Metal iOS 15 hotfix, MacCatalyst `SKXamlCanvas` opacity, `SKMetalView` init fix, `SKAutoCanvasRestore` crash fix | +| 🪟 Windows | WinUI interop `/MT` build, EGL/GLESv2 build targets | +| 🎨 Core API | `SKTypeface.PostScriptName`, UTC `DateTime` fix | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@jeremy-visionaid](https://github.com/jeremy-visionaid) | Fixed `SKMetalView` double initialization, PDF UTC `DateTime` conversion | -| [@taublast](https://github.com/taublast) | Fixed `SKAutoCanvasRestore` crash, Metal hotfix for iOS 15 | -| [@spouliot](https://github.com/spouliot) | Fixed `SKXamlCanvas` transparency on Mac Catalyst | -| [@jonlipsky](https://github.com/jonlipsky) | Added `PostScriptName` to `SKTypeface` | +| [@taublast](https://github.com/taublast) | Hotfixed Metal on iOS 15 and fixed an `SKAutoCanvasRestore` disposal crash | +| [@jeremy-visionaid](https://github.com/jeremy-visionaid) | Fixed UTC `DateTime` conversion, double `SKMetalView` init, and added a Metal `GRContext` disposal test | +| [@jon](https://github.com/jon) | Added `PostScriptName` to `SKTypeface` | +| [@sebastien.pouliot](https://github.com/sebastien.pouliot) | Fixed MacCatalyst `SKXamlCanvas` opacity | +| [@pecolli](https://github.com/pecolli) | Added CI triggers for the native pipeline | +| [@Copilot](https://github.com/Copilot) | Upgraded the Ubuntu Azure Pipelines image | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.119.0...v3.119.1) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/3.119.1) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/3.119.1) - ---- - -## Preview 1 (September 8, 2025) - -All user-facing changes shipped in Preview 1: Metal and platform fixes, new `PostScriptName` API, zlib security update, and WinUI improvements. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.119.0...v3.119.1-preview.1.1) diff --git a/documentation/docfx/releases/3.119.2.md b/documentation/docfx/releases/3.119.2.md index 036aa0f7da8..b8f4828b65c 100644 --- a/documentation/docfx/releases/3.119.2.md +++ b/documentation/docfx/releases/3.119.2.md @@ -1,27 +1,69 @@ + + + + # Version 3.119.2 -> **Security hardening release** · Released February 7, 2026 · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.119.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.119.2) +> **Security hardening release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/3.119.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.119.2) ## Highlights -This release focuses on hardening the native libraries against common exploit techniques on Windows and Linux. Spectre mitigations, Control Flow Guard, and BufferSecurityCheck are now enabled across all Windows and Linux native builds. Three community contributors — ❤️ [@MartinZikmund](https://github.com/MartinZikmund), ❤️ [@Aguilex](https://github.com/Aguilex), and ❤️ [@sshumakov](https://github.com/sshumakov) — drove every user-facing change in this release. - -## Breaking Changes - -*None in this release.* +This release hardens the native libraries against common exploit techniques on Windows and Linux. Spectre mitigation, Control Flow Guard, and BufferSecurityCheck are now enabled across the native builds, and the missing tvOS `SKSurface.Create` overloads round out Apple platform parity. The user-facing changes in this release were driven by community contributors. ## New Features ### Platform -- **tvOS `SKSurface.Create` overloads** — Adds the missing overloads for tvOS, bringing parity with other Apple platforms. ❤️ [@MartinZikmund](https://github.com/MartinZikmund) ([#3342](https://github.com/mono/SkiaSharp/pull/3342)) +- **tvOS `SKSurface.Create` overloads** — Adds the missing overloads for tvOS, bringing parity with the other Apple platforms. ❤️ [@martin](https://github.com/martin) ([#3342](https://github.com/mono/SkiaSharp/pull/3342)) +- **Android symbols** — Preserves and packs the Android debug symbols. ([#3374](https://github.com/mono/SkiaSharp/pull/3374)) + +### Security + +- **Spectre mitigation for Linux** — Adds the Spectre mitigation flag for `libSkiaSharp.so`. ([#3503](https://github.com/mono/SkiaSharp/pull/3503)) +- **Spectre mitigation for Windows** — Adds the Spectre mitigation flag for `libSkiaSharp.dll`. ([#3497](https://github.com/mono/SkiaSharp/pull/3497)) +- **Control Flow Guard (CFG)** — Enables Control Flow Guard for all Windows native DLLs. ❤️ [@laguiler](https://github.com/laguiler) ([#3397](https://github.com/mono/SkiaSharp/pull/3397)) +- **BufferSecurityCheck** — Enables `BufferSecurityCheck` for native DLLs to resolve BinSkim BA2007. ❤️ [@laguiler](https://github.com/laguiler) ([#3404](https://github.com/mono/SkiaSharp/pull/3404)) -## Security +## Bug Fixes -- **Spectre mitigation for Windows** — Enables `/Qspectre` for `libSkiaSharp.dll`. ❤️ [@sshumakov](https://github.com/sshumakov) ([#3497](https://github.com/mono/SkiaSharp/pull/3497), originally [#3496](https://github.com/mono/SkiaSharp/pull/3496)) -- **Spectre mitigation for Linux** — Enables Spectre mitigation for `libSkiaSharp.so`. ❤️ [@sshumakov](https://github.com/sshumakov) ([#3503](https://github.com/mono/SkiaSharp/pull/3503), originally [#3502](https://github.com/mono/SkiaSharp/pull/3502)) -- **Control Flow Guard (CFG)** — Enables CFG for all Windows native DLLs. ❤️ [@Aguilex](https://github.com/Aguilex) ([#3397](https://github.com/mono/SkiaSharp/pull/3397)) -- **BufferSecurityCheck** — Enables BufferSecurityCheck for Windows native DLLs to resolve BinSkim BA2007. ❤️ [@Aguilex](https://github.com/Aguilex) ([#3404](https://github.com/mono/SkiaSharp/pull/3404)) +- **Generated enum documentation** — Preserves the docs on generated enum members. ([#3361](https://github.com/mono/SkiaSharp/pull/3361)) + +Plus several CI, build, and documentation improvements. ## Platform Support @@ -30,41 +72,18 @@ This release focuses on hardening the native libraries against common exploit te | 🍎 Apple | tvOS `SKSurface.Create` overloads | | 🪟 Windows | Spectre mitigation, Control Flow Guard, BufferSecurityCheck | | 🐧 Linux | Spectre mitigation | +| 🤖 Android | Preserved and packed debug symbols | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@MartinZikmund](https://github.com/MartinZikmund) | Added missing tvOS `SKSurface.Create` overloads | -| [@Aguilex](https://github.com/Aguilex) | Enabled Control Flow Guard and BufferSecurityCheck on Windows | -| [@sshumakov](https://github.com/sshumakov) | Added Spectre mitigation for Windows and Linux native libraries | +| [@laguiler](https://github.com/laguiler) | Enabled Control Flow Guard and BufferSecurityCheck for Windows native DLLs | +| [@martin](https://github.com/martin) | Added the missing tvOS `SKSurface.Create` overloads | ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.119.1...v3.119.2) - [NuGet Package](https://www.nuget.org/packages/SkiaSharp/3.119.2) - [API Diff](https://github.com/mono/SkiaSharp/tree/main/changelogs/SkiaSharp/3.119.2) - ---- - -## Preview 3 (February 5, 2026) - -Added Spectre mitigation for Windows native libraries. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.119.2-preview.2.3...v3.119.2-preview.3.1) - ---- - -## Preview 2 (January 26, 2026) - -Enabled Control Flow Guard and BufferSecurityCheck for all Windows native DLLs. Plus several CI and documentation improvements. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.119.2-preview.1.2...v3.119.2-preview.2.3) - ---- - -## Preview 1 (January 26, 2026) - -Added missing tvOS `SKSurface.Create` overloads, plus build system improvements. - -[Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.119.1...v3.119.2-preview.1.2) +- [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v3.119.2) diff --git a/documentation/docfx/releases/4.148.0-unreleased.md b/documentation/docfx/releases/4.148.0.md similarity index 74% rename from documentation/docfx/releases/4.148.0-unreleased.md rename to documentation/docfx/releases/4.148.0.md index 3ca21545f99..5ffa9ff83f9 100644 --- a/documentation/docfx/releases/4.148.0-unreleased.md +++ b/documentation/docfx/releases/4.148.0.md @@ -3,14 +3,16 @@ 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-11T23:22:02Z by generate-release-notes.py + Generated: 2026-06-16T18:33:30Z by generate-release-notes.py version: 4.148.0 - status: unreleased + status: preview supersedes: 4.147.0 (preview only, rolled up) - branch: main - diff: release/3.119.4..main - prs: 160 + branch: release/4.148.0-rc.1 + diff: release/3.119.4..release/4.148.0-rc.1 + prs: 162 + - docs: update release notes for 4.148.0 (unreleased) by @github-actions[bot] in https://github.com/mono/SkiaSharp/pull/4153 [community ✨] (1 commit, 1 day) + - Fix SKPixmap/SKBitmap GetPixelSpan to use RowBytes for stride by @mattleibow in https://github.com/mono/SkiaSharp/pull/4148 (9 commits, 2 days) - release-notes: emit two-way supersede links on successor pages by @mattleibow in https://github.com/mono/SkiaSharp/pull/4152 (1 commit, 1 day) - release-notes: roll up preview-only/skipped versions into their successor by @mattleibow in https://github.com/mono/SkiaSharp/pull/4149 (4 commits, 2 days) - Fix SKIASHARP_VERSION yaml missed by the m148 bump by @mattleibow in https://github.com/mono/SkiaSharp/pull/4144 (2 commits, 1 day) @@ -173,93 +175,94 @@ - Bump SkiaSharp to Skia milestone 132 by @ramezgerges in https://github.com/mono/SkiaSharp/pull/3560 [community ✨] (31 commits, 11 days) (skia: mono/skia#171) --> - + # Version 4.148.0 -> **Upcoming release** · In development · Not yet available on NuGet +> **Preview release** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/4.148.0-preview) > **Supersedes [4.147.0](4.147.0.md)** · Rolls up preview-only work that was never released as stable — those changes are included cumulatively below. ## Highlights -SkiaSharp 4 is the first major version upgrade in many years, built on the Skia m148 engine and bringing a wave of new capabilities: animated WebP encoding, variable and color-palette font support, expanded platform reach (Linux Bionic, Tizen x64/arm64), and a comprehensive API modernization sweep. This release cumulatively includes all work from the skipped 4.147.0 preview cycle. Special thanks to [@ramezgerges](https://github.com/ramezgerges), [@4Darmygeometry](https://github.com/4Darmygeometry), [@SimonvBez](https://github.com/SimonvBez), and [@ebariche](https://github.com/ebariche) for major community contributions across this release. +This preview brings SkiaSharp up to **Skia milestone m148** and marks the move to the **4.x** major version, with a refreshed native stack (HarfBuzz, FreeType, expat, libpng, zlib, libjpeg-turbo) and broad new font capabilities including variable fonts and color font palettes. It also **rolls up the skipped 4.147 preview cumulatively**, so everything from that abandoned preview line — the m147 bump, animated WebP encoding, zero-copy stream APIs, and the singleton-lifecycle rework — ships here as one combined preview. Huge thanks to the many community contributors, especially [@ramezgerges](https://github.com/ramezgerges), who drove the milestone bumps, variable-font work, and numerous fixes. -## ⚠️ Breaking Changes +### ⚠️ Breaking Changes -- **SkiaSharp major version bump to 4.x** — The package version jumps from 3.x to 4.x. Existing NuGet references require a version update. ([#3640](https://github.com/mono/SkiaSharp/pull/3640)) -- **`SKPaint` text/font obsolete members are now errors** — APIs marked `[Obsolete]` in earlier releases now produce compile errors. Migrate to the `SKFont`-based text APIs. ❤️ [@ramezgerges](https://github.com/ramezgerges) ([#4068](https://github.com/mono/SkiaSharp/pull/4068)) +- **Major version 4.x** — SkiaSharp moves from the 3.x to the 4.x major version. ([#3640](https://github.com/mono/SkiaSharp/pull/3640)) +- **`SKPaint` text/font members now error** — The long-deprecated text and font members on `SKPaint` are promoted from obsolete warnings to compile errors. [@ramezgerges](https://github.com/ramezgerges) ([#4068](https://github.com/mono/SkiaSharp/pull/4068)) +- **Legacy paint state-reading APIs obsoleted** — The remaining legacy paint state-reading APIs are now marked obsolete. ([#4114](https://github.com/mono/SkiaSharp/pull/4114)) ## New Features ### Engine -- **Skia milestone m148** — Updated the Skia engine to milestone 148, picking up rendering improvements, bug fixes, and upstream security patches. ([#4125](https://github.com/mono/SkiaSharp/pull/4125)) +- **Skia milestone m148** — Updates the native engine to Skia milestone m148. ([#4125](https://github.com/mono/SkiaSharp/pull/4125)) +- **Skia milestone m147 (rolled up)** — Bumps Skia to milestone 147, carried forward from the superseded 4.147 preview. [@ramezgerges](https://github.com/ramezgerges) ([#3702](https://github.com/mono/SkiaSharp/pull/3702)) +- **Skia milestone m133** — Bumps Skia to milestone 133. ([#3660](https://github.com/mono/SkiaSharp/pull/3660)) +- **Skia milestone m132** — Bumps SkiaSharp to Skia milestone 132. [@ramezgerges](https://github.com/ramezgerges) ([#3560](https://github.com/mono/SkiaSharp/pull/3560)) +- **Upstream chrome/m147 bug fixes** — Merges upstream chrome/m147 bug fixes into the Skia fork. ([#4081](https://github.com/mono/SkiaSharp/pull/4081), [#4044](https://github.com/mono/SkiaSharp/pull/4044)) +- **Native dependency refresh** — Updates the bundled native libraries: HarfBuzz 14.2.0 ([#4035](https://github.com/mono/SkiaSharp/pull/4035)), FreeType 2.14.3 ([#3726](https://github.com/mono/SkiaSharp/pull/3726)), expat 2.8.1 ([#4079](https://github.com/mono/SkiaSharp/pull/4079)) / libexpat 2.7.5 ([#3717](https://github.com/mono/SkiaSharp/pull/3717)), libjpeg-turbo 3.1.4.1 ([#4012](https://github.com/mono/SkiaSharp/pull/4012)), libpng 1.6.58 ([#3718](https://github.com/mono/SkiaSharp/pull/3718)), and zlib 1.3.2.1-motley ([#3720](https://github.com/mono/SkiaSharp/pull/3720)). -### Images & Encoding +### GPU & Rendering -- **Animated WebP encoding (`SKWebpEncoder`)** — Full support for encoding multi-frame animated WebP files. ([#3771](https://github.com/mono/SkiaSharp/pull/3771)) +- **`SKSamplingOptions` on surface draws** — Adds `SKSamplingOptions` support to `SKSurface.Draw` and `SKCanvas.DrawSurface` for control over resampling quality. [@Copilot](https://github.com/Copilot) ([#3491](https://github.com/mono/SkiaSharp/pull/3491)) ### API Surface -- **`SKStream.GetData()`** — Zero-copy conversion of any `SKStream` to an `SKData` object. ([#3772](https://github.com/mono/SkiaSharp/pull/3772)) -- **`HBColor` struct** — Adds a proper managed type for HarfBuzz `hb_color_t`, replacing raw integer handling. ([#4000](https://github.com/mono/SkiaSharp/pull/4000)) -- **`SKSamplingOptions` on `SKSurface.Draw` / `SKCanvas.DrawSurface`** — Exposes sampling-quality control on surface-to-canvas drawing. ❤️ [@Copilot](https://github.com/Copilot) ([#3491](https://github.com/mono/SkiaSharp/pull/3491)) -- **Missing API wrappers and naming fixes** — Adds several previously unbound C API entry points and corrects naming convention violations. ([#4001](https://github.com/mono/SkiaSharp/pull/4001)) -- **Obsolete legacy `SKPaint` state-reading APIs** — Remaining `SKPaint` text/font state properties are marked `[Obsolete]` in preparation for removal. ([#4114](https://github.com/mono/SkiaSharp/pull/4114)) +- **`SKStream.GetData()`** — Adds zero-copy stream-to-`SKData` conversion. ([#3772](https://github.com/mono/SkiaSharp/pull/3772)) +- **Animated WebP encoding** — Adds `SKWebpEncoder` support for encoding animated WebP images. ([#3771](https://github.com/mono/SkiaSharp/pull/3771)) +- **Singleton lifecycle rework** — Reworks the lifecycle of singleton instances for safer teardown. [@ramezgerges](https://github.com/ramezgerges) ([#4080](https://github.com/mono/SkiaSharp/pull/4080)) +- **`HBColor` struct** — Adds an `HBColor` struct for a proper `hb_color_t` representation. ([#4000](https://github.com/mono/SkiaSharp/pull/4000)) +- **Additional API wrappers** — Adds missing API wrappers and fixes naming-convention violations. ([#4001](https://github.com/mono/SkiaSharp/pull/4001)) ### Text & Fonts -- **Variable font support** — Full OpenType variable font axis support in `SKTypeface` and `HarfBuzzSharp`. ❤️ [@ramezgerges](https://github.com/ramezgerges) ([#3703](https://github.com/mono/SkiaSharp/pull/3703)) -- **Color font palette support** — Adds `SKTypeface` APIs to enumerate and select color font palettes (CPAL/COLR). ([#3742](https://github.com/mono/SkiaSharp/pull/3742)) +- **Variable font support** — Adds variable font support to SkiaSharp and HarfBuzzSharp. [@ramezgerges](https://github.com/ramezgerges) ([#3703](https://github.com/mono/SkiaSharp/pull/3703)) +- **Color font palettes** — Adds color font palette support and improves variable-font robustness. ([#3742](https://github.com/mono/SkiaSharp/pull/3742)) +- **Legacy typeface factory** — Bumps the Skia fork to include `sk_fontmgr_legacy_create_typeface`. ([#3744](https://github.com/mono/SkiaSharp/pull/3744)) ### Platform -- **Linux Bionic native assets** — New native assets for Linux Bionic to support scenarios using the Android NDK sysroot outside of Android. ❤️ [@4Darmygeometry](https://github.com/4Darmygeometry) ([#3217](https://github.com/mono/SkiaSharp/pull/3217)) -- **Tizen x64 and ARM64 native builds** — Tizen native support extended to x64 and arm64 architectures. ([#3620](https://github.com/mono/SkiaSharp/pull/3620)) +- **Linux Bionic native assets** — Adds Linux Bionic native assets support. [@4Darmygeometry](https://github.com/4Darmygeometry) ([#3217](https://github.com/mono/SkiaSharp/pull/3217)) +- **Tizen x64 and arm64** — Adds x64 and arm64 native build support for Tizen. ([#3620](https://github.com/mono/SkiaSharp/pull/3620)) +- **C# 13 on legacy TFMs** — Uses PolySharp to enable C# 13 support on legacy target frameworks. [@4Darmygeometry](https://github.com/4Darmygeometry) ([#3642](https://github.com/mono/SkiaSharp/pull/3642)) ## Bug Fixes -- **`SKPixmap.GetPixelSpan(x, y)` offset** — Fixed a bug where the row stride calculation used `Height` instead of `Width`, producing wrong pixel addresses. ([#4128](https://github.com/mono/SkiaSharp/pull/4128)) -- **`SKPath` finalizer crash** — Fixed a crash when `SKPathBuilder` is collected by the GC before the `SKPath` built from it. ❤️ [@ramezgerges](https://github.com/ramezgerges) ([#3796](https://github.com/mono/SkiaSharp/pull/3796)) -- **Default typeface resolution** — Moved default-typeface lookup from native to the managed layer, fixing inconsistencies on platforms without a system font manager. ❤️ [@ramezgerges](https://github.com/ramezgerges) ([#3730](https://github.com/mono/SkiaSharp/pull/3730)) -- **Singleton instance lifecycle** — Reworked the lifecycle of shared singleton objects to prevent premature disposal and ordering bugs. ❤️ [@ramezgerges](https://github.com/ramezgerges) ([#4080](https://github.com/mono/SkiaSharp/pull/4080)) -- **Native-compat gate timing** — Moved the native compatibility check from `[ModuleInitializer]` to the `SkiaApi` static constructor, fixing edge cases in .NET trimming and NativeAOT scenarios. ([#4133](https://github.com/mono/SkiaSharp/pull/4133)) -- **Android `SKGLView` tab switch** — Fixed `SKGLView` not re-rendering after a MAUI `TabBar` tab switch on Android. ❤️ [@SimonvBez](https://github.com/SimonvBez) ([#3076](https://github.com/mono/SkiaSharp/pull/3076)) -- **WinUI Projection DLL discovery** — Fixed `libWinAppSDK_SkiaSharp.dll` not being found by .NET 9 WinUI consumers. ([#4084](https://github.com/mono/SkiaSharp/pull/4084)) +- **`GetPixelSpan` stride** — `SKPixmap`/`SKBitmap` `GetPixelSpan` now uses `RowBytes` for stride instead of computing it incorrectly. ([#4148](https://github.com/mono/SkiaSharp/pull/4148)) +- **`GetPixelSpan` offset** — Fixes `SKPixmap.GetPixelSpan(x, y)` using `Height` instead of `Width` when computing the offset. ([#4128](https://github.com/mono/SkiaSharp/pull/4128)) +- **`SKPath` finalizer crash** — Fixes a finalizer crash in `SKPath` when its `SKPathBuilder` is collected first. [@ramezgerges](https://github.com/ramezgerges) ([#3796](https://github.com/mono/SkiaSharp/pull/3796)) +- **Default-typeface resolution** — Moves default-typeface resolution to the managed layer, fixing #3693. [@ramezgerges](https://github.com/ramezgerges) ([#3730](https://github.com/mono/SkiaSharp/pull/3730)) +- **WinUI Projection DLL** — Fixes the WinUI Projection DLL not being found by .NET 9 consumers. ([#4084](https://github.com/mono/SkiaSharp/pull/4084)) +- **Native-compat gate** — Moves the native-compat gate from `[ModuleInitializer]` to the `SkiaApi` static constructor for more reliable initialization. ([#4133](https://github.com/mono/SkiaSharp/pull/4133)) +- **`SKGLView` after tab switch** — Fixes `SKGLView` not rendering after a tab switch in a MAUI `TabBar` on Android. [@SimonvBez](https://github.com/SimonvBez) ([#3076](https://github.com/mono/SkiaSharp/pull/3076)) -## Security - -Multiple native dependencies updated with security patches: - -- **expat 2.8.1** ([#4079](https://github.com/mono/SkiaSharp/pull/4079)) -- **HarfBuzz 14.2.0** ([#4035](https://github.com/mono/SkiaSharp/pull/4035)) -- **libjpeg-turbo 3.1.4.1** ([#4012](https://github.com/mono/SkiaSharp/pull/4012)) -- **FreeType 2.14.3** ([#3726](https://github.com/mono/SkiaSharp/pull/3726)) -- **zlib 1.3.2.1** ([#3720](https://github.com/mono/SkiaSharp/pull/3720)) -- **libpng 1.6.58** ([#3718](https://github.com/mono/SkiaSharp/pull/3718)) -- **libexpat 2.7.5** ([#3717](https://github.com/mono/SkiaSharp/pull/3717)) +Plus many CI, build, documentation, and tooling improvements. ## Platform Support | Platform | What's New | |----------|-----------| -| 🐧 Linux | Bionic (NDK legacy ABI) native assets | -| 🍎 Apple | TFM alignment: 26.0 for libraries, unversioned for app targets | -| 🤖 Android | Fixed `SKGLView` rendering after MAUI tab switch | -| 🪟 Windows | Fixed WinUI Projection DLL discovery for .NET 9 | -| 🏗️ Tizen | x64 and ARM64 native builds | -| 🌐 WebAssembly | Dropped pre-.NET 8 Emscripten build variants | +| 🐧 Linux | Bionic native assets support | +| 🤖 Android | `SKGLView` MAUI `TabBar` rendering fix | +| 🪟 Windows | WinUI Projection DLL fix for .NET 9 | +| 📦 Tizen | x64 and arm64 native builds | +| 🎨 Core API | Variable fonts, color palettes, animated WebP, `SKStream.GetData()` | +| 🏗️ Build/CI | Skia m148, 4.x major bump, native dependency refresh, C# 13 on legacy TFMs | ## Community Contributors ❤️ | Contributor | What They Did | |-------------|--------------| -| [@ramezgerges](https://github.com/ramezgerges) | Variable font support, color font robustness, singleton lifecycle rework, `SKPath` finalizer fix, default-typeface fix, `SKPaint` API cleanup, Skia milestone bumps | -| [@4Darmygeometry](https://github.com/4Darmygeometry) | Linux Bionic native assets, C# 13 PolySharp support on legacy TFMs | -| [@SimonvBez](https://github.com/SimonvBez) | Fixed Android `SKGLView` not rendering after MAUI tab switch | -| [@Copilot](https://github.com/Copilot) | `SKSamplingOptions` support on `SKSurface.Draw` / `SKCanvas.DrawSurface` | -| [@ebariche](https://github.com/ebariche) | Reduced SkiaFiddle WASM application size by ~60% | -| [@sasakrsmanovic](https://github.com/sasakrsmanovic) | Updated Uno Platform link and description in README | +| [@ramezgerges](https://github.com/ramezgerges) | Variable font support, singleton lifecycle rework, Skia m147/m132 bumps, `SKPath` finalizer fix, default-typeface resolution, obsolete-to-error promotion, and sample/tooling work | +| [@4Darmygeometry](https://github.com/4Darmygeometry) | Linux Bionic native assets and PolySharp-based C# 13 support on legacy TFMs | +| [@Copilot](https://github.com/Copilot) | Added `SKSamplingOptions` support to `SKSurface.Draw` and `SKCanvas.DrawSurface` | +| [@SimonvBez](https://github.com/SimonvBez) | Fixed `SKGLView` not rendering after a MAUI `TabBar` tab switch on Android | +| [@ebariche](https://github.com/ebariche) | Reduced the SkiaFiddle WASM application size by ~60% | +| [@sasakrsmanovic](https://github.com/sasakrsmanovic) | Updated the Uno Platform link and description in the README | + +## Links -Plus several CI, build infrastructure, and developer tooling improvements. +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.119.4...v4.148.0-preview) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/4.148.0-preview) diff --git a/documentation/docfx/releases/4.150.0.md b/documentation/docfx/releases/4.150.0.md new file mode 100644 index 00000000000..dede5303f8b --- /dev/null +++ b/documentation/docfx/releases/4.150.0.md @@ -0,0 +1,42 @@ + + + + +# Version 4.150.0 + +> **Preview release** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/4.150.0-preview) + +## Highlights + +This preview updates the native engine to **Skia milestone m150**, picking up the latest upstream rendering, text, and codec improvements from Google's Skia. + +## New Features + +### Engine + +- **Skia milestone m150** — Updated the native Skia engine to milestone m150, bringing the full set of upstream fixes and improvements ([#4146](https://github.com/mono/SkiaSharp/pull/4146)). + +## Platform Support + +| Platform | What's New | +|----------|-----------| +| 🎨 Core API | Skia engine updated to milestone m150 | + +## Links + +- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v4.148.0...v4.150.0-preview.1) +- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/4.150.0-preview) diff --git a/documentation/docfx/releases/TOC.yml b/documentation/docfx/releases/TOC.yml index eda96b5626e..2fb8cb413e8 100644 --- a/documentation/docfx/releases/TOC.yml +++ b/documentation/docfx/releases/TOC.yml @@ -1,10 +1,15 @@ - name: Overview href: index.md +- name: Version 4.150.x + href: 4.150.0.md + items: + - name: Version 4.150.0 + href: 4.150.0.md - name: Version 4.148.x - href: 4.148.0-unreleased.md + href: 4.148.0.md items: - - name: Version 4.148.0 (Unreleased) - href: 4.148.0-unreleased.md + - name: Version 4.148.0 + href: 4.148.0.md - name: Version 4.147.x href: 4.147.0.md items: @@ -153,8 +158,10 @@ - name: Version 1.55.0 href: 1.55.0.md - name: Version 1.54.x - href: 1.54.1.md + href: 1.54.1.1.md items: + - name: Version 1.54.1.1 + href: 1.54.1.1.md - name: Version 1.54.1 href: 1.54.1.md - name: Version 1.54.0 diff --git a/documentation/docfx/releases/index.md b/documentation/docfx/releases/index.md index e5d5034987a..3546f3b037e 100644 --- a/documentation/docfx/releases/index.md +++ b/documentation/docfx/releases/index.md @@ -4,8 +4,10 @@ Release notes for all SkiaSharp versions. ### SkiaSharp 4.x +- **Version 4.150.x** + - [Version 4.150.0](4.150.0.md) - **Version 4.148.x** - - [Version 4.148.0 (Unreleased)](4.148.0-unreleased.md) + - [Version 4.148.0](4.148.0.md) - **Version 4.147.x** - [Version 4.147.0](4.147.0.md) @@ -81,6 +83,7 @@ Release notes for all SkiaSharp versions. - [Version 1.55.1](1.55.1.md) - [Version 1.55.0](1.55.0.md) - **Version 1.54.x** + - [Version 1.54.1.1](1.54.1.1.md) - [Version 1.54.1](1.54.1.md) - [Version 1.54.0](1.54.0.md) - **Version 1.53.x** From b2a2a33d09c14dbee0be8d23903a30e50cdd9d8e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 16 Jun 2026 21:01:53 +0200 Subject: [PATCH 2/6] release-notes: second-pass review fixes (remove hallucinations, fix attribution) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A full Opus 4.8 review pass over all 61 regenerated pages (one reviewer per batch, cross-checking each page against TEMPLATE.md and its own raw PR data) found and fixed real quality problems the first polish pass introduced: * Hallucinated content on 0-PR pages — several historical pages with no PR data (1.49.0, 1.53.2, 1.54.0, 1.58.0, 1.58.1.1, 1.60.2, 1.60.3) had invented Skia milestones, APIs, code samples, and bug fixes citing issue numbers absent from the raw data. Replaced with honest servicing notes. * Fabricated PR references — e.g. 2.88.0 cited #1733 (belongs to 3.0.0) and 2.88.5/2.88.8 invented features/contributors not in their raw data. * Bot credits in prose — github-actions[bot]/dependabot[bot]/@github/@Copilot backport credits were stripped from Highlights, feature bullets, and Bug Fixes on 2.88.9, 3.116.1, 3.119.1, 3.119.2, 2.88.0 (the no-bots rule only the visible prose had leaked, the tables were already clean). * Misc accuracy — duplicate PR listings (1.68.1 #929), a miscategorized breaking change (2.80.0 enum restore is additive), wrong platform emoji (Tizen 🤖→📦), a typo (macioS), and an overstated "community drove everything" claim (3.119.2). One verified handle correction landed too: 2.80.3 @jerome.laban → @jeromelaban (confirmed via gh). Raw PR-data blocks were preserved verbatim throughout; only the polished prose below each block changed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- documentation/docfx/releases/1.49.0.md | 12 +------ documentation/docfx/releases/1.53.2.md | 40 ++---------------------- documentation/docfx/releases/1.54.0.md | 8 +---- documentation/docfx/releases/1.58.0.md | 34 ++------------------ documentation/docfx/releases/1.58.1.1.md | 6 +--- documentation/docfx/releases/1.60.2.md | 28 ++--------------- documentation/docfx/releases/1.60.3.md | 9 +----- documentation/docfx/releases/1.68.1.md | 2 +- documentation/docfx/releases/2.80.0.md | 2 +- documentation/docfx/releases/2.80.3.md | 4 +-- documentation/docfx/releases/2.88.0.md | 9 ++---- documentation/docfx/releases/2.88.1.md | 6 ++-- documentation/docfx/releases/2.88.5.md | 12 ++----- documentation/docfx/releases/2.88.8.md | 6 ++-- documentation/docfx/releases/2.88.9.md | 10 +++--- documentation/docfx/releases/3.116.1.md | 6 ++-- documentation/docfx/releases/3.119.1.md | 1 - documentation/docfx/releases/3.119.2.md | 2 +- 18 files changed, 34 insertions(+), 163 deletions(-) diff --git a/documentation/docfx/releases/1.49.0.md b/documentation/docfx/releases/1.49.0.md index 4b9c5ada081..778a645a5ab 100644 --- a/documentation/docfx/releases/1.49.0.md +++ b/documentation/docfx/releases/1.49.0.md @@ -21,17 +21,7 @@ ## Highlights -The first public preview of SkiaSharp — a cross-platform 2D graphics API for .NET that wraps Google's Skia library (milestone 49). This release brought Skia's powerful rendering engine to Xamarin and .NET developers for the first time. - -## New Features - -### Engine - -- **Skia milestone 49** — Initial binding of the native Skia rendering engine for .NET. - -### API Surface - -- **Core drawing API** — Canvas, paint, path, image, and bitmap primitives for cross-platform 2D graphics. +An early preview build of SkiaSharp. No pull requests were recorded in this preview's diff range (`ff9f7d81f4e6..release/1.49.0-preview1`), so there are no itemised changes to report for this build. ## Links diff --git a/documentation/docfx/releases/1.53.2.md b/documentation/docfx/releases/1.53.2.md index 89b362d7d5d..2d5933676b9 100644 --- a/documentation/docfx/releases/1.53.2.md +++ b/documentation/docfx/releases/1.53.2.md @@ -17,47 +17,11 @@ # Version 1.53.2 -> **GPU rendering and SVG canvas support** · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.2) +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.53.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.53.2) ## Highlights -This release introduces two major capabilities: hardware-accelerated GPU rendering via OpenGL, and SVG output through the new `SKSvgCanvas`. A `GRGlInterface` can now be assembled from any GL library via a function-pointer lookup callback. - -## New Features - -### GPU & Rendering - -- **OpenGL support** — Hardware-accelerated rendering via OpenGL on all platforms except UWP. -- **`GRGlInterface.AssembleGlInterface` / `AssembleGlesInterface`** — Assemble a GL interface from any GL library by providing a function-pointer lookup callback: - - ```csharp - var openGLES = ObjCRuntime.Dlfcn.dlopen( - "/System/Library/Frameworks/OpenGLES.framework/OpenGLES", 0); - var glInterface = GRGlInterface.AssembleGlesInterface((ctx, name) => { - return ObjCRuntime.Dlfcn.dlsym(openGLES, name); - }); - ``` - -### API Surface - -- **`SKSvgCanvas`** — Create a canvas that writes SVG output to an XML stream. Coverage is partial — not all Skia drawing operations are supported in SVG output: - - ```csharp - using (var writer = new SKXmlStreamWriter(skStream)) - using (var canvas = SKSvgCanvas.Create(bounds, writer)) - { - // draw as normal — canvas is just an SKCanvas - } - ``` - -## Platform Support - -| Platform | What's New | -|----------|-----------| -| 🍎 Apple | OpenGL GPU rendering | -| 🪟 Windows | OpenGL GPU rendering | -| 🐧 Linux | OpenGL GPU rendering | -| 🎨 Core API | `SKSvgCanvas`, `GRGlInterface` assembly | +A servicing release. No pull requests were recorded in this version's diff range (`release/1.53.1..release/1.53.2-gpu2`), so there are no itemised changes to report. ## Links diff --git a/documentation/docfx/releases/1.54.0.md b/documentation/docfx/releases/1.54.0.md index bcff84dde83..930e3173396 100644 --- a/documentation/docfx/releases/1.54.0.md +++ b/documentation/docfx/releases/1.54.0.md @@ -21,13 +21,7 @@ ## Highlights -Updates SkiaSharp to Google's chrome/m54 Skia milestone and introduces GPU-accelerated rendering through `SKSurface` with OpenGL support across platforms. - -## Platform Support - -| Platform | What's New | -|----------|-----------| -| 🎨 Core API | Skia chrome/m54 engine; GPU-accelerated `SKSurface` rendering | +A routine packaging release for the 1.54 series. No code changes were recorded against this version in the repository history — it ships updated SkiaSharp packages without new commits over the previous release. ## Links diff --git a/documentation/docfx/releases/1.58.0.md b/documentation/docfx/releases/1.58.0.md index cd36177bafb..8f1593b7b53 100644 --- a/documentation/docfx/releases/1.58.0.md +++ b/documentation/docfx/releases/1.58.0.md @@ -17,41 +17,11 @@ # Version 1.58.0 -> **Skia m58 upgrade with color space support** · Released May 19, 2017 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.58.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.58.0) +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.58.0) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.58.0) ## Highlights -This release upgrades the native Skia engine from m57 to m58, bringing new `SKColorSpace` bindings and a high-contrast color filter. Images are now always decoded as premultiplied alpha, and a few color filter APIs have been removed to match upstream Skia. - -## ⚠️ Breaking Changes - -- **`SKColorFilter.CreateColorCube` removed** — No longer available in upstream Skia m58. -- **`SKColorFilter.CreateGamma` removed** — No longer available in upstream Skia m58. -- **Images decoded as premultiplied alpha** — Images are now always decoded as premultiplied alpha, matching upstream Skia behavior. - -## New Features - -### Engine - -- **Skia m58 upgrade** — Update to the latest stable Skia milestone (chrome/m58). - -### API Surface - -- **`SKColorSpace` bindings** — New bindings for working with color spaces. -- **`SKColorFilter.CreateHighContrast`** — New high-contrast color filter for accessibility and visual enhancement scenarios. -- **Additional `SKImageFilter` and `SKPathEffect` types** — A few more filter and path effect types are now available. - -## Bug Fixes - -- General bug fixes and improvements. -- Improvements for Linux consumers. - -## Platform Support - -| Platform | What's New | -|----------|-----------| -| 🎨 Core API | `SKColorSpace`, high-contrast color filter | -| 🐧 Linux | Consumer improvements | +A servicing release. No pull requests were recorded in this version's diff range (`release/1.57.1..release/1.58.0`), so there are no itemised changes to report. ## Links diff --git a/documentation/docfx/releases/1.58.1.1.md b/documentation/docfx/releases/1.58.1.1.md index 0e026e2708f..e091f163b57 100644 --- a/documentation/docfx/releases/1.58.1.1.md +++ b/documentation/docfx/releases/1.58.1.1.md @@ -21,11 +21,7 @@ ## Highlights -A targeted hotfix for [v1.58.1](https://github.com/mono/SkiaSharp/releases/tag/v1.58.1) that resolves an `ObjectDisposedException` in SkiaSharp.Views. Only the SkiaSharp.Views package is updated in this release. - -## Bug Fixes - -- Fixed `ObjectDisposedException` in SkiaSharp.Views. ([#292](https://github.com/mono/SkiaSharp/issues/292)) +A targeted servicing update to [v1.58.1](https://github.com/mono/SkiaSharp/releases/tag/v1.58.1) that refreshes the SkiaSharp.Views package. No code changes were recorded against this version in the repository history. ## Links diff --git a/documentation/docfx/releases/1.60.2.md b/documentation/docfx/releases/1.60.2.md index fcb791ca0b9..acd984a0897 100644 --- a/documentation/docfx/releases/1.60.2.md +++ b/documentation/docfx/releases/1.60.2.md @@ -17,35 +17,11 @@ # Version 1.60.2 -> **New drawing primitives and platform fixes** · Released June 28, 2018 · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.60.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.60.2) +> **Servicing release** · Released · [NuGet](https://www.nuget.org/packages/SkiaSharp/1.60.2) · [GitHub Release](https://github.com/mono/SkiaSharp/releases/tag/v1.60.2) ## Highlights -This release introduces `SKNWayCanvas` for drawing to multiple canvases simultaneously and `SKRoundRect` for more complex rounded rectangles. It also adds flexible encoding overloads to `SKPixmap` and resolves several platform-specific linking and rendering issues. - -## New Features - -### API Surface - -- **`SKNWayCanvas`** — Draw to multiple canvases simultaneously, enabling broadcast-style rendering to several targets at once. -- **`SKRoundRect`** — Draw more complex rounded rectangles with per-corner radius control. -- **`SKPixmap.Encode()` overloads** — Additional `Encode()` overloads for finer control when encoding to PNG, JPEG, and WEBP formats. - -## Bug Fixes - -- Fixed UWP library being linked to the wrong libraries ([#566](https://github.com/mono/SkiaSharp/issues/566), [#536](https://github.com/mono/SkiaSharp/issues/536)). -- Fixed iOS not being able to AOT compile ([#547](https://github.com/mono/SkiaSharp/issues/547)). -- Fixed slow rendering in the GTK# `SKWidget` ([#534](https://github.com/mono/SkiaSharp/issues/534)). -- Fixed a memory leak in `SKXamlCanvas` on UWP and Xamarin.Forms ([#429](https://github.com/mono/SkiaSharp/issues/429)). -- Upgraded projects to the new SDK-style format; removed shared projects and enabled Android builds on Windows. - -## Platform Support - -| Platform | What's New | -|----------|-----------| -| 🍎 Apple | iOS AOT compilation fix | -| 🪟 Windows | UWP linking fix, `SKXamlCanvas` leak fix | -| 🎨 Core API | `SKNWayCanvas`, `SKRoundRect`, `SKPixmap.Encode()` overloads | +A servicing release. No pull requests were recorded in this version's diff range (`release/1.60.1..release/1.60.2`), so there are no itemised changes to report. ## Links diff --git a/documentation/docfx/releases/1.60.3.md b/documentation/docfx/releases/1.60.3.md index d32f8678338..0f79f0e1ffa 100644 --- a/documentation/docfx/releases/1.60.3.md +++ b/documentation/docfx/releases/1.60.3.md @@ -22,14 +22,7 @@ ## Highlights -A small patch release fixing native asset stripping, UWP canvas rendering, Tizen builds, and touch input handling on Android and Tizen. - -## Bug Fixes - -- Fixed a case where some native assets were not being stripped properly. ([#573](https://github.com/mono/SkiaSharp/issues/573), [#584](https://github.com/mono/SkiaSharp/issues/584)) -- Improvements when building Tizen apps. ([#598](https://github.com/mono/SkiaSharp/issues/598)) -- **Views:** Fixed an issue with the UWP `SKXamlCanvas`. ([#582](https://github.com/mono/SkiaSharp/issues/582), [#585](https://github.com/mono/SkiaSharp/issues/585)) -- **Forms:** Fixed touch locations on Android and Tizen. ([#581](https://github.com/mono/SkiaSharp/issues/581), [#589](https://github.com/mono/SkiaSharp/issues/589)) +A small servicing release that rolls up documentation fixes for the 1.60 series. There are no API or behavioural changes in this version. ## Links diff --git a/documentation/docfx/releases/1.68.1.md b/documentation/docfx/releases/1.68.1.md index b20d83f75d8..6c18ccf6a32 100644 --- a/documentation/docfx/releases/1.68.1.md +++ b/documentation/docfx/releases/1.68.1.md @@ -92,7 +92,7 @@ A large release that modernizes the type marshalling layer, adds `Span` suppo ### Engine -- **HarfBuzz updates** — Rolls HarfBuzz forward through v2.5.2, v2.5.3 and v2.6.1 for improved text shaping. ❤️ [@Gillibald](https://github.com/Gillibald) ([#872](https://github.com/mono/SkiaSharp/pull/872), [#904](https://github.com/mono/SkiaSharp/pull/904), [#929](https://github.com/mono/SkiaSharp/pull/929)) +- **HarfBuzz updates** — Rolls HarfBuzz forward through v2.5.2 and v2.5.3 for improved text shaping. ❤️ [@Gillibald](https://github.com/Gillibald) ([#872](https://github.com/mono/SkiaSharp/pull/872), [#904](https://github.com/mono/SkiaSharp/pull/904)) ### GPU & Rendering diff --git a/documentation/docfx/releases/2.80.0.md b/documentation/docfx/releases/2.80.0.md index 9113465b74b..66c7c61db78 100644 --- a/documentation/docfx/releases/2.80.0.md +++ b/documentation/docfx/releases/2.80.0.md @@ -63,7 +63,6 @@ This is one of the biggest SkiaSharp releases in years, upgrading to Skia milest - **Native libraries no longer embedded** — `libSkiaSharp` is no longer embedded inside the managed assemblies, which may require updating deployment configurations. ([#1296](https://github.com/mono/SkiaSharp/pull/1296)) - **`SKFont` public API is now glyph-only** — Text-related members move under `SKFont`, with other types consuming it under the hood. ([#1299](https://github.com/mono/SkiaSharp/pull/1299)) -- **Enum members restored** — Previously removed enum members were added back to preserve compatibility. ([#1285](https://github.com/mono/SkiaSharp/pull/1285)) ## New Features @@ -90,6 +89,7 @@ This is one of the biggest SkiaSharp releases in years, upgrading to Skia milest - **`SKPaint.ColorF`** — Get and set colors using floating-point `SKColorF`. ([#1325](https://github.com/mono/SkiaSharp/pull/1325)) - **Snapshots with bounds** — Add surface snapshots constrained to bounds. ([#1357](https://github.com/mono/SkiaSharp/pull/1357)) - **Reduced deprecated native usage** — Internal calls moved off deprecated native functions. ([#1356](https://github.com/mono/SkiaSharp/pull/1356)) +- **Enum members restored** — Enum members dropped during the m80 update were added back to preserve compatibility. ([#1285](https://github.com/mono/SkiaSharp/pull/1285)) ### Platform diff --git a/documentation/docfx/releases/2.80.3.md b/documentation/docfx/releases/2.80.3.md index 2ceba02fec2..dc32a958a9b 100644 --- a/documentation/docfx/releases/2.80.3.md +++ b/documentation/docfx/releases/2.80.3.md @@ -75,7 +75,7 @@ ## Highlights -A feature-packed release that brings the Metal rendering backend to Apple platforms, the new `SKRuntimeEffect` API for custom SkSL shaders, WinUI 3 desktop support, macOS ARM64 (Apple Silicon) native builds, .NET 5.0 targeting, and .NET Interactive notebook integration. Community contributors [@gmurray](https://github.com/gmurray), [@HarlanHugh](https://github.com/HarlanHugh), [@blasterloremaster](https://github.com/blasterloremaster), and [@jerome.laban](https://github.com/jerome.laban) all helped shape this release. +A feature-packed release that brings the Metal rendering backend to Apple platforms, the new `SKRuntimeEffect` API for custom SkSL shaders, WinUI 3 desktop support, macOS ARM64 (Apple Silicon) native builds, .NET 5.0 targeting, and .NET Interactive notebook integration. Community contributors [@gmurray](https://github.com/gmurray), [@HarlanHugh](https://github.com/HarlanHugh), [@blasterloremaster](https://github.com/blasterloremaster), and [@jeromelaban](https://github.com/jeromelaban) all helped shape this release. ## New Features @@ -134,7 +134,7 @@ A feature-packed release that brings the Metal rendering backend to Apple platfo | [@gmurray](https://github.com/gmurray) | Made GL surface creation resilient to failures | | [@HarlanHugh](https://github.com/HarlanHugh) | Guarded WPF `SKElement.OnRender` against a missing `PresentationSource` | | [@blasterloremaster](https://github.com/blasterloremaster) | Allowed assembling an ANGLE `GRGlInterface` outside UWP | -| [@jerome.laban](https://github.com/jerome.laban) | Added Uno Platform documentation references | +| [@jeromelaban](https://github.com/jeromelaban) | Added Uno Platform documentation references | ## Links diff --git a/documentation/docfx/releases/2.88.0.md b/documentation/docfx/releases/2.88.0.md index c135e3e8d7c..95e9142da42 100644 --- a/documentation/docfx/releases/2.88.0.md +++ b/documentation/docfx/releases/2.88.0.md @@ -92,10 +92,6 @@ A landmark release that brings first-class **.NET MAUI** views (both compatibili - **.NET MAUI views** — Adds `SkiaSharp.Views.Maui` with both compatibility views and handlers. ([#1678](https://github.com/mono/SkiaSharp/pull/1678)) - **New drawing APIs** — Surfaces additional Skia APIs to the managed binding. ([#1828](https://github.com/mono/SkiaSharp/pull/1828)) -### GPU & Rendering - -- **WinUI accelerated views** — Adds support for hardware-accelerated WinUI views. ([#1733](https://github.com/mono/SkiaSharp/pull/1733)) - ### Text & Fonts - **HarfBuzz 2.8.2** — Updates the bundled HarfBuzz to 2.8.2. ([#1766](https://github.com/mono/SkiaSharp/pull/1766)) @@ -123,7 +119,7 @@ A landmark release that brings first-class **.NET MAUI** views (both compatibili - **Blazor `SKCanvasView` loop** — ❤️ [@j.krumsieck](https://github.com/j.krumsieck) prevents an infinite loop in the Blazor `SKCanvasView`. ([#1889](https://github.com/mono/SkiaSharp/pull/1889)) - **MAUI `SKCanvasView` NRE** — ❤️ [@javiersuarezruiz](https://github.com/javiersuarezruiz) guards against a `NullReferenceException` in the .NET MAUI `SKCanvasView`. ([#1734](https://github.com/mono/SkiaSharp/pull/1734)) - **Linux `libdl` resolution** — ❤️ [@alex.koeplinger](https://github.com/alex.koeplinger) tries `libdl.so.2` before `libdl.so`. ([#2010](https://github.com/mono/SkiaSharp/pull/2010)) -- **Windows handle locking** — ❤️ [@github](https://github.com/github) replaces the `HandleDictionary` lock with a critical section on Windows. ([#1817](https://github.com/mono/SkiaSharp/pull/1817)) +- **Windows handle locking** — Replaces the `HandleDictionary` lock with a critical section on Windows. ([#1817](https://github.com/mono/SkiaSharp/pull/1817)) - **Blittable enums** — Works around enums not being blittable. ([#1857](https://github.com/mono/SkiaSharp/pull/1857)) - **Native statics** — Never disposes the native static objects. ([#1863](https://github.com/mono/SkiaSharp/pull/1863)) - **Mac Catalyst build** — Fixes the Mac Catalyst build task Inputs/Outputs. ([#1865](https://github.com/mono/SkiaSharp/pull/1865)) @@ -133,7 +129,7 @@ A landmark release that brings first-class **.NET MAUI** views (both compatibili | Platform | What's New | |----------|-----------| | 🍎 Apple | Mac Catalyst support | -| 🪟 Windows | WindowsAppSDK, WinUI accelerated views, native symbols, critical-section handle locking | +| 🪟 Windows | WindowsAppSDK, native symbols, critical-section handle locking | | 🐧 Linux | `libdl.so.2` resolution | | 🤖 Android | `.so` files excluded from class libraries, trimmed resources | | 🌐 WebAssembly | Blazor WASM components, emscripten 2.0.23, Uno 4.0 | @@ -149,7 +145,6 @@ A landmark release that brings first-class **.NET MAUI** views (both compatibili | [@j.krumsieck](https://github.com/j.krumsieck) | Fixed an infinite loop in the Blazor `SKCanvasView` | | [@javiersuarezruiz](https://github.com/javiersuarezruiz) | Guarded against an NRE in the MAUI `SKCanvasView` | | [@alex.koeplinger](https://github.com/alex.koeplinger) | Improved `libdl` resolution on Linux | -| [@github](https://github.com/github) | Replaced the `HandleDictionary` lock with a critical section on Windows | | [@mjbond-msft](https://github.com/mjbond-msft) | Added SBOM manifest generation | ## Links diff --git a/documentation/docfx/releases/2.88.1.md b/documentation/docfx/releases/2.88.1.md index a534686949d..4f765735bca 100644 --- a/documentation/docfx/releases/2.88.1.md +++ b/documentation/docfx/releases/2.88.1.md @@ -81,7 +81,7 @@ This release introduces **Skottie**, SkiaSharp's Lottie animation engine, alongs ### Animation -- **Skottie (Lottie) support** — Adds a managed Skottie binding for playing Lottie/After Effects animations, with nullable annotations, `TimeSpan` overloads and non-seekable stream handling. Skottie and SceneGraph now ship outside the core `SkiaSharp.dll`. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#1987](https://github.com/mono/SkiaSharp/pull/1987), [#2091](https://github.com/mono/SkiaSharp/pull/2091), [#2119](https://github.com/mono/SkiaSharp/pull/2119), [#2126](https://github.com/mono/SkiaSharp/pull/2126)) +- **Skottie (Lottie) support** — Adds a managed Skottie binding for playing Lottie/After Effects animations. Initial support landed from ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#1987](https://github.com/mono/SkiaSharp/pull/1987)), with follow-up work adding nullable annotations and `TimeSpan` overloads, handling non-seekable streams, and moving Skottie and SceneGraph out of the core `SkiaSharp.dll` ([#2091](https://github.com/mono/SkiaSharp/pull/2091), [#2119](https://github.com/mono/SkiaSharp/pull/2119), [#2126](https://github.com/mono/SkiaSharp/pull/2126)) ### Images & Documents @@ -110,7 +110,7 @@ This release introduces **Skottie**, SkiaSharp's Lottie animation engine, alongs - **Guarded finalized locks** — Checks whether a lock has been finalized before entering or leaving the critical section. ❤️ [@RichardD2](https://github.com/RichardD2) ([#2195](https://github.com/mono/SkiaSharp/pull/2195)) - **Reshaped `SKGLView` on scale change** — Reshapes the view when `Window.BackingScaleFactor` changes (#1853). ❤️ [@HarlanHugh](https://github.com/HarlanHugh) ([#1854](https://github.com/mono/SkiaSharp/pull/1854)) - **Returned null on invalid resize bounds** — Avoids errors when resize bounds are invalid. ([#2054](https://github.com/mono/SkiaSharp/pull/2054)) -- **Implemented the missing macioS feature** — Fills in functionality that was previously unimplemented on Mac/iOS. ([#2198](https://github.com/mono/SkiaSharp/pull/2198)) +- **Implemented a missing Mac/iOS feature** — Fills in functionality that was previously unimplemented on Mac/iOS. ([#2198](https://github.com/mono/SkiaSharp/pull/2198)) - **Fixed Uno Roslyn generation** — Forces Uno's Roslyn-hosted generators and adds the missing Uno.WinUI JavaScript support file. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2199](https://github.com/mono/SkiaSharp/pull/2199), [#2086](https://github.com/mono/SkiaSharp/pull/2086)) Plus the C API increment, newer .NET targeting and numerous CI and packaging improvements. @@ -121,7 +121,7 @@ Plus the C API increment, newer .NET targeting and numerous CI and packaging imp |----------|-----------| | 🪟 Windows | WinUI rendering backend | | 🌐 WebAssembly | emscripten 3.1.7, Uno.WinUI support | -| 🤖 Tizen | `net6.0-tizen` target framework | +| 📦 Tizen | `net6.0-tizen` target framework | | 🎨 Core API | Skottie animation engine, AVIF encoding, writeable `SKDataStream`, nullable annotations | ## Community Contributors ❤️ diff --git a/documentation/docfx/releases/2.88.5.md b/documentation/docfx/releases/2.88.5.md index 6dc2ccfca21..5ae1fe43fc8 100644 --- a/documentation/docfx/releases/2.88.5.md +++ b/documentation/docfx/releases/2.88.5.md @@ -23,12 +23,12 @@ ## Highlights -A targeted patch release that fixes canvas rendering on the Uno Platform (including WebAssembly) and corrects outward rounding when converting `SKRect` to `SKRectI`. [@jeromelaban](https://github.com/jeromelaban) drove the Uno and WASM fixes. +A targeted patch release that fixes canvas rendering on the Uno Platform (including WebAssembly) and corrects outward rounding when converting `SKRect` to `SKRectI`. ## Bug Fixes -- **Uno canvas context not active during rendering** — Ensures the canvas GL context is active before rendering on Uno Platform targets. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2560](https://github.com/mono/SkiaSharp/pull/2560)) -- **WASM canvas lookup failure** — `SKXamlCanvas` on WebAssembly no longer fails when the underlying canvas element cannot be found. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2564](https://github.com/mono/SkiaSharp/pull/2564)) +- **Uno canvas context not active during rendering** — Ensures the canvas' context is active before rendering on Uno Platform targets. ([#2560](https://github.com/mono/SkiaSharp/pull/2560)) +- **WASM canvas lookup failure** — `SKXamlCanvas` on WebAssembly no longer fails when the underlying canvas element cannot be found. ([#2564](https://github.com/mono/SkiaSharp/pull/2564)) - **`SKRect` → `SKRectI` rounding** — Now floors outward correctly when converting to `SKRectI`, preventing off-by-one pixel clipping. ([#2574](https://github.com/mono/SkiaSharp/pull/2574)) ## Platform Support @@ -38,12 +38,6 @@ A targeted patch release that fixes canvas rendering on the Uno Platform (includ | 🌐 WebAssembly | Canvas lookup and Uno context rendering fixes | | 🎨 Core API | Correct outward rounding for `SKRect` → `SKRectI` | -## Community Contributors ❤️ - -| Contributor | What They Did | -|-------------|--------------| -| [@jeromelaban](https://github.com/jeromelaban) | Uno canvas context fix; WASM canvas lookup fix | - ## Links - [Full Changelog](https://github.com/mono/SkiaSharp/compare/v2.88.4...v2.88.5) diff --git a/documentation/docfx/releases/2.88.8.md b/documentation/docfx/releases/2.88.8.md index 70ca342bfe2..8ac738eb638 100644 --- a/documentation/docfx/releases/2.88.8.md +++ b/documentation/docfx/releases/2.88.8.md @@ -29,7 +29,7 @@ ## Highlights -A maintenance release that adds new method overloads for better API compatibility, hides OpenGL entry points that `opengl32.dll` does not export to prevent runtime errors on Windows, fixes tvOS compilation under trimming, and removes an `async void` from `SKXamlCanvas`. Several fixes were backported via the [@github-actions](https://github.com/apps/github-actions) bot. +A maintenance release that adds new method overloads for better API compatibility, hides OpenGL entry points that `opengl32.dll` does not export to prevent runtime errors on Windows, makes `PlatformConfiguration` properties trimmable, and removes an `async void` from `SKXamlCanvas`. Several fixes were backported via the [@github-actions](https://github.com/apps/github-actions) bot. ## New Features @@ -41,14 +41,14 @@ A maintenance release that adds new method overloads for better API compatibilit - **Windows OpenGL externs** — No longer exposes OpenGL functions that `opengl32.dll` does not export, preventing `EntryPointNotFoundException` at runtime. ([#2710](https://github.com/mono/SkiaSharp/pull/2710)) - **`SKXamlCanvas` async void** — Replaces `async void` with a safer async pattern to avoid unobserved exceptions. ([#2731](https://github.com/mono/SkiaSharp/pull/2731)) -- **tvOS trimming** — Makes `PlatformConfiguration` properties trimmable, fixing tvOS compilation when trimming is enabled. ([#2734](https://github.com/mono/SkiaSharp/pull/2734)) +- **Trimming compatibility** — Makes `PlatformConfiguration` properties trimmable, improving compatibility with trimmed and AOT builds. ([#2734](https://github.com/mono/SkiaSharp/pull/2734)) ## Platform Support | Platform | What's New | |----------|-----------| -| 🍎 Apple | tvOS compiles correctly when trimming is enabled | | 🪟 Windows | Unavailable `opengl32.dll` entry points are no longer surfaced | +| 📦 General | `PlatformConfiguration` properties are now trimmable | ## Links diff --git a/documentation/docfx/releases/2.88.9.md b/documentation/docfx/releases/2.88.9.md index 15cdc582715..92eaa327863 100644 --- a/documentation/docfx/releases/2.88.9.md +++ b/documentation/docfx/releases/2.88.9.md @@ -34,13 +34,13 @@ ## Highlights -This release adds support for .NET 9 and ships a batch of WinUI/Uno fixes, along with debug symbols now included in the packages. Community contributors [@jerome](https://github.com/jerome) and [@github-actions[bot]](https://github.com/apps/github-actions) drove the user-facing changes. +This release adds support for .NET 9 and ships a batch of WinUI/Uno `SKXamlCanvas` fixes, along with debug symbols now included in the packages. The WinUI native helper for `GetByteBuffer` was contributed by [@jerome](https://github.com/jerome). ## New Features ### Platform -- **.NET 9 support** — Adds targeting and support for .NET 9. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#3012](https://github.com/mono/SkiaSharp/pull/3012)) +- **.NET 9 support** — Adds targeting and support for .NET 9. ([#3012](https://github.com/mono/SkiaSharp/pull/3012)) - **WinUI `GetByteBuffer` native helper** — Adds a native helper enabling `GetByteBuffer` on WinUI. ❤️ [@jerome](https://github.com/jerome) ([#3039](https://github.com/mono/SkiaSharp/pull/3039)) ### API Surface @@ -49,9 +49,9 @@ This release adds support for .NET 9 and ships a batch of WinUI/Uno fixes, along ## Bug Fixes -- **`SKXamlCanvas` on Uno Skia uses Bgra8888** — Corrects the pixel format used by `SKXamlCanvas` on Uno Skia. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#2919](https://github.com/mono/SkiaSharp/pull/2919)) -- **`GetKerningPairAdjustments` fix** — Restores correct behaviour of the `GetKerningPairAdjustments` API. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#2886](https://github.com/mono/SkiaSharp/pull/2886)) -- **Null `XamlRoot` on unload** — Guards against a null `XamlRoot` when an `SKXamlCanvas` is unloaded. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#2884](https://github.com/mono/SkiaSharp/pull/2884)) +- **`SKXamlCanvas` on Uno Skia uses Bgra8888** — Corrects the pixel format used by `SKXamlCanvas` on Uno Skia. ([#2919](https://github.com/mono/SkiaSharp/pull/2919)) +- **`GetKerningPairAdjustments` fix** — Restores correct behaviour of the `GetKerningPairAdjustments` API. ([#2886](https://github.com/mono/SkiaSharp/pull/2886)) +- **Null `XamlRoot` on unload** — Guards against a null `XamlRoot` when an `SKXamlCanvas` is unloaded. ([#2884](https://github.com/mono/SkiaSharp/pull/2884)) ## Platform Support diff --git a/documentation/docfx/releases/3.116.1.md b/documentation/docfx/releases/3.116.1.md index 3b3cbde5b09..1bc6d2eaaa6 100644 --- a/documentation/docfx/releases/3.116.1.md +++ b/documentation/docfx/releases/3.116.1.md @@ -22,17 +22,17 @@ ## Highlights -This servicing release updates the Android NDK to r27c with 16 KB page-size alignment and corrects NuGet packaging paths. Both changes were backported automatically via [@github-actions[bot]](https://github.com/apps/github-actions). +This servicing release updates the Android NDK to r27c with 16 KB page-size alignment and corrects NuGet packaging paths. ## New Features ### Platform -- **Android NDK r27c with 16 KB alignment** — Updates the Android NDK to r27c and enables 16 KB page-size alignment, keeping SkiaSharp compatible with newer Android devices. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#3098](https://github.com/mono/SkiaSharp/pull/3098)) +- **Android NDK r27c with 16 KB alignment** — Updates the Android NDK to r27c and enables 16 KB page-size alignment, keeping SkiaSharp compatible with newer Android devices. ([#3098](https://github.com/mono/SkiaSharp/pull/3098)) ## Bug Fixes -- **Correct NuGet `PackagePath`** — Uses the correct `PackagePath` attribute so packaged assets land in the expected locations. ❤️ [@github-actions[bot]](https://github.com/apps/github-actions) ([#3102](https://github.com/mono/SkiaSharp/pull/3102)) +- **Correct NuGet `PackagePath`** — Uses the correct `PackagePath` attribute so packaged assets land in the expected locations. ([#3102](https://github.com/mono/SkiaSharp/pull/3102)) ## Platform Support diff --git a/documentation/docfx/releases/3.119.1.md b/documentation/docfx/releases/3.119.1.md index 4ed784109cd..ecce56ea34e 100644 --- a/documentation/docfx/releases/3.119.1.md +++ b/documentation/docfx/releases/3.119.1.md @@ -87,7 +87,6 @@ A servicing release focused on Apple platform stability — fixing Metal renderi | [@jon](https://github.com/jon) | Added `PostScriptName` to `SKTypeface` | | [@sebastien.pouliot](https://github.com/sebastien.pouliot) | Fixed MacCatalyst `SKXamlCanvas` opacity | | [@pecolli](https://github.com/pecolli) | Added CI triggers for the native pipeline | -| [@Copilot](https://github.com/Copilot) | Upgraded the Ubuntu Azure Pipelines image | ## Links diff --git a/documentation/docfx/releases/3.119.2.md b/documentation/docfx/releases/3.119.2.md index b8f4828b65c..0f5ce20fe87 100644 --- a/documentation/docfx/releases/3.119.2.md +++ b/documentation/docfx/releases/3.119.2.md @@ -43,7 +43,7 @@ ## Highlights -This release hardens the native libraries against common exploit techniques on Windows and Linux. Spectre mitigation, Control Flow Guard, and BufferSecurityCheck are now enabled across the native builds, and the missing tvOS `SKSurface.Create` overloads round out Apple platform parity. The user-facing changes in this release were driven by community contributors. +This release hardens the native libraries against common exploit techniques on Windows and Linux. Spectre mitigation, Control Flow Guard, and BufferSecurityCheck are now enabled across the native builds, and the missing tvOS `SKSurface.Create` overloads round out Apple platform parity. Much of the security hardening was contributed by the community. ## New Features From 21ba68e8d95a67ff3d2666061d9aa37357a42121 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 16 Jun 2026 21:56:29 +0200 Subject: [PATCH 3/6] Credit release-note contributors with authoritative GitHub logins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously generate-release-notes.py derived contributor handles from the local-part of the commit author email (email.split("@")[0]). For GitHub noreply emails that happens to work, but for everyone else it produced broken or — worse — wrong @mentions: jerome.laban@unoplatform.com -> @jerome.laban (dead link) sebastien.pouliot@gmail.com -> @sebastien.pouliot (dead link) ...@... -> @jon / @martin (pings unrelated real users) A GitHub login does not exist anywhere in git history, so the local-part is just a guess. In a community project that means we were failing to credit contributors and, in the @jon/@martin cases, notifying the wrong people. Resolve logins authoritatively instead: 1. Prefer the login embedded in a GitHub noreply email (offline, exact, and preserves repo conventions like @Copilot and the *[bot] suffixes). 2. For every remaining PR, resolve the author login via the GitHub GraphQL API in batches of 50, cached in scripts/pr-authors.json so future runs stay warm and offline. Unresolvable authors fall back to a plain name with no @ and no link rather than a wrong mention. - _login_from_email now returns the noreply login or None (no more guessing). - New resolver: load/save_author_cache, _graphql_pr_authors (uses check=False because `gh api graphql` exits non-zero when any aliased PR in a batch is missing yet still returns valid data for the rest), resolve_pr_authors. - get_prs_from_diff also captures the author display name for the fallback. - format_pr_list renders "by @login" when known, else "by name". - _write_page/cmd_branch/cmd_all gain --force to regenerate unchanged pages. scripts/pr-authors.json is committed with 921 resolved authors (0 unresolved) so the very first CI run needs no API calls for historical PRs. All existing release pages are regenerated with corrected raw blocks, and the already-reviewed prose is migrated in place: only the broken handle tokens and their profile URLs are rewritten (longest-token-first, boundary-safe so @jerome never clobbers @jeromelaban and @github-actions is left untouched). No prose wording from the prior review pass is otherwise changed. Co-authored-by: Matthew Leibowitz Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../scripts/generate-release-notes.py | 218 ++++- documentation/docfx/releases/1.49.0.md | 2 +- documentation/docfx/releases/1.49.1.md | 2 +- documentation/docfx/releases/1.49.2.1.md | 2 +- documentation/docfx/releases/1.49.2.md | 2 +- documentation/docfx/releases/1.49.3.md | 2 +- documentation/docfx/releases/1.49.4.md | 2 +- documentation/docfx/releases/1.53.0.md | 2 +- documentation/docfx/releases/1.53.1.1.md | 2 +- documentation/docfx/releases/1.53.1.2.md | 2 +- documentation/docfx/releases/1.53.1.md | 2 +- documentation/docfx/releases/1.53.2.md | 2 +- documentation/docfx/releases/1.54.0.md | 2 +- documentation/docfx/releases/1.54.1.1.md | 2 +- documentation/docfx/releases/1.54.1.md | 2 +- documentation/docfx/releases/1.55.0.md | 2 +- documentation/docfx/releases/1.55.1.md | 2 +- documentation/docfx/releases/1.56.0.md | 2 +- documentation/docfx/releases/1.56.1.md | 2 +- documentation/docfx/releases/1.56.2.md | 2 +- documentation/docfx/releases/1.57.0.md | 2 +- documentation/docfx/releases/1.57.1.md | 2 +- documentation/docfx/releases/1.58.0.md | 2 +- documentation/docfx/releases/1.58.1.1.md | 2 +- documentation/docfx/releases/1.58.1.md | 2 +- documentation/docfx/releases/1.59.0.md | 2 +- documentation/docfx/releases/1.59.1.1.md | 2 +- documentation/docfx/releases/1.59.1.md | 2 +- documentation/docfx/releases/1.59.2.md | 2 +- documentation/docfx/releases/1.59.3.md | 2 +- documentation/docfx/releases/1.60.0.md | 2 +- documentation/docfx/releases/1.60.1.md | 2 +- documentation/docfx/releases/1.60.2.md | 2 +- documentation/docfx/releases/1.60.3.md | 2 +- documentation/docfx/releases/1.68.0.md | 2 +- documentation/docfx/releases/1.68.1.1.md | 2 +- documentation/docfx/releases/1.68.1.md | 14 +- documentation/docfx/releases/1.68.2.1.md | 2 +- documentation/docfx/releases/1.68.2.md | 28 +- documentation/docfx/releases/1.68.3.md | 2 +- documentation/docfx/releases/2.80.0.md | 10 +- documentation/docfx/releases/2.80.1.md | 2 +- documentation/docfx/releases/2.80.2.md | 14 +- documentation/docfx/releases/2.80.3.md | 18 +- documentation/docfx/releases/2.80.4.md | 2 +- documentation/docfx/releases/2.88.0.md | 40 +- documentation/docfx/releases/2.88.1.md | 40 +- documentation/docfx/releases/2.88.2.md | 16 +- documentation/docfx/releases/2.88.3.md | 14 +- documentation/docfx/releases/2.88.4.md | 64 +- documentation/docfx/releases/2.88.5.md | 2 +- documentation/docfx/releases/2.88.6.md | 2 +- documentation/docfx/releases/2.88.7.md | 2 +- documentation/docfx/releases/2.88.8.md | 2 +- documentation/docfx/releases/2.88.9.md | 10 +- documentation/docfx/releases/3.0.0.md | 72 +- documentation/docfx/releases/3.116.0.md | 70 +- documentation/docfx/releases/3.116.1.md | 2 +- documentation/docfx/releases/3.118.0.md | 4 +- documentation/docfx/releases/3.119.0.md | 34 +- documentation/docfx/releases/3.119.1.md | 20 +- documentation/docfx/releases/3.119.2.md | 18 +- documentation/docfx/releases/3.119.3.md | 2 +- documentation/docfx/releases/3.119.4.md | 2 +- .../docfx/releases/3.119.5-unreleased.md | 2 +- documentation/docfx/releases/4.147.0.md | 2 +- documentation/docfx/releases/4.148.0.md | 2 +- documentation/docfx/releases/4.150.0.md | 2 +- scripts/pr-authors.json | 923 ++++++++++++++++++ 69 files changed, 1396 insertions(+), 331 deletions(-) create mode 100644 scripts/pr-authors.json diff --git a/.agents/skills/release-notes/scripts/generate-release-notes.py b/.agents/skills/release-notes/scripts/generate-release-notes.py index f70c65a4a92..1402f9a1ffa 100644 --- a/.agents/skills/release-notes/scripts/generate-release-notes.py +++ b/.agents/skills/release-notes/scripts/generate-release-notes.py @@ -282,16 +282,137 @@ def _is_valid_stable_base(branch): def _login_from_email(email): - # type: (str) -> str - """Extract GitHub login from a commit email. + # type: (str) -> Optional[str] + """Extract a GitHub login from a commit email — ONLY when it is certain. + + GitHub usernames are not stored in git history. The one exception is the + privacy "noreply" address, which embeds the real login: + + 12345+username@users.noreply.github.com -> username - Handles noreply format: 12345+username@users.noreply.github.com -> username - Falls back to the local part of the email. + For that format we return the login with full confidence. For every other + address (corporate or personal email) the part before ``@`` is NOT a GitHub + handle — guessing it would mis-credit the contributor or, worse, turn into an + ``@mention`` that pings an unrelated real user (``jon``, ``martin``, ``i`` …). + So we return None and let the caller resolve the true login from the GitHub + API instead (see resolve_pr_authors). """ m = _NOREPLY_RE.match(email) if m: return m.group(1) - return email.split("@")[0] + return None + + +# ── GitHub author resolution ───────────────────────────────────────── + +_AUTHOR_CACHE_PATH = Path("scripts/pr-authors.json") +_GRAPHQL_BATCH = 50 + + +def load_author_cache(): + # type: () -> dict + """Load the PR-number -> GitHub-login cache (scripts/pr-authors.json). + + This cache is the durable record of every author resolved from the GitHub + API, so ordinary regenerations stay fully offline: a warm cache means + resolve_pr_authors makes zero network calls. A null value records that + GitHub could not map the PR to an account (e.g. a deleted user) so we do not + re-query a known-unresolvable PR on every run. Delete an entry to force it to + be looked up again (useful once a contributor registers their commit email). + """ + try: + return json.loads(_AUTHOR_CACHE_PATH.read_text()) + except (OSError, ValueError): + return {} + + +def save_author_cache(cache): + # type: (dict) -> None + """Persist the PR-number -> login cache, sorted by PR number for stable diffs.""" + try: + ordered = {k: cache[k] for k in sorted(cache, key=lambda n: int(n))} + except ValueError: + ordered = cache + _AUTHOR_CACHE_PATH.parent.mkdir(parents=True, exist_ok=True) + _AUTHOR_CACHE_PATH.write_text(json.dumps(ordered, indent=2) + "\n") + + +def _graphql_pr_authors(numbers): + # type: (list[int]) -> dict + """Resolve PR-author logins via one batched GitHub GraphQL query. + + Returns ``{pr_number: login_or_None}`` for every number the API answered + for. PRs that error or are missing from the response are omitted, so the + caller never caches a transient failure and can retry later. Requires the + ``gh`` CLI to be installed and authenticated (the workflow already provides + ``GITHUB_TOKEN``); any failure yields an empty dict and callers fall back to + the plain author name. + """ + owner, name = REPO.split("/") + aliases = "\n".join( + "p{n}: pullRequest(number: {n}) {{ author {{ login }} }}".format(n=n) + for n in numbers) + query = 'query {{ repository(owner: "{}", name: "{}") {{\n{}\n}} }}'.format( + owner, name, aliases) + try: + # check=False: a single missing/blocked PR makes gh exit non-zero, but + # it still prints valid ``data`` for every PR it *could* resolve. Read + # that stdout rather than discarding the whole batch on a partial error. + out = run(["gh", "api", "graphql", "-f", "query=" + query], check=False) + except FileNotFoundError: + return {} # gh not installed + try: + repo = json.loads(out)["data"]["repository"] + except (ValueError, KeyError, TypeError): + return {} + resolved = {} # type: dict + for n in numbers: + node = repo.get("p{}".format(n)) + if node is None: + continue # PR not found / errored — leave uncached for retry + author = node.get("author") + resolved[n] = author.get("login") if author else None + return resolved + + +def resolve_pr_authors(prs): + # type: (list[dict]) -> list[dict] + """Fill in trustworthy GitHub logins for PRs that lack a noreply login. + + Confidence order: + 1. noreply login — already set by get_prs_from_diff, always correct. + 2. cache (scripts/pr-authors.json) — previously resolved from the API. + 3. GitHub GraphQL — the authoritative PR author, batched then cached. + + PRs that still cannot be resolved keep ``login=None``; format_pr_list then + credits the plain commit name with no ``@mention``, so the notes never link + or ping the wrong person. Mutates and returns ``prs``. + """ + need = [pr for pr in prs if not (pr.get("author") or {}).get("login")] + if not need: + return prs + + cache = load_author_cache() + to_query = sorted({pr["number"] for pr in need + if str(pr["number"]) not in cache}) + + if to_query: + print(" Resolving {} PR author(s) via GitHub API...".format( + len(to_query)), file=sys.stderr) + dirty = False + for i in range(0, len(to_query), _GRAPHQL_BATCH): + resolved = _graphql_pr_authors(to_query[i:i + _GRAPHQL_BATCH]) + for num, login in resolved.items(): + cache[str(num)] = login + dirty = True + if dirty: + save_author_cache(cache) + + for pr in need: + login = cache.get(str(pr["number"])) + if login: + pr["author"]["login"] = login + return prs # ── Effort computation ─────────────────────────────────────────────── @@ -806,11 +927,12 @@ def get_prs_from_diff(from_ref, to_ref): of commits). The expensive per-PR effort metrics are computed separately by ``add_pr_effort`` so callers can skip them for unchanged pages. """ - # Use a format that gives us everything: hash, author email, subject, body - # Separator between commits: a line that won't appear in commit messages + # Use a format that gives us everything: hash, author email, author name, + # subject, body. The name is kept as a safe fallback credit for PRs whose + # GitHub login cannot be proven (see resolve_pr_authors / format_pr_list). SEP = "---COMMIT-END-7f3b---" log = run(["git", "log", - "--format=%H%n%ae%n%s%n%b{}".format(SEP), + "--format=%H%n%ae%n%an%n%s%n%b{}".format(SEP), "{}..{}".format(from_ref, to_ref)]) prs = [] @@ -820,14 +942,15 @@ def get_prs_from_diff(from_ref, to_ref): block = block.strip() if not block: continue - lines = block.split("\n", 3) - if len(lines) < 3: + lines = block.split("\n", 4) + if len(lines) < 4: continue commit_hash = lines[0].strip() author_email = lines[1].strip() - subject = lines[2].strip() - body = lines[3].strip() if len(lines) > 3 else "" + author_name = lines[2].strip() + subject = lines[3].strip() + body = lines[4].strip() if len(lines) > 4 else "" # Extract PR number from subject: "Some title (#1234)" m = re.search(r"\(#(\d+)\)\s*$", subject) @@ -841,12 +964,18 @@ def get_prs_from_diff(from_ref, to_ref): # Title is the subject minus the PR ref title = re.sub(r"\s*\(#\d+\)\s*$", "", subject) - # Author login from email + # A GitHub login is only certain from a noreply address; otherwise leave + # it None and let resolve_pr_authors look up the real handle. We never + # guess a handle from an email local part — that mis-credits real users. login = _login_from_email(author_email) prs.append({ "title": title, - "author": {"login": login}, + "author": { + "login": login, + "name": author_name, + "email": author_email, + }, "url": "https://github.com/{}/pull/{}".format(REPO, num), "number": num, "body": body, @@ -923,9 +1052,11 @@ def format_pr_list(prs, metadata): else: for pr in prs: title = pr.get("title", "") - author = (pr.get("author") or {}).get("login", "unknown") + author_info = pr.get("author") or {} + login = author_info.get("login") + name = author_info.get("name") or "unknown" url = pr.get("url", "") - is_community = author != "mattleibow" + is_community = login != "mattleibow" community_str = " [community ✨]" if is_community else "" commits = pr.get("commitCount", 0) days = pr.get("workingDays", 0) @@ -935,8 +1066,13 @@ def format_pr_list(prs, metadata): skia_pr = pr.get("skiaPr") skia_str = " (skia: mono/skia#{})".format(skia_pr) if skia_pr else "" - lines.append(" - {} by @{} in {}{}{}{}".format( - title, author, url, community_str, effort, skia_str)) + # Credit a linkable @handle only when the login is known; otherwise + # fall back to the plain commit name (no @, no link) so the notes + # never mention — and notify — the wrong GitHub user. + by = "by @{}".format(login) if login else "by {}".format(name) + + lines.append(" - {} {} in {}{}{}{}".format( + title, by, url, community_str, effort, skia_str)) lines.append("-->") lines.append("") @@ -1255,8 +1391,8 @@ def _canonical_branches_by_version(all_branches): return canonical -def _write_page(branch, all_branches, verbose=False): - # type: (str, list[str], bool) -> Optional[str] +def _write_page(branch, all_branches, verbose=False, force=False): + # type: (str, list[str], bool, bool) -> Optional[str] """Generate one release page from a branch. Returns its path, or None. Single code path shared by ``--branch`` and ``--all``: resolves the diff @@ -1294,14 +1430,16 @@ def _write_page(branch, all_branches, verbose=False): print(" Found {} PR(s), diff: {}".format(len(prs), diff_range_str)) output_path = RELEASES_DIR / _page_filename(branch, version) - if _is_content_unchanged(output_path, len(prs), diff_range_str, - status, superseded_by, supersedes): + if not force and _is_content_unchanged(output_path, len(prs), diff_range_str, + status, superseded_by, supersedes): print(" Skipping {} (unchanged)".format(output_path)) return None - # The page is changing, so it's worth the per-PR effort fetches now. Doing - # this AFTER the unchanged check is what keeps an all-unchanged --all run - # cheap: skipped pages never pay the ~1s/PR network cost. + # The page is changing, so it's worth the network work now: resolving the + # true GitHub handles (API, cached) and the per-PR effort fetches. Doing this + # AFTER the unchanged check is what keeps an all-unchanged --all run cheap: + # skipped pages never pay the network cost. + resolve_pr_authors(prs) add_pr_effort(prs) metadata = { @@ -1322,8 +1460,8 @@ def _write_page(branch, all_branches, verbose=False): return str(output_path) -def cmd_branch(branch): - # type: (str) -> None +def cmd_branch(branch, force=False): + # type: (str, bool) -> None """Diff a branch against its predecessor and write raw data to the version file.""" branch = _removeprefix(branch, "origin/") @@ -1360,7 +1498,7 @@ def cmd_branch(branch): target = canonical files_to_polish = [] - path = _write_page(target, all_branches, verbose=True) + path = _write_page(target, all_branches, verbose=True, force=force) if path: files_to_polish.append(path) @@ -1368,7 +1506,7 @@ def cmd_branch(branch): # — the diff range for main or the servicing .x branch may have changed now # that a new release branch exists. if target != "main" and not target.endswith(".x"): - files_to_polish.extend(_regen_unreleased(target, all_branches)) + files_to_polish.extend(_regen_unreleased(target, all_branches, force=force)) cmd_update_toc() @@ -1380,8 +1518,8 @@ def cmd_branch(branch): print("========================================") -def _regen_unreleased(trigger_branch, all_branches): - # type: (str, list[str]) -> list[str] +def _regen_unreleased(trigger_branch, all_branches, force=False): + # type: (str, list[str], bool) -> list[str] """Regenerate unreleased pages after a versioned branch push. When a new release/X.Y.Z branch appears, the diff ranges for main and/or the @@ -1398,7 +1536,7 @@ def _regen_unreleased(trigger_branch, all_branches): svc_branch = "release/{}.x".format(minor) if svc_branch in all_branches: print("\nRegenerating unreleased for {}...".format(svc_branch)) - path = _write_page(svc_branch, all_branches) + path = _write_page(svc_branch, all_branches, force=force) if path: written.append(path) @@ -1407,7 +1545,7 @@ def _regen_unreleased(trigger_branch, all_branches): main_version = get_upcoming_version() if main_version and minor_group(main_version) == minor: print("\nRegenerating unreleased for main...") - path = _write_page("main", all_branches) + path = _write_page("main", all_branches, force=force) if path: written.append(path) @@ -1417,8 +1555,8 @@ def _regen_unreleased(trigger_branch, all_branches): # ── Main ───────────────────────────────────────────────────────────── -def cmd_all(): - # type: () -> None +def cmd_all(force=False): + # type: (bool) -> None """Process all branches (main + all release/*). Skip unchanged files. This is the idempotent "regenerate everything" mode used by the automated @@ -1475,7 +1613,7 @@ def cmd_all(): continue print("\n--- Processing: {} ---".format(branch)) - path = _write_page(branch, all_branches) + path = _write_page(branch, all_branches, force=force) if path: files_to_polish.append(path) processed_count += 1 @@ -1524,6 +1662,10 @@ def main(): parser.add_argument( "--update-toc", action="store_true", help="Regenerate TOC.yml + index.md") + parser.add_argument( + "--force", action="store_true", + help="Rewrite pages even when the raw data is unchanged " + "(use with --all or --branch to re-resolve author handles)") args = parser.parse_args() @@ -1538,9 +1680,9 @@ def main(): if args.update_toc: cmd_update_toc() elif args.all: - cmd_all() + cmd_all(force=args.force) elif args.branch: - cmd_branch(args.branch) + cmd_branch(args.branch, force=args.force) if __name__ == "__main__": diff --git a/documentation/docfx/releases/1.49.0.md b/documentation/docfx/releases/1.49.0.md index 778a645a5ab..97213c452f8 100644 --- a/documentation/docfx/releases/1.49.0.md +++ b/documentation/docfx/releases/1.49.0.md @@ -3,7 +3,7 @@ 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-16T18:14:18Z by generate-release-notes.py + Generated: 2026-06-16T19:32:16Z by generate-release-notes.py version: 1.49.0 status: preview branch: release/1.49.0-preview1 diff --git a/documentation/docfx/releases/1.49.1.md b/documentation/docfx/releases/1.49.1.md index 389e0e133c7..b096c5252b3 100644 --- a/documentation/docfx/releases/1.49.1.md +++ b/documentation/docfx/releases/1.49.1.md @@ -3,7 +3,7 @@ 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-16T18:14:18Z by generate-release-notes.py + Generated: 2026-06-16T19:32:16Z by generate-release-notes.py version: 1.49.1 status: stable branch: release/1.49.1 diff --git a/documentation/docfx/releases/1.49.2.1.md b/documentation/docfx/releases/1.49.2.1.md index 42687854e6d..c31df8f5e3f 100644 --- a/documentation/docfx/releases/1.49.2.1.md +++ b/documentation/docfx/releases/1.49.2.1.md @@ -3,7 +3,7 @@ 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-16T18:14:18Z by generate-release-notes.py + Generated: 2026-06-16T19:32:16Z by generate-release-notes.py version: 1.49.2.1 status: stable branch: release/1.49.2.1-beta diff --git a/documentation/docfx/releases/1.49.2.md b/documentation/docfx/releases/1.49.2.md index e3a7377da60..e7594208cf4 100644 --- a/documentation/docfx/releases/1.49.2.md +++ b/documentation/docfx/releases/1.49.2.md @@ -3,7 +3,7 @@ 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-16T18:14:18Z by generate-release-notes.py + Generated: 2026-06-16T19:32:16Z by generate-release-notes.py version: 1.49.2 status: stable branch: release/1.49.2-beta diff --git a/documentation/docfx/releases/1.49.3.md b/documentation/docfx/releases/1.49.3.md index fed25e5c122..8d3da500f1b 100644 --- a/documentation/docfx/releases/1.49.3.md +++ b/documentation/docfx/releases/1.49.3.md @@ -3,7 +3,7 @@ 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-16T18:14:20Z by generate-release-notes.py + Generated: 2026-06-16T19:32:18Z by generate-release-notes.py version: 1.49.3 status: stable branch: release/1.49.3-beta diff --git a/documentation/docfx/releases/1.49.4.md b/documentation/docfx/releases/1.49.4.md index 0afeae87a0f..406ad5b105c 100644 --- a/documentation/docfx/releases/1.49.4.md +++ b/documentation/docfx/releases/1.49.4.md @@ -3,7 +3,7 @@ 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-16T18:14:21Z by generate-release-notes.py + Generated: 2026-06-16T19:32:19Z by generate-release-notes.py version: 1.49.4 status: stable branch: release/1.49.4-beta diff --git a/documentation/docfx/releases/1.53.0.md b/documentation/docfx/releases/1.53.0.md index 3a2f6787f55..e781517a7f4 100644 --- a/documentation/docfx/releases/1.53.0.md +++ b/documentation/docfx/releases/1.53.0.md @@ -3,7 +3,7 @@ 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-16T18:14:22Z by generate-release-notes.py + Generated: 2026-06-16T19:32:20Z by generate-release-notes.py version: 1.53.0 status: stable branch: release/1.53.0 diff --git a/documentation/docfx/releases/1.53.1.1.md b/documentation/docfx/releases/1.53.1.1.md index 94e2de2eb4b..eb32fe3cc8c 100644 --- a/documentation/docfx/releases/1.53.1.1.md +++ b/documentation/docfx/releases/1.53.1.1.md @@ -3,7 +3,7 @@ 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-16T18:14:22Z by generate-release-notes.py + Generated: 2026-06-16T19:32:20Z by generate-release-notes.py version: 1.53.1.1 status: stable branch: release/1.53.1.1 diff --git a/documentation/docfx/releases/1.53.1.2.md b/documentation/docfx/releases/1.53.1.2.md index 924c2ab51bb..e708082cfc5 100644 --- a/documentation/docfx/releases/1.53.1.2.md +++ b/documentation/docfx/releases/1.53.1.2.md @@ -3,7 +3,7 @@ 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-16T18:14:22Z by generate-release-notes.py + Generated: 2026-06-16T19:32:20Z by generate-release-notes.py version: 1.53.1.2 status: stable branch: release/1.53.1.2 diff --git a/documentation/docfx/releases/1.53.1.md b/documentation/docfx/releases/1.53.1.md index f0a9132f99a..e60c725acc0 100644 --- a/documentation/docfx/releases/1.53.1.md +++ b/documentation/docfx/releases/1.53.1.md @@ -3,7 +3,7 @@ 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-16T18:14:22Z by generate-release-notes.py + Generated: 2026-06-16T19:32:20Z by generate-release-notes.py version: 1.53.1 status: stable branch: release/1.53.1 diff --git a/documentation/docfx/releases/1.53.2.md b/documentation/docfx/releases/1.53.2.md index 2d5933676b9..127089ca33b 100644 --- a/documentation/docfx/releases/1.53.2.md +++ b/documentation/docfx/releases/1.53.2.md @@ -3,7 +3,7 @@ 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-16T18:14:22Z by generate-release-notes.py + Generated: 2026-06-16T19:32:20Z by generate-release-notes.py version: 1.53.2 status: stable branch: release/1.53.2-gpu2 diff --git a/documentation/docfx/releases/1.54.0.md b/documentation/docfx/releases/1.54.0.md index 930e3173396..8aff0cca504 100644 --- a/documentation/docfx/releases/1.54.0.md +++ b/documentation/docfx/releases/1.54.0.md @@ -3,7 +3,7 @@ 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-16T18:14:23Z by generate-release-notes.py + Generated: 2026-06-16T19:32:20Z by generate-release-notes.py version: 1.54.0 status: stable branch: release/1.54.0 diff --git a/documentation/docfx/releases/1.54.1.1.md b/documentation/docfx/releases/1.54.1.1.md index 8cee69a5a79..8901e99249a 100644 --- a/documentation/docfx/releases/1.54.1.1.md +++ b/documentation/docfx/releases/1.54.1.1.md @@ -3,7 +3,7 @@ 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-16T18:14:23Z by generate-release-notes.py + Generated: 2026-06-16T19:32:21Z by generate-release-notes.py version: 1.54.1.1 status: stable branch: release/1.54.1.1 diff --git a/documentation/docfx/releases/1.54.1.md b/documentation/docfx/releases/1.54.1.md index 9646babc9ce..593748f4ddf 100644 --- a/documentation/docfx/releases/1.54.1.md +++ b/documentation/docfx/releases/1.54.1.md @@ -3,7 +3,7 @@ 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-16T18:14:23Z by generate-release-notes.py + Generated: 2026-06-16T19:32:20Z by generate-release-notes.py version: 1.54.1 status: stable branch: release/1.54.1 diff --git a/documentation/docfx/releases/1.55.0.md b/documentation/docfx/releases/1.55.0.md index 73108bf595b..a1011fb2c15 100644 --- a/documentation/docfx/releases/1.55.0.md +++ b/documentation/docfx/releases/1.55.0.md @@ -3,7 +3,7 @@ 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-16T18:14:24Z by generate-release-notes.py + Generated: 2026-06-16T19:32:21Z by generate-release-notes.py version: 1.55.0 status: stable branch: release/1.55.0 diff --git a/documentation/docfx/releases/1.55.1.md b/documentation/docfx/releases/1.55.1.md index 1ac424eaa89..36c81b22670 100644 --- a/documentation/docfx/releases/1.55.1.md +++ b/documentation/docfx/releases/1.55.1.md @@ -3,7 +3,7 @@ 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-16T18:14:24Z by generate-release-notes.py + Generated: 2026-06-16T19:32:21Z by generate-release-notes.py version: 1.55.1 status: stable branch: release/1.55.1 diff --git a/documentation/docfx/releases/1.56.0.md b/documentation/docfx/releases/1.56.0.md index c1894468454..f16087a873c 100644 --- a/documentation/docfx/releases/1.56.0.md +++ b/documentation/docfx/releases/1.56.0.md @@ -3,7 +3,7 @@ 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-16T18:14:26Z by generate-release-notes.py + Generated: 2026-06-16T19:32:21Z by generate-release-notes.py version: 1.56.0 status: stable branch: release/1.56.0 diff --git a/documentation/docfx/releases/1.56.1.md b/documentation/docfx/releases/1.56.1.md index 2971b15f1f3..ae376422f26 100644 --- a/documentation/docfx/releases/1.56.1.md +++ b/documentation/docfx/releases/1.56.1.md @@ -3,7 +3,7 @@ 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-16T18:14:26Z by generate-release-notes.py + Generated: 2026-06-16T19:32:21Z by generate-release-notes.py version: 1.56.1 status: stable branch: release/1.56.1 diff --git a/documentation/docfx/releases/1.56.2.md b/documentation/docfx/releases/1.56.2.md index 00bd702a489..aa65cb4bec9 100644 --- a/documentation/docfx/releases/1.56.2.md +++ b/documentation/docfx/releases/1.56.2.md @@ -3,7 +3,7 @@ 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-16T18:14:26Z by generate-release-notes.py + Generated: 2026-06-16T19:32:21Z by generate-release-notes.py version: 1.56.2 status: stable branch: release/1.56.2 diff --git a/documentation/docfx/releases/1.57.0.md b/documentation/docfx/releases/1.57.0.md index cef9db341c1..b2853d18b71 100644 --- a/documentation/docfx/releases/1.57.0.md +++ b/documentation/docfx/releases/1.57.0.md @@ -3,7 +3,7 @@ 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-16T18:14:27Z by generate-release-notes.py + Generated: 2026-06-16T19:32:22Z by generate-release-notes.py version: 1.57.0 status: stable branch: release/1.57.0 diff --git a/documentation/docfx/releases/1.57.1.md b/documentation/docfx/releases/1.57.1.md index d140ca15eee..2bc12b77708 100644 --- a/documentation/docfx/releases/1.57.1.md +++ b/documentation/docfx/releases/1.57.1.md @@ -3,7 +3,7 @@ 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-16T18:14:27Z by generate-release-notes.py + Generated: 2026-06-16T19:32:22Z by generate-release-notes.py version: 1.57.1 status: stable branch: release/1.57.1 diff --git a/documentation/docfx/releases/1.58.0.md b/documentation/docfx/releases/1.58.0.md index 8f1593b7b53..eaa0f41e39a 100644 --- a/documentation/docfx/releases/1.58.0.md +++ b/documentation/docfx/releases/1.58.0.md @@ -3,7 +3,7 @@ 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-16T18:14:28Z by generate-release-notes.py + Generated: 2026-06-16T19:32:22Z by generate-release-notes.py version: 1.58.0 status: stable branch: release/1.58.0 diff --git a/documentation/docfx/releases/1.58.1.1.md b/documentation/docfx/releases/1.58.1.1.md index e091f163b57..dbb99cf8f18 100644 --- a/documentation/docfx/releases/1.58.1.1.md +++ b/documentation/docfx/releases/1.58.1.1.md @@ -3,7 +3,7 @@ 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-16T18:14:28Z by generate-release-notes.py + Generated: 2026-06-16T19:32:22Z by generate-release-notes.py version: 1.58.1.1 status: stable branch: release/1.58.1.1 diff --git a/documentation/docfx/releases/1.58.1.md b/documentation/docfx/releases/1.58.1.md index de06b5490ef..10fe75a7142 100644 --- a/documentation/docfx/releases/1.58.1.md +++ b/documentation/docfx/releases/1.58.1.md @@ -3,7 +3,7 @@ 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-16T18:14:28Z by generate-release-notes.py + Generated: 2026-06-16T19:32:22Z by generate-release-notes.py version: 1.58.1 status: stable branch: release/1.58.1 diff --git a/documentation/docfx/releases/1.59.0.md b/documentation/docfx/releases/1.59.0.md index 4a613b2dde7..0907cc98b3d 100644 --- a/documentation/docfx/releases/1.59.0.md +++ b/documentation/docfx/releases/1.59.0.md @@ -3,7 +3,7 @@ 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-16T18:14:29Z by generate-release-notes.py + Generated: 2026-06-16T19:32:23Z by generate-release-notes.py version: 1.59.0 status: stable branch: release/1.59.0 diff --git a/documentation/docfx/releases/1.59.1.1.md b/documentation/docfx/releases/1.59.1.1.md index d7cba152d5f..60b4c4e914c 100644 --- a/documentation/docfx/releases/1.59.1.1.md +++ b/documentation/docfx/releases/1.59.1.1.md @@ -3,7 +3,7 @@ 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-16T18:14:29Z by generate-release-notes.py + Generated: 2026-06-16T19:32:23Z by generate-release-notes.py version: 1.59.1.1 status: stable branch: release/1.59.1.1 diff --git a/documentation/docfx/releases/1.59.1.md b/documentation/docfx/releases/1.59.1.md index dccc28cd032..7a0994d21d7 100644 --- a/documentation/docfx/releases/1.59.1.md +++ b/documentation/docfx/releases/1.59.1.md @@ -3,7 +3,7 @@ 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-16T18:14:29Z by generate-release-notes.py + Generated: 2026-06-16T19:32:23Z by generate-release-notes.py version: 1.59.1 status: stable branch: release/1.59.1 diff --git a/documentation/docfx/releases/1.59.2.md b/documentation/docfx/releases/1.59.2.md index 0542aaf79a6..731fa7c2f74 100644 --- a/documentation/docfx/releases/1.59.2.md +++ b/documentation/docfx/releases/1.59.2.md @@ -3,7 +3,7 @@ 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-16T18:14:30Z by generate-release-notes.py + Generated: 2026-06-16T19:32:25Z by generate-release-notes.py version: 1.59.2 status: stable branch: release/1.59.2 diff --git a/documentation/docfx/releases/1.59.3.md b/documentation/docfx/releases/1.59.3.md index 39882e0bdd3..4239bc452bd 100644 --- a/documentation/docfx/releases/1.59.3.md +++ b/documentation/docfx/releases/1.59.3.md @@ -3,7 +3,7 @@ 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-16T18:14:30Z by generate-release-notes.py + Generated: 2026-06-16T19:32:25Z by generate-release-notes.py version: 1.59.3 status: stable branch: release/1.59.3 diff --git a/documentation/docfx/releases/1.60.0.md b/documentation/docfx/releases/1.60.0.md index f4159f5a32f..36c4a4e116f 100644 --- a/documentation/docfx/releases/1.60.0.md +++ b/documentation/docfx/releases/1.60.0.md @@ -3,7 +3,7 @@ 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-16T18:14:31Z by generate-release-notes.py + Generated: 2026-06-16T19:32:25Z by generate-release-notes.py version: 1.60.0 status: stable branch: release/1.60.0 diff --git a/documentation/docfx/releases/1.60.1.md b/documentation/docfx/releases/1.60.1.md index 04a3dc11a10..9f4acbe4e4d 100644 --- a/documentation/docfx/releases/1.60.1.md +++ b/documentation/docfx/releases/1.60.1.md @@ -3,7 +3,7 @@ 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-16T18:14:32Z by generate-release-notes.py + Generated: 2026-06-16T19:32:27Z by generate-release-notes.py version: 1.60.1 status: stable branch: release/1.60.1 diff --git a/documentation/docfx/releases/1.60.2.md b/documentation/docfx/releases/1.60.2.md index acd984a0897..3171146fd9f 100644 --- a/documentation/docfx/releases/1.60.2.md +++ b/documentation/docfx/releases/1.60.2.md @@ -3,7 +3,7 @@ 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-16T18:14:32Z by generate-release-notes.py + Generated: 2026-06-16T19:32:27Z by generate-release-notes.py version: 1.60.2 status: stable branch: release/1.60.2 diff --git a/documentation/docfx/releases/1.60.3.md b/documentation/docfx/releases/1.60.3.md index 0f79f0e1ffa..f2a6cf3d8cf 100644 --- a/documentation/docfx/releases/1.60.3.md +++ b/documentation/docfx/releases/1.60.3.md @@ -3,7 +3,7 @@ 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-16T18:14:34Z by generate-release-notes.py + Generated: 2026-06-16T19:32:29Z by generate-release-notes.py version: 1.60.3 status: stable branch: release/1.60.3 diff --git a/documentation/docfx/releases/1.68.0.md b/documentation/docfx/releases/1.68.0.md index bcea8195794..0e6100a3cdf 100644 --- a/documentation/docfx/releases/1.68.0.md +++ b/documentation/docfx/releases/1.68.0.md @@ -3,7 +3,7 @@ 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-16T18:14:41Z by generate-release-notes.py + Generated: 2026-06-16T19:32:35Z by generate-release-notes.py version: 1.68.0 status: stable branch: release/1.68.0 diff --git a/documentation/docfx/releases/1.68.1.1.md b/documentation/docfx/releases/1.68.1.1.md index f09ecb3479f..8e26cced77a 100644 --- a/documentation/docfx/releases/1.68.1.1.md +++ b/documentation/docfx/releases/1.68.1.1.md @@ -3,7 +3,7 @@ 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-16T18:16:03Z by generate-release-notes.py + Generated: 2026-06-16T19:33:49Z by generate-release-notes.py version: 1.68.1.1 status: stable branch: release/1.68.1.1 diff --git a/documentation/docfx/releases/1.68.1.md b/documentation/docfx/releases/1.68.1.md index 6c18ccf6a32..3a8dc0651fe 100644 --- a/documentation/docfx/releases/1.68.1.md +++ b/documentation/docfx/releases/1.68.1.md @@ -3,7 +3,7 @@ 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-16T18:15:47Z by generate-release-notes.py + Generated: 2026-06-16T19:33:34Z by generate-release-notes.py version: 1.68.1 status: stable branch: release/1.68.1 @@ -46,7 +46,7 @@ - Improve the test runners by @mattleibow in https://github.com/mono/SkiaSharp/pull/903 (18 commits, 3 days) - Make sure everything is fine in Debug builds by @mattleibow in https://github.com/mono/SkiaSharp/pull/891 (6 commits, 3 days) - [HarfBuzzSharp] font funcs by @Gillibald in https://github.com/mono/SkiaSharp/pull/881 [community ✨] (31 commits, 5 days) - - Change native artifact name to match Azure Build. by @danien.chee in https://github.com/mono/SkiaSharp/pull/892 [community ✨] (1 commit, 1 day) + - Change native artifact name to match Azure Build. by @danien in https://github.com/mono/SkiaSharp/pull/892 [community ✨] (1 commit, 1 day) - Use Span for data, bitmap data and text blobs by @mattleibow in https://github.com/mono/SkiaSharp/pull/865 (20 commits, 5 days) - Add a method to reduce verbosity for multi-delegates by @mattleibow in https://github.com/mono/SkiaSharp/pull/882 (1 commit, 1 day) - Upgrade the macOS bots and software by @mattleibow in https://github.com/mono/SkiaSharp/pull/884 (7 commits, 1 day) @@ -55,7 +55,7 @@ - Use better variables and scripts by @mattleibow in https://github.com/mono/SkiaSharp/pull/885 (9 commits, 1 day) - Improve the delegate proxies by @mattleibow in https://github.com/mono/SkiaSharp/pull/878 (6 commits, 2 days) - Fix implementation of the iOS canvas by @mattleibow in https://github.com/mono/SkiaSharp/pull/879 (1 commit, 1 day) - - Fix #849 : function ToSKPixmap create display artifacts with transparent bitmaps by @c.esneault in https://github.com/mono/SkiaSharp/pull/863 [community ✨] (5 commits, 4 days) + - Fix #849 : function ToSKPixmap create display artifacts with transparent bitmaps by @Odirb in https://github.com/mono/SkiaSharp/pull/863 [community ✨] (5 commits, 4 days) - Update HarfBuzz to v2.5.2 by @Gillibald in https://github.com/mono/SkiaSharp/pull/872 [community ✨] (15 commits, 2 days) - Make sure to build Debug samples in PRs by @mattleibow in https://github.com/mono/SkiaSharp/pull/875 (6 commits, 2 days) - Update some versions and fix the sample builds by @mattleibow in https://github.com/mono/SkiaSharp/pull/869 (1 commit, 1 day) @@ -86,7 +86,7 @@ ## Highlights -A large release that modernizes the type marshalling layer, adds `Span` support across the data and text APIs, and introduces a WPF backend for Xamarin.Forms. HarfBuzz and HarfBuzzSharp received a series of updates and new font-function bindings from [@Gillibald](https://github.com/Gillibald), and the project moved onto a brand-new Azure DevOps pipeline with a custom P/Invoke generator. Community contributions from [@alexandrvslv](https://github.com/alexandrvslv), [@Gillibald](https://github.com/Gillibald), [@c.esneault](https://github.com/c.esneault), [@danien.chee](https://github.com/danien.chee) and [@newky2k](https://github.com/newky2k) shaped this release. +A large release that modernizes the type marshalling layer, adds `Span` support across the data and text APIs, and introduces a WPF backend for Xamarin.Forms. HarfBuzz and HarfBuzzSharp received a series of updates and new font-function bindings from [@Gillibald](https://github.com/Gillibald), and the project moved onto a brand-new Azure DevOps pipeline with a custom P/Invoke generator. Community contributions from [@alexandrvslv](https://github.com/alexandrvslv), [@Gillibald](https://github.com/Gillibald), [@Odirb](https://github.com/Odirb), [@danien](https://github.com/danien) and [@newky2k](https://github.com/newky2k) shaped this release. ## New Features @@ -126,7 +126,7 @@ A large release that modernizes the type marshalling layer, adds `Span` suppo - **Fixed an `SKRoundRect` memory leak** — Stops `SKRoundRect` from leaking native memory. ([#995](https://github.com/mono/SkiaSharp/pull/995)) - **Improved UWP GPU view stability** — Hardens the UWP GPU view against intermittent failures. ([#1024](https://github.com/mono/SkiaSharp/pull/1024)) - **Fixed the iOS canvas implementation** — Corrects the iOS canvas behavior. ([#879](https://github.com/mono/SkiaSharp/pull/879), [#1022](https://github.com/mono/SkiaSharp/pull/1022)) -- **Fixed transparent-bitmap artifacts in `ToSKPixmap`** — Resolves display artifacts when converting transparent bitmaps (#849). ❤️ [@c.esneault](https://github.com/c.esneault) ([#863](https://github.com/mono/SkiaSharp/pull/863)) +- **Fixed transparent-bitmap artifacts in `ToSKPixmap`** — Resolves display artifacts when converting transparent bitmaps (#849). ❤️ [@Odirb](https://github.com/Odirb) ([#863](https://github.com/mono/SkiaSharp/pull/863)) - **Raster views no longer allocate 0 bytes** — Prevents zero-byte allocations in raster views (#759). ([#761](https://github.com/mono/SkiaSharp/pull/761)) - **Corrected reference-only color spaces** — Fixes color spaces that were created as references only. ([#922](https://github.com/mono/SkiaSharp/pull/922)) @@ -147,8 +147,8 @@ Plus a new custom P/Invoke generator, a fresh Azure DevOps build pipeline, and n |-------------|--------------| | [@Gillibald](https://github.com/Gillibald) | HarfBuzz/HarfBuzzSharp updates, font-function bindings, `int` unicode overloads, Linux export hiding | | [@alexandrvslv](https://github.com/alexandrvslv) | Bound `SKPictureShader` | -| [@c.esneault](https://github.com/c.esneault) | Fixed transparent-bitmap artifacts in `ToSKPixmap` | -| [@danien.chee](https://github.com/danien.chee) | Aligned native artifact naming with the Azure build | +| [@Odirb](https://github.com/Odirb) | Fixed transparent-bitmap artifacts in `ToSKPixmap` | +| [@danien](https://github.com/danien) | Aligned native artifact naming with the Azure build | | [@newky2k](https://github.com/newky2k) | Added NuGet validation to the build | ## Links diff --git a/documentation/docfx/releases/1.68.2.1.md b/documentation/docfx/releases/1.68.2.1.md index 365f5b2cac2..bdd95afa03d 100644 --- a/documentation/docfx/releases/1.68.2.1.md +++ b/documentation/docfx/releases/1.68.2.1.md @@ -3,7 +3,7 @@ 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-16T18:17:13Z by generate-release-notes.py + Generated: 2026-06-16T19:34:50Z by generate-release-notes.py version: 1.68.2.1 status: stable branch: release/1.68.2.1 diff --git a/documentation/docfx/releases/1.68.2.md b/documentation/docfx/releases/1.68.2.md index 72ff6c66cbd..ca512bcc831 100644 --- a/documentation/docfx/releases/1.68.2.md +++ b/documentation/docfx/releases/1.68.2.md @@ -3,7 +3,7 @@ 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-16T18:17:12Z by generate-release-notes.py + Generated: 2026-06-16T19:34:49Z by generate-release-notes.py version: 1.68.2 status: stable branch: release/1.68.2 @@ -23,18 +23,18 @@ - Remove the [Preserve] attribute by @mattleibow in https://github.com/mono/SkiaSharp/pull/1229 (3 commits, 1 day) - Make sure to not dispose system fonts by @mattleibow in https://github.com/mono/SkiaSharp/pull/1224 (5 commits, 2 days) - Remove reflection usage for SKObject creation by @Gillibald in https://github.com/mono/SkiaSharp/pull/1209 [community ✨] (3 commits, 1 day) - - Link Code of Conduct by @immo in https://github.com/mono/SkiaSharp/pull/1216 [community ✨] (1 commit, 1 day) + - Link Code of Conduct by @terrajobst in https://github.com/mono/SkiaSharp/pull/1216 [community ✨] (1 commit, 1 day) - Update cake to 0.37 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1215 (1 commit, 1 day) - Update expat native library to 2.2.9 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1214 (6 commits, 2 days) - - Update SKTouchHandler.cs to fix crash bug caused by passing incorrect parameter, added pressure and eraser handling by @mischero in https://github.com/mono/SkiaSharp/pull/1212 [community ✨] (10 commits, 3 days) + - Update SKTouchHandler.cs to fix crash bug caused by passing incorrect parameter, added pressure and eraser handling by @mscherotter in https://github.com/mono/SkiaSharp/pull/1212 [community ✨] (10 commits, 3 days) - Release the skia objects when the view is unloaded by @mattleibow in https://github.com/mono/SkiaSharp/pull/1213 (2 commits, 1 day) - Add a test for text align by @mattleibow in https://github.com/mono/SkiaSharp/pull/1207 (4 commits, 2 days) - Resolve some concurrency issues by @mattleibow in https://github.com/mono/SkiaSharp/pull/1200 (23 commits, 4 days) - Fixing issue #1187 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1206 (3 commits, 2 days) - - Added device type to touch events (touch, mouse, pen) by @mischero in https://github.com/mono/SkiaSharp/pull/1191 [community ✨] (2 commits, 2 days) + - Added device type to touch events (touch, mouse, pen) by @mscherotter in https://github.com/mono/SkiaSharp/pull/1191 [community ✨] (2 commits, 2 days) - The lang parameter is not used, so remove it. by @mattleibow in https://github.com/mono/SkiaSharp/pull/1190 (1 commit, 1 day) - Re-work views to avoid incorrect disposal by @mattleibow in https://github.com/mono/SkiaSharp/pull/1180 (6 commits, 2 days) - - Merge filter factory overloads now accept null arguments by @bugfact in https://github.com/mono/SkiaSharp/pull/1185 [community ✨] (2 commits, 1 day) + - Merge filter factory overloads now accept null arguments by @ziriax in https://github.com/mono/SkiaSharp/pull/1185 [community ✨] (2 commits, 1 day) - Add the expected overload for newer versions XF.Tizen by @mattleibow in https://github.com/mono/SkiaSharp/pull/1117 (26 commits, 10 days) - Update all the build tools by @mattleibow in https://github.com/mono/SkiaSharp/pull/1175 (6 commits, 2 days) - Use vcpkg to build ANGLE by @mattleibow in https://github.com/mono/SkiaSharp/pull/1158 (11 commits, 4 days) @@ -54,7 +54,7 @@ - Update Xamarin.Forms to v4.2.0.910310 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1109 (6 commits, 2 days) - Make sure all things are listed in cgmanifest.json by @mattleibow in https://github.com/mono/SkiaSharp/pull/1103 (4 commits, 1 day) - Fix issues with buffer samples #1087 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1098 (1 commit, 1 day) - - SKGLViewRenderer dispose corrections by @zbigniew.pytka-ext in https://github.com/mono/SkiaSharp/pull/1095 [community ✨] (1 commit, 1 day) + - SKGLViewRenderer dispose corrections by @zbyszekpy in https://github.com/mono/SkiaSharp/pull/1095 [community ✨] (1 commit, 1 day) - Add a few more members for SKCanvas by @mattleibow in https://github.com/mono/SkiaSharp/pull/1090 (5 commits, 2 days) - [WIP] Add GTK views for Xamarin.Forms by @mattleibow in https://github.com/mono/SkiaSharp/pull/1089 (29 commits, 7 days) - Fix broken antialiasing with UWP SKSwapChainPanel by @validvoid in https://github.com/mono/SkiaSharp/pull/1086 [community ✨] (1 commit, 1 day) @@ -91,7 +91,7 @@ ## Highlights -A large release that expands the API surface (`SKColorF` overloads, more `SKImage`, `SKRegion`, and `SKCanvas` members, and writable pixel spans), introduces GTK views for Xamarin.Forms, and resolves a broad set of view disposal, concurrency, and memory issues. Nine community contributors — including [@Gillibald](https://github.com/Gillibald), [@mischero](https://github.com/mischero), and [@bugfact](https://github.com/bugfact) — landed user-facing improvements across the views and bindings. +A large release that expands the API surface (`SKColorF` overloads, more `SKImage`, `SKRegion`, and `SKCanvas` members, and writable pixel spans), introduces GTK views for Xamarin.Forms, and resolves a broad set of view disposal, concurrency, and memory issues. Nine community contributors — including [@Gillibald](https://github.com/Gillibald), [@mscherotter](https://github.com/mscherotter), and [@ziriax](https://github.com/ziriax) — landed user-facing improvements across the views and bindings. ## New Features @@ -113,14 +113,14 @@ A large release that expands the API surface (`SKColorF` overloads, more `SKImag - **More `SKCanvas` members** — Adds additional members to `SKCanvas`. ([#1090](https://github.com/mono/SkiaSharp/pull/1090)) - **Reflection-free object creation** — Removes reflection usage from `SKObject` creation for better performance. ❤️ [@Gillibald](https://github.com/Gillibald) ([#1209](https://github.com/mono/SkiaSharp/pull/1209)) - **More .NET-friendly method names** — Renames some methods to follow .NET conventions. ([#1255](https://github.com/mono/SkiaSharp/pull/1255)) -- **Nullable merge filter overloads** — Merge filter factory overloads now accept `null` arguments. ❤️ [@bugfact](https://github.com/bugfact) ([#1185](https://github.com/mono/SkiaSharp/pull/1185)) +- **Nullable merge filter overloads** — Merge filter factory overloads now accept `null` arguments. ❤️ [@ziriax](https://github.com/ziriax) ([#1185](https://github.com/mono/SkiaSharp/pull/1185)) ### Platform - **GTK views for Xamarin.Forms** — Adds GTK view support for Xamarin.Forms. ([#1089](https://github.com/mono/SkiaSharp/pull/1089)) - **Multi-targeted Windows.Forms views** — `SkiaSharp.Views.Windows.Forms` is now multi-targeted. ([#1082](https://github.com/mono/SkiaSharp/pull/1082)) - **Newer XF.Tizen overload** — Adds the expected overload for newer versions of Xamarin.Forms Tizen. ([#1117](https://github.com/mono/SkiaSharp/pull/1117)) -- **Richer touch events** — Adds device type (touch, mouse, pen) to touch events, plus pressure and eraser handling. ❤️ [@mischero](https://github.com/mischero) ([#1191](https://github.com/mono/SkiaSharp/pull/1191), [#1212](https://github.com/mono/SkiaSharp/pull/1212)) +- **Richer touch events** — Adds device type (touch, mouse, pen) to touch events, plus pressure and eraser handling. ❤️ [@mscherotter](https://github.com/mscherotter) ([#1191](https://github.com/mono/SkiaSharp/pull/1191), [#1212](https://github.com/mono/SkiaSharp/pull/1212)) - **VS2019 and .NET Core 3.0** — Upgrades the build to Visual Studio 2019 and .NET Core 3.0. ([#1030](https://github.com/mono/SkiaSharp/pull/1030)) - **Improved native build + Nano Server** — Improves the native build process and adds Nano Server support. ([#1040](https://github.com/mono/SkiaSharp/pull/1040)) @@ -136,7 +136,7 @@ A large release that expands the API surface (`SKColorF` overloads, more `SKImag - **Android surface refresh** — Refreshes the Android view surface when it is recreated. ([#1234](https://github.com/mono/SkiaSharp/pull/1234)) - **Reworked view disposal** — Re-works views to avoid incorrect disposal and releases Skia objects when a view is unloaded. ([#1180](https://github.com/mono/SkiaSharp/pull/1180), [#1213](https://github.com/mono/SkiaSharp/pull/1213)) - **UWP `SKSwapChainPanel` antialiasing** — Fixes broken antialiasing with the UWP `SKSwapChainPanel`. ❤️ [@validvoid](https://github.com/validvoid) ([#1086](https://github.com/mono/SkiaSharp/pull/1086)) -- **`SKGLViewRenderer` disposal** — Corrects `SKGLViewRenderer` disposal. ❤️ [@zbigniew.pytka-ext](https://github.com/zbigniew.pytka-ext) ([#1095](https://github.com/mono/SkiaSharp/pull/1095)) +- **`SKGLViewRenderer` disposal** — Corrects `SKGLViewRenderer` disposal. ❤️ [@zbyszekpy](https://github.com/zbyszekpy) ([#1095](https://github.com/mono/SkiaSharp/pull/1095)) - **WPF mouse wheel on touch** — Handles the WPF mouse wheel during touch events. ❤️ [@alexandrvslv](https://github.com/alexandrvslv) ([#1079](https://github.com/mono/SkiaSharp/pull/1079)) - **Weak reference cleanup** — `TryRemove`s instances from `WeakReference`s. ❤️ [@daltonks](https://github.com/daltonks) ([#1039](https://github.com/mono/SkiaSharp/pull/1039)) - **macOS `SKGLView` fixes** — Fixes a few issues with the macOS `SKGLView`. ([#1083](https://github.com/mono/SkiaSharp/pull/1083)) @@ -162,14 +162,14 @@ Plus several build, CI, and documentation improvements. | Contributor | What They Did | |-------------|--------------| | [@Gillibald](https://github.com/Gillibald) | Removed reflection usage from `SKObject` creation | -| [@mischero](https://github.com/mischero) | Added device type, pressure, and eraser handling to touch events | -| [@bugfact](https://github.com/bugfact) | Allowed `null` arguments in merge filter factory overloads | +| [@mscherotter](https://github.com/mscherotter) | Added device type, pressure, and eraser handling to touch events | +| [@ziriax](https://github.com/ziriax) | Allowed `null` arguments in merge filter factory overloads | | [@validvoid](https://github.com/validvoid) | Fixed UWP `SKSwapChainPanel` antialiasing | -| [@zbigniew.pytka-ext](https://github.com/zbigniew.pytka-ext) | Corrected `SKGLViewRenderer` disposal | +| [@zbyszekpy](https://github.com/zbyszekpy) | Corrected `SKGLViewRenderer` disposal | | [@alexandrvslv](https://github.com/alexandrvslv) | Added WPF mouse wheel handling on touch events | | [@daltonks](https://github.com/daltonks) | Cleaned up weak reference tracking | | [@bender2k14](https://github.com/bender2k14) | Sample cleanups | -| [@immo](https://github.com/immo) | Linked the Code of Conduct | +| [@terrajobst](https://github.com/terrajobst) | Linked the Code of Conduct | ## Links diff --git a/documentation/docfx/releases/1.68.3.md b/documentation/docfx/releases/1.68.3.md index fc27be0ab75..db47d105ec6 100644 --- a/documentation/docfx/releases/1.68.3.md +++ b/documentation/docfx/releases/1.68.3.md @@ -3,7 +3,7 @@ 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-16T18:17:18Z by generate-release-notes.py + Generated: 2026-06-16T19:34:54Z by generate-release-notes.py version: 1.68.3 status: stable branch: release/1.68.3 diff --git a/documentation/docfx/releases/2.80.0.md b/documentation/docfx/releases/2.80.0.md index 66c7c61db78..239be103408 100644 --- a/documentation/docfx/releases/2.80.0.md +++ b/documentation/docfx/releases/2.80.0.md @@ -3,7 +3,7 @@ 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-16T18:17:55Z by generate-release-notes.py + Generated: 2026-06-16T19:35:27Z by generate-release-notes.py version: 2.80.0 status: stable branch: release/2.80.0 @@ -42,7 +42,7 @@ - Improve the GPU APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/1294 (7 commits, 1 day) - Build for Vulkan on all supported platforms by @mattleibow in https://github.com/mono/SkiaSharp/pull/1287 (3 commits, 2 days) - Use Clang 10 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1286 (3 commits, 2 days) - - Implemented SKCanvas.DrawTextOnPath by @bugfact in https://github.com/mono/SkiaSharp/pull/1198 [community ✨] (124 commits, 46 days) + - Implemented SKCanvas.DrawTextOnPath by @ziriax in https://github.com/mono/SkiaSharp/pull/1198 [community ✨] (124 commits, 46 days) - New Images / Icons by @mattleibow in https://github.com/mono/SkiaSharp/pull/1281 (4 commits, 2 days) - Vulkan Support for Win32 (and APIs for everyone as well) by @mattleibow in https://github.com/mono/SkiaSharp/pull/1010 (53 commits, 17 days) - Adding back the removed enum members by @mattleibow in https://github.com/mono/SkiaSharp/pull/1285 (1 commit, 1 day) @@ -57,7 +57,7 @@ ## Highlights -This is one of the biggest SkiaSharp releases in years, upgrading to Skia milestone 80 ([#986](https://github.com/mono/SkiaSharp/pull/986)) and broadening platform support dramatically. Vulkan backends land across Win32, Android, and Linux; ARM64 comes to Win32 and ARM/ARM64 to Linux; and a brand-new WebAssembly target is introduced. Text processing is rebuilt around a glyph-focused `SKFont` type. Community contributors [@bugfact](https://github.com/bugfact) and [@bender2k14](https://github.com/bender2k14) helped drive this release. +This is one of the biggest SkiaSharp releases in years, upgrading to Skia milestone 80 ([#986](https://github.com/mono/SkiaSharp/pull/986)) and broadening platform support dramatically. Vulkan backends land across Win32, Android, and Linux; ARM64 comes to Win32 and ARM/ARM64 to Linux; and a brand-new WebAssembly target is introduced. Text processing is rebuilt around a glyph-focused `SKFont` type. Community contributors [@ziriax](https://github.com/ziriax) and [@bender2k14](https://github.com/bender2k14) helped drive this release. ### ⚠️ Breaking Changes @@ -81,7 +81,7 @@ This is one of the biggest SkiaSharp releases in years, upgrading to Skia milest ### Text & Fonts - **`SKFont` text engine** — The public `SKFont` API is now glyph-focused, providing a cleaner text pipeline. ([#1299](https://github.com/mono/SkiaSharp/pull/1299)) -- **`SKCanvas.DrawTextOnPath`** — Implemented drawing text along a path. ❤️ [@bugfact](https://github.com/bugfact) ([#1198](https://github.com/mono/SkiaSharp/pull/1198)) +- **`SKCanvas.DrawTextOnPath`** — Implemented drawing text along a path. ❤️ [@ziriax](https://github.com/ziriax) ([#1198](https://github.com/mono/SkiaSharp/pull/1198)) ### API Surface @@ -124,7 +124,7 @@ This is one of the biggest SkiaSharp releases in years, upgrading to Skia milest | Contributor | What They Did | |-------------|--------------| -| [@bugfact](https://github.com/bugfact) | Implemented `SKCanvas.DrawTextOnPath` | +| [@ziriax](https://github.com/ziriax) | Implemented `SKCanvas.DrawTextOnPath` | | [@bender2k14](https://github.com/bender2k14) | Made the SkiaSharpSample the default startup project in the WPF sample solution | ## Links diff --git a/documentation/docfx/releases/2.80.1.md b/documentation/docfx/releases/2.80.1.md index abfb106509d..d512afdcbb6 100644 --- a/documentation/docfx/releases/2.80.1.md +++ b/documentation/docfx/releases/2.80.1.md @@ -3,7 +3,7 @@ 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-16T18:17:58Z by generate-release-notes.py + Generated: 2026-06-16T19:35:30Z by generate-release-notes.py version: 2.80.1 status: stable branch: release/2.80.1 diff --git a/documentation/docfx/releases/2.80.2.md b/documentation/docfx/releases/2.80.2.md index 80630f20cfb..d1ce19a3a9f 100644 --- a/documentation/docfx/releases/2.80.2.md +++ b/documentation/docfx/releases/2.80.2.md @@ -3,7 +3,7 @@ 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-16T18:18:30Z by generate-release-notes.py + Generated: 2026-06-16T19:35:58Z by generate-release-notes.py version: 2.80.2 status: stable branch: release/2.80.2 @@ -40,9 +40,9 @@ - Passing `--configuration=debug` to the bootstrapper now generates a debug library by @mattleibow in https://github.com/mono/SkiaSharp/pull/1418 (3 commits, 2 days) - Update Docker samples to .NET Core 3.1 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1417 (3 commits, 1 day) - Alpine appears to not be ignoring the request to build without fontconfig by @mattleibow in https://github.com/mono/SkiaSharp/pull/1416 (12 commits, 1 day) - - SKCanvas.DrawTextOnPath v2.80.1 iOS NullReferenceException (#1408) by @bugfact in https://github.com/mono/SkiaSharp/pull/1410 [community ✨] (1 commit, 1 day) + - SKCanvas.DrawTextOnPath v2.80.1 iOS NullReferenceException (#1408) by @ziriax in https://github.com/mono/SkiaSharp/pull/1410 [community ✨] (1 commit, 1 day) - Fix issue when creating SKData from a non-seekable stream by @mattleibow in https://github.com/mono/SkiaSharp/pull/1411 (2 commits, 1 day) - - Fixed origin parameter is ignored in SKSurface.Create by @bugfact in https://github.com/mono/SkiaSharp/pull/1404 [community ✨] (1 commit, 1 day) + - Fixed origin parameter is ignored in SKSurface.Create by @ziriax in https://github.com/mono/SkiaSharp/pull/1404 [community ✨] (1 commit, 1 day) --> @@ -53,7 +53,7 @@ ## Highlights -A stability-focused release fixing numerous bugs across image encoding, text rendering, interop, and native library loading. New memory debugging APIs help diagnose GPU resource usage, and the Uno Platform views gain GPU support plus WASM CPU rendering. Community contributor [@bugfact](https://github.com/bugfact) drove two of the iOS and surface fixes. +A stability-focused release fixing numerous bugs across image encoding, text rendering, interop, and native library loading. New memory debugging APIs help diagnose GPU resource usage, and the Uno Platform views gain GPU support plus WASM CPU rendering. Community contributor [@ziriax](https://github.com/ziriax) drove two of the iOS and surface fixes. ## New Features @@ -82,8 +82,8 @@ A stability-focused release fixing numerous bugs across image encoding, text ren ## Bug Fixes -- **`SKSurface.Create` origin ignored** — Fixed the origin parameter being ignored when creating surfaces. ❤️ [@bugfact](https://github.com/bugfact) ([#1404](https://github.com/mono/SkiaSharp/pull/1404)) -- **`SKCanvas.DrawTextOnPath` null reference** — Fixed a `NullReferenceException` in `DrawTextOnPath` on iOS. ❤️ [@bugfact](https://github.com/bugfact) ([#1410](https://github.com/mono/SkiaSharp/pull/1410)) +- **`SKSurface.Create` origin ignored** — Fixed the origin parameter being ignored when creating surfaces. ❤️ [@ziriax](https://github.com/ziriax) ([#1404](https://github.com/mono/SkiaSharp/pull/1404)) +- **`SKCanvas.DrawTextOnPath` null reference** — Fixed a `NullReferenceException` in `DrawTextOnPath` on iOS. ❤️ [@ziriax](https://github.com/ziriax) ([#1410](https://github.com/mono/SkiaSharp/pull/1410)) - **`SKData` from non-seekable stream** — Fixed an exception when creating `SKData` from a non-seekable stream ([#1411](https://github.com/mono/SkiaSharp/pull/1411)). - **ASP.NET `DllNotFoundException`** — Now checks the correct directory for native libraries under ASP.NET ([#1483](https://github.com/mono/SkiaSharp/pull/1483)). - **Image subset encoding** — Fixed encoding overwriting the underlying pixels / encoding the full image instead of a subset ([#1457](https://github.com/mono/SkiaSharp/pull/1457)). @@ -108,7 +108,7 @@ A stability-focused release fixing numerous bugs across image encoding, text ren | Contributor | What They Did | |-------------|--------------| -| [@bugfact](https://github.com/bugfact) | Fixed the ignored `SKSurface.Create` origin and the iOS `DrawTextOnPath` `NullReferenceException` | +| [@ziriax](https://github.com/ziriax) | Fixed the ignored `SKSurface.Create` origin and the iOS `DrawTextOnPath` `NullReferenceException` | ## Links diff --git a/documentation/docfx/releases/2.80.3.md b/documentation/docfx/releases/2.80.3.md index dc32a958a9b..f1c70c53adf 100644 --- a/documentation/docfx/releases/2.80.3.md +++ b/documentation/docfx/releases/2.80.3.md @@ -3,7 +3,7 @@ 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-16T18:19:24Z by generate-release-notes.py + Generated: 2026-06-16T19:36:44Z by generate-release-notes.py version: 2.80.3 status: stable branch: release/2.80.3 @@ -20,7 +20,7 @@ - Improve build props/targets by @mattleibow in https://github.com/mono/SkiaSharp/pull/1698 (8 commits, 2 days) - Update to .NET 5.0 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1697 (9 commits, 1 day) - Pack things correctly and pin the xharness version by @mattleibow in https://github.com/mono/SkiaSharp/pull/1685 (3 commits, 1 day) - - avoid issues with failure to create gl surface by @gmurray in https://github.com/mono/SkiaSharp/pull/1642 [community ✨] (13 commits, 9 days) + - avoid issues with failure to create gl surface by @gmurray81 in https://github.com/mono/SkiaSharp/pull/1642 [community ✨] (13 commits, 9 days) - Swap the buffers after a resize by @mattleibow in https://github.com/mono/SkiaSharp/pull/1668 (2 commits, 2 days) - Fix Android Test Runner by @mattleibow in https://github.com/mono/SkiaSharp/pull/1665 (22 commits, 4 days) - Fix The Bad Things by @mattleibow in https://github.com/mono/SkiaSharp/pull/1662 (6 commits, 3 days) @@ -40,7 +40,7 @@ - Make SKElement.OnRender do nothing if there is no PresentationSource by @HarlanHugh in https://github.com/mono/SkiaSharp/pull/1606 [community ✨] (1 commit, 1 day) - Add a few APIs that make things better later by @mattleibow in https://github.com/mono/SkiaSharp/pull/1603 (1 commit, 1 day) - Merge Metal APIs from main branch by @mattleibow in https://github.com/mono/SkiaSharp/pull/1598 (36 commits, 10 days) - - docs: Add unoplatform references by @jerome.laban in https://github.com/mono/SkiaSharp/pull/1602 [community ✨] (1 commit, 1 day) + - docs: Add unoplatform references by @jeromelaban in https://github.com/mono/SkiaSharp/pull/1602 [community ✨] (1 commit, 1 day) - Add Metal APIs for macOS and iOS by @mattleibow in https://github.com/mono/SkiaSharp/pull/1394 (17 commits, 7 days) - Remove the externals/harfbuzz submodule by @mattleibow in https://github.com/mono/SkiaSharp/pull/1599 (1 commit, 1 day) - Improve the local builds by @mattleibow in https://github.com/mono/SkiaSharp/pull/1597 (6 commits, 2 days) @@ -59,7 +59,7 @@ - Ensure that SKMatrix.IsInvertible does not crash by @mattleibow in https://github.com/mono/SkiaSharp/pull/1527 (1 commit, 1 day) - Register the new HarfBuzzSharp WASM package by @mattleibow in https://github.com/mono/SkiaSharp/pull/1525 (1 commit, 1 day) - Generate the interop with harfbuzz by @mattleibow in https://github.com/mono/SkiaSharp/pull/1447 (30 commits, 11 days) - - Allow to create ANGLE GRGlInterface by @blasterloremaster in https://github.com/mono/SkiaSharp/pull/1519 [community ✨] (1 commit, 1 day) + - Allow to create ANGLE GRGlInterface by @Mikolaytis in https://github.com/mono/SkiaSharp/pull/1519 [community ✨] (1 commit, 1 day) - Update Uno Platform to v3.0 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1489 (21 commits, 6 days) - Add bindings for the serialization of SKPicture by @mattleibow in https://github.com/mono/SkiaSharp/pull/1514 (2 commits, 1 day) - Update the version to 2.80.3 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1512 (1 commit, 1 day) @@ -75,7 +75,7 @@ ## Highlights -A feature-packed release that brings the Metal rendering backend to Apple platforms, the new `SKRuntimeEffect` API for custom SkSL shaders, WinUI 3 desktop support, macOS ARM64 (Apple Silicon) native builds, .NET 5.0 targeting, and .NET Interactive notebook integration. Community contributors [@gmurray](https://github.com/gmurray), [@HarlanHugh](https://github.com/HarlanHugh), [@blasterloremaster](https://github.com/blasterloremaster), and [@jeromelaban](https://github.com/jeromelaban) all helped shape this release. +A feature-packed release that brings the Metal rendering backend to Apple platforms, the new `SKRuntimeEffect` API for custom SkSL shaders, WinUI 3 desktop support, macOS ARM64 (Apple Silicon) native builds, .NET 5.0 targeting, and .NET Interactive notebook integration. Community contributors [@gmurray81](https://github.com/gmurray81), [@HarlanHugh](https://github.com/HarlanHugh), [@Mikolaytis](https://github.com/Mikolaytis), and [@jeromelaban](https://github.com/jeromelaban) all helped shape this release. ## New Features @@ -85,8 +85,8 @@ A feature-packed release that brings the Metal rendering backend to Apple platfo - **`SKRuntimeEffect` API** — Custom GPU shader effects authored in SkSL (Skia Shading Language). ([#1604](https://github.com/mono/SkiaSharp/pull/1604)) - **`GRContextOptions`** — Exposed `GRContextOptions` for fine-grained control over GPU context creation. ([#1529](https://github.com/mono/SkiaSharp/pull/1529)) - **`GRContext.IsAbandoned`** — Exposed the `IsAbandoned` property in the C# API. ([#1659](https://github.com/mono/SkiaSharp/pull/1659)) -- **Resilient GL surface creation** — Gracefully handles failures when creating a GL surface. ❤️ [@gmurray](https://github.com/gmurray) ([#1642](https://github.com/mono/SkiaSharp/pull/1642)) -- **ANGLE `GRGlInterface`** — Allow assembling an ANGLE-based `GRGlInterface` outside UWP. ❤️ [@blasterloremaster](https://github.com/blasterloremaster) ([#1519](https://github.com/mono/SkiaSharp/pull/1519)) +- **Resilient GL surface creation** — Gracefully handles failures when creating a GL surface. ❤️ [@gmurray81](https://github.com/gmurray81) ([#1642](https://github.com/mono/SkiaSharp/pull/1642)) +- **ANGLE `GRGlInterface`** — Allow assembling an ANGLE-based `GRGlInterface` outside UWP. ❤️ [@Mikolaytis](https://github.com/Mikolaytis) ([#1519](https://github.com/mono/SkiaSharp/pull/1519)) ### API Surface @@ -131,9 +131,9 @@ A feature-packed release that brings the Metal rendering backend to Apple platfo | Contributor | What They Did | |-------------|--------------| -| [@gmurray](https://github.com/gmurray) | Made GL surface creation resilient to failures | +| [@gmurray81](https://github.com/gmurray81) | Made GL surface creation resilient to failures | | [@HarlanHugh](https://github.com/HarlanHugh) | Guarded WPF `SKElement.OnRender` against a missing `PresentationSource` | -| [@blasterloremaster](https://github.com/blasterloremaster) | Allowed assembling an ANGLE `GRGlInterface` outside UWP | +| [@Mikolaytis](https://github.com/Mikolaytis) | Allowed assembling an ANGLE `GRGlInterface` outside UWP | | [@jeromelaban](https://github.com/jeromelaban) | Added Uno Platform documentation references | ## Links diff --git a/documentation/docfx/releases/2.80.4.md b/documentation/docfx/releases/2.80.4.md index 5fc7cd9fb1d..0f51f96794b 100644 --- a/documentation/docfx/releases/2.80.4.md +++ b/documentation/docfx/releases/2.80.4.md @@ -3,7 +3,7 @@ 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-16T18:19:27Z by generate-release-notes.py + Generated: 2026-06-16T19:36:48Z by generate-release-notes.py version: 2.80.4 status: stable branch: release/2.80.4 diff --git a/documentation/docfx/releases/2.88.0.md b/documentation/docfx/releases/2.88.0.md index 95e9142da42..f03f1916c99 100644 --- a/documentation/docfx/releases/2.88.0.md +++ b/documentation/docfx/releases/2.88.0.md @@ -3,7 +3,7 @@ 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-16T18:20:29Z by generate-release-notes.py + Generated: 2026-06-16T19:37:44Z by generate-release-notes.py version: 2.88.0 status: stable branch: release/2.88.0 @@ -15,7 +15,7 @@ - Build using .NET 6.0.300 public by @mattleibow in https://github.com/mono/SkiaSharp/pull/2031 (3 commits, 1 day) - Don't try sign on forks by @mattleibow in https://github.com/mono/SkiaSharp/pull/1992 (10 commits, 2 days) - Update to .NET MAUI RC 3 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2029 (4 commits, 2 days) - - Try p/invoking to libdl.so.2 before libdl.so by @alex.koeplinger in https://github.com/mono/SkiaSharp/pull/2010 [community ✨] (1 commit, 1 day) + - Try p/invoking to libdl.so.2 before libdl.so by @akoeplinger in https://github.com/mono/SkiaSharp/pull/2010 [community ✨] (1 commit, 1 day) - Building using .NET MAUI RC 2 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2004 (8 commits, 5 days) - Update MAUI to RC 1 and use a macOS Monterey pool by @mattleibow in https://github.com/mono/SkiaSharp/pull/1986 (65 commits, 8 days) - Use an older Xamarin.Android preview via the stable VS by @mattleibow in https://github.com/mono/SkiaSharp/pull/1993 (8 commits, 3 days) @@ -32,12 +32,12 @@ - Force a single CPU on macOS/Linux by @mattleibow in https://github.com/mono/SkiaSharp/pull/1944 (1 commit, 1 day) - Build with Maui Preview 13 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1942 (3 commits, 2 days) - Update maui to Preview 12 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1932 (24 commits, 3 days) - - [android] don't include .so files in class libraries by @jonathan.peppers in https://github.com/mono/SkiaSharp/pull/1895 [community ✨] (1 commit, 1 day) - - Bumps to Uno 4.0 by @jerome.laban in https://github.com/mono/SkiaSharp/pull/1873 [community ✨] (1 commit, 1 day) + - [android] don't include .so files in class libraries by @jonathanpeppers in https://github.com/mono/SkiaSharp/pull/1895 [community ✨] (1 commit, 1 day) + - Bumps to Uno 4.0 by @jeromelaban in https://github.com/mono/SkiaSharp/pull/1873 [community ✨] (1 commit, 1 day) - Update to Maui Preview 11 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1890 (10 commits, 2 days) - - [Blazor] prevent infinite loop in SKCanvasView by @j.krumsieck in https://github.com/mono/SkiaSharp/pull/1889 [community ✨] (2 commits, 2 days) + - [Blazor] prevent infinite loop in SKCanvasView by @JensKrumsieck in https://github.com/mono/SkiaSharp/pull/1889 [community ✨] (2 commits, 2 days) - Fix the Mac Catalyst build task Inputs/Outputs by @mattleibow in https://github.com/mono/SkiaSharp/pull/1865 (1 commit, 1 day) - - Replace HandleDictionary lock with a critical section under Windows by @github in https://github.com/mono/SkiaSharp/pull/1817 [community ✨] (14 commits, 9 days) + - Replace HandleDictionary lock with a critical section under Windows by @toptensoftware in https://github.com/mono/SkiaSharp/pull/1817 [community ✨] (14 commits, 9 days) - Never dispose the native statics by @mattleibow in https://github.com/mono/SkiaSharp/pull/1863 (1 commit, 1 day) - Try to build faster on demand by @mattleibow in https://github.com/mono/SkiaSharp/pull/1859 (18 commits, 3 days) - Work around enums not being blittable by @mattleibow in https://github.com/mono/SkiaSharp/pull/1857 (4 commits, 1 day) @@ -48,7 +48,7 @@ - Clean up the publish for samples by @mattleibow in https://github.com/mono/SkiaSharp/pull/1827 (1 commit, 1 day) - Support ASP.NET Blazor Web Assembly Components by @mattleibow in https://github.com/mono/SkiaSharp/pull/1811 (43 commits, 10 days) - Bump Maui to RC 2 / P9 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1815 (11 commits, 6 days) - - [android] eliminate lots of fields in Resource.designer.cs by @jonathan.peppers in https://github.com/mono/SkiaSharp/pull/1812 [community ✨] (1 commit, 1 day) + - [android] eliminate lots of fields in Resource.designer.cs by @jonathanpeppers in https://github.com/mono/SkiaSharp/pull/1812 [community ✨] (1 commit, 1 day) - Native Windows Symbols + HarfBuzzSharp.NativeAssets.* by @mattleibow in https://github.com/mono/SkiaSharp/pull/1797 (13 commits, 5 days) - Fix the what the `IgnorePixelScaling` property works by @mattleibow in https://github.com/mono/SkiaSharp/pull/1804 (17 commits, 4 days) - Build using the older gcc 6.2 and new llvm 10 compiler by @mattleibow in https://github.com/mono/SkiaSharp/pull/1806 (2 commits, 1 day) @@ -64,10 +64,10 @@ - Split SkiaSharp package into smaller "Native Asset" packages by @mattleibow in https://github.com/mono/SkiaSharp/pull/1758 (7 commits, 3 days) - Use Invoke for Actions by @mattleibow in https://github.com/mono/SkiaSharp/pull/1754 (2 commits, 1 day) - Use the new Maui P7 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1749 (17 commits, 3 days) - - [Wasm] Add support for emscripten 2.0.23 by @jerome.laban in https://github.com/mono/SkiaSharp/pull/1746 [community ✨] (2 commits, 2 days) + - [Wasm] Add support for emscripten 2.0.23 by @jeromelaban in https://github.com/mono/SkiaSharp/pull/1746 [community ✨] (2 commits, 2 days) - Update .NET 6 by @mattleibow in https://github.com/mono/SkiaSharp/pull/1740 (19 commits, 3 days) - Ensure that VS is set up correctly by @mattleibow in https://github.com/mono/SkiaSharp/pull/1736 (1 commit, 1 day) - - Protect NRE in .NET MAUI SKCanvasView by @javiersuarezruiz in https://github.com/mono/SkiaSharp/pull/1734 [community ✨] (1 commit, 1 day) + - Protect NRE in .NET MAUI SKCanvasView by @jsuarezruiz in https://github.com/mono/SkiaSharp/pull/1734 [community ✨] (1 commit, 1 day) - iOS requires that the view have a background by @mattleibow in https://github.com/mono/SkiaSharp/pull/1730 (1 commit, 1 day) - Add .NET MAUI views (compat and handlers) by @mattleibow in https://github.com/mono/SkiaSharp/pull/1678 (80 commits, 12 days) - Free up space by deleting samples as they build by @mattleibow in https://github.com/mono/SkiaSharp/pull/1721 (4 commits, 1 day) @@ -104,9 +104,9 @@ A landmark release that brings first-class **.NET MAUI** views (both compatibili - **Xamarin.Forms on `netcoreapp3.1`** — Adds Xamarin.Forms support on .NET Core 3.1. ([#1774](https://github.com/mono/SkiaSharp/pull/1774)) - **WindowsAppSDK** — Moves Windows support onto the WindowsAppSDK. ([#1800](https://github.com/mono/SkiaSharp/pull/1800)) - **Native Asset packages** — Splits the SkiaSharp package into smaller per-platform "Native Asset" packages, with native Windows symbols and `HarfBuzzSharp.NativeAssets.*`. ([#1758](https://github.com/mono/SkiaSharp/pull/1758), [#1797](https://github.com/mono/SkiaSharp/pull/1797)) -- **emscripten 2.0.23** — ❤️ [@jerome.laban](https://github.com/jerome.laban) adds support for emscripten 2.0.23 on WebAssembly. ([#1746](https://github.com/mono/SkiaSharp/pull/1746)) -- **Uno 4.0** — ❤️ [@jerome.laban](https://github.com/jerome.laban) bumps the Uno Platform support to 4.0. ([#1873](https://github.com/mono/SkiaSharp/pull/1873)) -- **Android packaging** — ❤️ [@jonathan.peppers](https://github.com/jonathan.peppers) stops shipping `.so` files in class libraries and trims `Resource.designer.cs` fields. ([#1895](https://github.com/mono/SkiaSharp/pull/1895), [#1812](https://github.com/mono/SkiaSharp/pull/1812)) +- **emscripten 2.0.23** — ❤️ [@jeromelaban](https://github.com/jeromelaban) adds support for emscripten 2.0.23 on WebAssembly. ([#1746](https://github.com/mono/SkiaSharp/pull/1746)) +- **Uno 4.0** — ❤️ [@jeromelaban](https://github.com/jeromelaban) bumps the Uno Platform support to 4.0. ([#1873](https://github.com/mono/SkiaSharp/pull/1873)) +- **Android packaging** — ❤️ [@jonathanpeppers](https://github.com/jonathanpeppers) stops shipping `.so` files in class libraries and trims `Resource.designer.cs` fields. ([#1895](https://github.com/mono/SkiaSharp/pull/1895), [#1812](https://github.com/mono/SkiaSharp/pull/1812)) - **Debug symbols** — Adds the main PDB files to the packages. ([#1781](https://github.com/mono/SkiaSharp/pull/1781)) ### Security @@ -116,9 +116,9 @@ A landmark release that brings first-class **.NET MAUI** views (both compatibili ## Bug Fixes - **`IgnorePixelScaling`** — Fixes the behavior of the `IgnorePixelScaling` property. ([#1804](https://github.com/mono/SkiaSharp/pull/1804)) -- **Blazor `SKCanvasView` loop** — ❤️ [@j.krumsieck](https://github.com/j.krumsieck) prevents an infinite loop in the Blazor `SKCanvasView`. ([#1889](https://github.com/mono/SkiaSharp/pull/1889)) -- **MAUI `SKCanvasView` NRE** — ❤️ [@javiersuarezruiz](https://github.com/javiersuarezruiz) guards against a `NullReferenceException` in the .NET MAUI `SKCanvasView`. ([#1734](https://github.com/mono/SkiaSharp/pull/1734)) -- **Linux `libdl` resolution** — ❤️ [@alex.koeplinger](https://github.com/alex.koeplinger) tries `libdl.so.2` before `libdl.so`. ([#2010](https://github.com/mono/SkiaSharp/pull/2010)) +- **Blazor `SKCanvasView` loop** — ❤️ [@JensKrumsieck](https://github.com/JensKrumsieck) prevents an infinite loop in the Blazor `SKCanvasView`. ([#1889](https://github.com/mono/SkiaSharp/pull/1889)) +- **MAUI `SKCanvasView` NRE** — ❤️ [@jsuarezruiz](https://github.com/jsuarezruiz) guards against a `NullReferenceException` in the .NET MAUI `SKCanvasView`. ([#1734](https://github.com/mono/SkiaSharp/pull/1734)) +- **Linux `libdl` resolution** — ❤️ [@akoeplinger](https://github.com/akoeplinger) tries `libdl.so.2` before `libdl.so`. ([#2010](https://github.com/mono/SkiaSharp/pull/2010)) - **Windows handle locking** — Replaces the `HandleDictionary` lock with a critical section on Windows. ([#1817](https://github.com/mono/SkiaSharp/pull/1817)) - **Blittable enums** — Works around enums not being blittable. ([#1857](https://github.com/mono/SkiaSharp/pull/1857)) - **Native statics** — Never disposes the native static objects. ([#1863](https://github.com/mono/SkiaSharp/pull/1863)) @@ -140,11 +140,11 @@ A landmark release that brings first-class **.NET MAUI** views (both compatibili | Contributor | What They Did | |-------------|--------------| -| [@jerome.laban](https://github.com/jerome.laban) | Added emscripten 2.0.23 support and bumped Uno to 4.0 | -| [@jonathan.peppers](https://github.com/jonathan.peppers) | Improved Android packaging and trimmed generated resource fields | -| [@j.krumsieck](https://github.com/j.krumsieck) | Fixed an infinite loop in the Blazor `SKCanvasView` | -| [@javiersuarezruiz](https://github.com/javiersuarezruiz) | Guarded against an NRE in the MAUI `SKCanvasView` | -| [@alex.koeplinger](https://github.com/alex.koeplinger) | Improved `libdl` resolution on Linux | +| [@jeromelaban](https://github.com/jeromelaban) | Added emscripten 2.0.23 support and bumped Uno to 4.0 | +| [@jonathanpeppers](https://github.com/jonathanpeppers) | Improved Android packaging and trimmed generated resource fields | +| [@JensKrumsieck](https://github.com/JensKrumsieck) | Fixed an infinite loop in the Blazor `SKCanvasView` | +| [@jsuarezruiz](https://github.com/jsuarezruiz) | Guarded against an NRE in the MAUI `SKCanvasView` | +| [@akoeplinger](https://github.com/akoeplinger) | Improved `libdl` resolution on Linux | | [@mjbond-msft](https://github.com/mjbond-msft) | Added SBOM manifest generation | ## Links diff --git a/documentation/docfx/releases/2.88.1.md b/documentation/docfx/releases/2.88.1.md index 4f765735bca..ece0b31a97a 100644 --- a/documentation/docfx/releases/2.88.1.md +++ b/documentation/docfx/releases/2.88.1.md @@ -3,7 +3,7 @@ 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-16T18:21:16Z by generate-release-notes.py + Generated: 2026-06-16T19:38:25Z by generate-release-notes.py version: 2.88.1 status: stable branch: release/2.88.1 @@ -13,9 +13,9 @@ - Make the configuration public by @mattleibow in https://github.com/mono/SkiaSharp/pull/1856 (5 commits, 3 days) - Use the full library name of libc by @mattleibow in https://github.com/mono/SkiaSharp/pull/2213 (1 commit, 1 day) - Use the new .NET by @mattleibow in https://github.com/mono/SkiaSharp/pull/2212 (2 commits, 1 day) - - fix .gitignore again by @smallville7123 in https://github.com/mono/SkiaSharp/pull/2162 [community ✨] (1 commit, 1 day) - - fix: Force use Uno's Roslyn hosted generators instead of Uno.SourceGeneration tasks by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2199 [community ✨] (1 commit, 1 day) - - Fix load the font which the name contains unicode text by @mattleibow in https://github.com/mono/SkiaSharp/pull/2146 (4 commits, 3 days) + - fix .gitignore again by @mgood7123 in https://github.com/mono/SkiaSharp/pull/2162 [community ✨] (1 commit, 1 day) + - fix: Force use Uno's Roslyn hosted generators instead of Uno.SourceGeneration tasks by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2199 [community ✨] (1 commit, 1 day) + - Fix load the font which the name contains unicode text by @lindexi in https://github.com/mono/SkiaSharp/pull/2146 [community ✨] (4 commits, 3 days) - Update libjpeg-turbo to 2.1.3 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2206 (2 commits, 1 day) (skia: mono/skia#97) - The missing feature in macios is now implemented by @mattleibow in https://github.com/mono/SkiaSharp/pull/2198 (1 commit, 1 day) - Check whether the lock has been finalized before trying to enter/leave the critical section. by @RichardD2 in https://github.com/mono/SkiaSharp/pull/2195 [community ✨] (1 commit, 1 day) @@ -24,12 +24,12 @@ - Fix the Alpine build by @mattleibow in https://github.com/mono/SkiaSharp/pull/2192 (1 commit, 1 day) - Fix Alpine builds by @mattleibow in https://github.com/mono/SkiaSharp/pull/2168 (3 commits, 1 day) - Support loading animations with BOM by @mattleibow in https://github.com/mono/SkiaSharp/pull/2167 (2 commits, 1 day) - - expose AVIF image encode format by @smallville7123 in https://github.com/mono/SkiaSharp/pull/2154 [community ✨] (4 commits, 3 days) + - expose AVIF image encode format by @mgood7123 in https://github.com/mono/SkiaSharp/pull/2154 [community ✨] (4 commits, 3 days) - Clean up the nuspecs and add xmldoc by @mattleibow in https://github.com/mono/SkiaSharp/pull/2140 (1 commit, 1 day) - - add /.idea to git ignore by @smallville7123 in https://github.com/mono/SkiaSharp/pull/2138 [community ✨] (1 commit, 1 day) + - add /.idea to git ignore by @mgood7123 in https://github.com/mono/SkiaSharp/pull/2138 [community ✨] (1 commit, 1 day) - The C API is incremented by @mattleibow in https://github.com/mono/SkiaSharp/pull/2137 (2 commits, 1 day) - Bump Newtonsoft.Json in /samples/Basic/Web/SkiaSharpSample by @dependabot[bot] in https://github.com/mono/SkiaSharp/pull/2131 [community ✨] (1 commit, 1 day) - - fix: Add net6.0 ios, android, catalyst, macos, tvos, tizen for Skottie by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2133 [community ✨] (2 commits, 2 days) + - fix: Add net6.0 ios, android, catalyst, macos, tvos, tizen for Skottie by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2133 [community ✨] (2 commits, 2 days) - Update benchmark projects by @mattleibow in https://github.com/mono/SkiaSharp/pull/2130 (1 commit, 1 day) - Make the SKDataStream writeable like SKData by @mattleibow in https://github.com/mono/SkiaSharp/pull/2128 (1 commit, 1 day) - [skottie] Handle non-seekable streams by @mattleibow in https://github.com/mono/SkiaSharp/pull/2126 (1 commit, 1 day) @@ -39,20 +39,20 @@ - Update README.md and externals/skia submodule by @mattleibow in https://github.com/mono/SkiaSharp/pull/2118 (2 commits, 1 day) - Add the net6.0-tizen TFM by @mattleibow in https://github.com/mono/SkiaSharp/pull/2099 (7 commits, 1 day) - Install Tizen on CI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2100 (4 commits, 1 day) - - feat: Add support for emscripten 3.1.7 by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2094 [community ✨] (1 commit, 1 day) + - feat: Add support for emscripten 3.1.7 by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2094 [community ✨] (1 commit, 1 day) - SKShaper: Support SKPaint.TextAlign property by @koolkdev in https://github.com/mono/SkiaSharp/pull/1910 [community ✨] (10 commits, 7 days) - Move Skottie and SceneGraph out of the core SkiaSharp.dll by @mattleibow in https://github.com/mono/SkiaSharp/pull/2091 (35 commits, 3 days) - fix: Force roslyn generation for xamarin targets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2098 (8 commits, 2 days) - Merge the "classic" projects by @mattleibow in https://github.com/mono/SkiaSharp/pull/2092 (23 commits, 2 days) - Add support for excluding "namespaces" by @mattleibow in https://github.com/mono/SkiaSharp/pull/2093 (1 commit, 1 day) - - feat: Add basic Skottie support by @jerome.laban in https://github.com/mono/SkiaSharp/pull/1987 [community ✨] (11 commits, 5 days) - - ci: add retries for dowload and upload tasks by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2088 [community ✨] (1 commit, 1 day) + - feat: Add basic Skottie support by @jeromelaban in https://github.com/mono/SkiaSharp/pull/1987 [community ✨] (11 commits, 5 days) + - ci: add retries for dowload and upload tasks by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2088 [community ✨] (1 commit, 1 day) - Update Generator by @mattleibow in https://github.com/mono/SkiaSharp/pull/2087 (7 commits, 2 days) - - fix(unowasm): Adds missing Uno.WinUI javascript support file by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2086 [community ✨] (1 commit, 1 day) + - fix(unowasm): Adds missing Uno.WinUI javascript support file by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2086 [community ✨] (1 commit, 1 day) - Dynamically determine to build managed-only by @mattleibow in https://github.com/mono/SkiaSharp/pull/2085 (35 commits, 3 days) - Use macOS 11 to get things green by @mattleibow in https://github.com/mono/SkiaSharp/pull/2083 (11 commits, 1 day) - Reduce shields cache by @mattleibow in https://github.com/mono/SkiaSharp/pull/2079 (8 commits, 1 day) - - Add WinUI support by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2042 [community ✨] (33 commits, 14 days) + - Add WinUI support by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2042 [community ✨] (33 commits, 14 days) - Make pipelines better by @mattleibow in https://github.com/mono/SkiaSharp/pull/2078 (14 commits, 2 days) - Return null on invalid resize bounds by @mattleibow in https://github.com/mono/SkiaSharp/pull/2054 (1 commit, 1 day) - Update docs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2052 (4 commits, 1 day) @@ -68,7 +68,7 @@ ## Highlights -This release introduces **Skottie**, SkiaSharp's Lottie animation engine, alongside new **WinUI** support and **AVIF** image encoding. It also refreshes the bundled native dependencies (libjpeg-turbo, libwebp, libexpat and zlib) for security and correctness. Skottie, WinUI and several fixes were driven by community contributors including [@jerome.laban](https://github.com/jerome.laban), [@smallville7123](https://github.com/smallville7123), [@koolkdev](https://github.com/koolkdev), [@HarlanHugh](https://github.com/HarlanHugh) and [@RichardD2](https://github.com/RichardD2). +This release introduces **Skottie**, SkiaSharp's Lottie animation engine, alongside new **WinUI** support and **AVIF** image encoding. It also refreshes the bundled native dependencies (libjpeg-turbo, libwebp, libexpat and zlib) for security and correctness. Skottie, WinUI and several fixes were driven by community contributors including [@jeromelaban](https://github.com/jeromelaban), [@mgood7123](https://github.com/mgood7123), [@koolkdev](https://github.com/koolkdev), [@HarlanHugh](https://github.com/HarlanHugh) and [@RichardD2](https://github.com/RichardD2). ## New Features @@ -81,11 +81,11 @@ This release introduces **Skottie**, SkiaSharp's Lottie animation engine, alongs ### Animation -- **Skottie (Lottie) support** — Adds a managed Skottie binding for playing Lottie/After Effects animations. Initial support landed from ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#1987](https://github.com/mono/SkiaSharp/pull/1987)), with follow-up work adding nullable annotations and `TimeSpan` overloads, handling non-seekable streams, and moving Skottie and SceneGraph out of the core `SkiaSharp.dll` ([#2091](https://github.com/mono/SkiaSharp/pull/2091), [#2119](https://github.com/mono/SkiaSharp/pull/2119), [#2126](https://github.com/mono/SkiaSharp/pull/2126)) +- **Skottie (Lottie) support** — Adds a managed Skottie binding for playing Lottie/After Effects animations. Initial support landed from ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#1987](https://github.com/mono/SkiaSharp/pull/1987)), with follow-up work adding nullable annotations and `TimeSpan` overloads, handling non-seekable streams, and moving Skottie and SceneGraph out of the core `SkiaSharp.dll` ([#2091](https://github.com/mono/SkiaSharp/pull/2091), [#2119](https://github.com/mono/SkiaSharp/pull/2119), [#2126](https://github.com/mono/SkiaSharp/pull/2126)) ### Images & Documents -- **AVIF encoding** — Exposes the AVIF image encode format. ❤️ [@smallville7123](https://github.com/smallville7123) ([#2154](https://github.com/mono/SkiaSharp/pull/2154)) +- **AVIF encoding** — Exposes the AVIF image encode format. ❤️ [@mgood7123](https://github.com/mgood7123) ([#2154](https://github.com/mono/SkiaSharp/pull/2154)) - **Animations with a BOM** — Supports loading animations whose data starts with a byte-order mark. ([#2167](https://github.com/mono/SkiaSharp/pull/2167)) ### API Surface @@ -99,8 +99,8 @@ This release introduces **Skottie**, SkiaSharp's Lottie animation engine, alongs ### Platform -- **WinUI support** — Adds a WinUI rendering backend. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2042](https://github.com/mono/SkiaSharp/pull/2042)) -- **emscripten 3.1.7** — Updates the WebAssembly toolchain to emscripten 3.1.7. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2094](https://github.com/mono/SkiaSharp/pull/2094)) +- **WinUI support** — Adds a WinUI rendering backend. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2042](https://github.com/mono/SkiaSharp/pull/2042)) +- **emscripten 3.1.7** — Updates the WebAssembly toolchain to emscripten 3.1.7. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2094](https://github.com/mono/SkiaSharp/pull/2094)) - **`net6.0-tizen` TFM** — Adds a `net6.0-tizen` target framework. ([#2099](https://github.com/mono/SkiaSharp/pull/2099)) ## Bug Fixes @@ -111,7 +111,7 @@ This release introduces **Skottie**, SkiaSharp's Lottie animation engine, alongs - **Reshaped `SKGLView` on scale change** — Reshapes the view when `Window.BackingScaleFactor` changes (#1853). ❤️ [@HarlanHugh](https://github.com/HarlanHugh) ([#1854](https://github.com/mono/SkiaSharp/pull/1854)) - **Returned null on invalid resize bounds** — Avoids errors when resize bounds are invalid. ([#2054](https://github.com/mono/SkiaSharp/pull/2054)) - **Implemented a missing Mac/iOS feature** — Fills in functionality that was previously unimplemented on Mac/iOS. ([#2198](https://github.com/mono/SkiaSharp/pull/2198)) -- **Fixed Uno Roslyn generation** — Forces Uno's Roslyn-hosted generators and adds the missing Uno.WinUI JavaScript support file. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2199](https://github.com/mono/SkiaSharp/pull/2199), [#2086](https://github.com/mono/SkiaSharp/pull/2086)) +- **Fixed Uno Roslyn generation** — Forces Uno's Roslyn-hosted generators and adds the missing Uno.WinUI JavaScript support file. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2199](https://github.com/mono/SkiaSharp/pull/2199), [#2086](https://github.com/mono/SkiaSharp/pull/2086)) Plus the C API increment, newer .NET targeting and numerous CI and packaging improvements. @@ -128,8 +128,8 @@ Plus the C API increment, newer .NET targeting and numerous CI and packaging imp | Contributor | What They Did | |-------------|--------------| -| [@jerome.laban](https://github.com/jerome.laban) | Basic Skottie support, WinUI backend, emscripten 3.1.7, Skottie TFMs, Uno fixes, CI retries | -| [@smallville7123](https://github.com/smallville7123) | Exposed AVIF encoding and tidied `.gitignore` | +| [@jeromelaban](https://github.com/jeromelaban) | Basic Skottie support, WinUI backend, emscripten 3.1.7, Skottie TFMs, Uno fixes, CI retries | +| [@mgood7123](https://github.com/mgood7123) | Exposed AVIF encoding and tidied `.gitignore` | | [@koolkdev](https://github.com/koolkdev) | Added `SKPaint.TextAlign` support to `SKShaper` | | [@HarlanHugh](https://github.com/HarlanHugh) | Reshaped `SKGLView` on backing-scale changes | | [@RichardD2](https://github.com/RichardD2) | Guarded against entering a finalized lock | diff --git a/documentation/docfx/releases/2.88.2.md b/documentation/docfx/releases/2.88.2.md index 6703d6f22ed..8fc8413a028 100644 --- a/documentation/docfx/releases/2.88.2.md +++ b/documentation/docfx/releases/2.88.2.md @@ -3,7 +3,7 @@ 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-16T18:21:19Z by generate-release-notes.py + Generated: 2026-06-16T19:38:28Z by generate-release-notes.py version: 2.88.2 status: stable branch: release/2.88.2 @@ -11,8 +11,8 @@ prs: 3 - Convert SKRect to CGRect correctly by @mattleibow in https://github.com/mono/SkiaSharp/pull/2243 (5 commits, 1 day) - - fix: Remove unused native library block from SkiaSharp.Views.Uno.WinUI by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2231 [community ✨] (1 commit, 1 day) - - [Tizen] Change tizen graphics backend engine by @sngn.lee in https://github.com/mono/SkiaSharp/pull/2225 [community ✨] (4 commits, 2 days) + - fix: Remove unused native library block from SkiaSharp.Views.Uno.WinUI by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2231 [community ✨] (1 commit, 1 day) + - [Tizen] Change tizen graphics backend engine by @myroot in https://github.com/mono/SkiaSharp/pull/2225 [community ✨] (4 commits, 2 days) --> @@ -23,18 +23,18 @@ ## Highlights -This release corrects Apple coordinate conversion and brings two community-driven platform fixes for Uno Platform and Tizen. Thanks to [@jerome.laban](https://github.com/jerome.laban) and [@sngn.lee](https://github.com/sngn.lee) for their contributions. +This release corrects Apple coordinate conversion and brings two community-driven platform fixes for Uno Platform and Tizen. Thanks to [@jeromelaban](https://github.com/jeromelaban) and [@myroot](https://github.com/myroot) for their contributions. ## New Features ### Platform -- **Tizen graphics backend** — Changes the Tizen graphics backend engine for improved rendering on the platform. ❤️ [@sngn.lee](https://github.com/sngn.lee) ([#2225](https://github.com/mono/SkiaSharp/pull/2225)) +- **Tizen graphics backend** — Changes the Tizen graphics backend engine for improved rendering on the platform. ❤️ [@myroot](https://github.com/myroot) ([#2225](https://github.com/mono/SkiaSharp/pull/2225)) ## Bug Fixes - **Correct `SKRect` to `CGRect` conversion** — Fixes incorrect coordinate conversion when interoperating with Apple's `CGRect`. ([#2243](https://github.com/mono/SkiaSharp/pull/2243)) -- **Removed unused native library block in Uno WinUI** — Drops a stale native library reference from `SkiaSharp.Views.Uno.WinUI`. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2231](https://github.com/mono/SkiaSharp/pull/2231)) +- **Removed unused native library block in Uno WinUI** — Drops a stale native library reference from `SkiaSharp.Views.Uno.WinUI`. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2231](https://github.com/mono/SkiaSharp/pull/2231)) ## Platform Support @@ -48,8 +48,8 @@ This release corrects Apple coordinate conversion and brings two community-drive | Contributor | What They Did | |-------------|--------------| -| [@jerome.laban](https://github.com/jerome.laban) | Removed an unused native library block from `SkiaSharp.Views.Uno.WinUI` | -| [@sngn.lee](https://github.com/sngn.lee) | Changed the Tizen graphics backend engine | +| [@jeromelaban](https://github.com/jeromelaban) | Removed an unused native library block from `SkiaSharp.Views.Uno.WinUI` | +| [@myroot](https://github.com/myroot) | Changed the Tizen graphics backend engine | ## Links diff --git a/documentation/docfx/releases/2.88.3.md b/documentation/docfx/releases/2.88.3.md index 7d4a708b3a3..1305ba1d38e 100644 --- a/documentation/docfx/releases/2.88.3.md +++ b/documentation/docfx/releases/2.88.3.md @@ -3,19 +3,19 @@ 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-16T18:21:29Z by generate-release-notes.py + Generated: 2026-06-16T19:38:37Z by generate-release-notes.py version: 2.88.3 status: stable branch: release/2.88.3 diff: release/2.88.2..release/2.88.3 prs: 10 - - fix(wasm): Adjust for invalid globbing for 3.1.12 archive lookup by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2269 [community ✨] (1 commit, 1 day) + - fix(wasm): Adjust for invalid globbing for 3.1.12 archive lookup by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2269 [community ✨] (1 commit, 1 day) - Intercept and capture GL for .NET by @mattleibow in https://github.com/mono/SkiaSharp/pull/2268 (3 commits, 2 days) - Add .NET 7 Support for Blazor views by @mattleibow in https://github.com/mono/SkiaSharp/pull/2254 (8 commits, 4 days) - Update to ubuntu-20.04 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2256 (14 commits, 4 days) - Add build infrastructure for .NET 7 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2255 (14 commits, 4 days) - - feat: Generate for Emscripten 3.1.12 and SIMD features by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2259 [community ✨] (3 commits, 3 days) + - feat: Generate for Emscripten 3.1.12 and SIMD features by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2259 [community ✨] (3 commits, 3 days) - A skip is basically a read to a null buffer by @mattleibow in https://github.com/mono/SkiaSharp/pull/2265 (1 commit, 1 day) - Use new .NET things by @mattleibow in https://github.com/mono/SkiaSharp/pull/2264 (3 commits, 2 days) - Fix the use of vcpkg by @mattleibow in https://github.com/mono/SkiaSharp/pull/2257 (6 commits, 2 days) @@ -30,7 +30,7 @@ ## Highlights -This release adds .NET 7 support for Blazor views and the build infrastructure behind it, upgrades the WebAssembly build to Emscripten 3.1.12 with SIMD features, and improves GL interop for .NET. Community contributors [@jerome.laban](https://github.com/jerome.laban) and [@snnz](https://github.com/snnz) drove the WebAssembly and Linux loader improvements. +This release adds .NET 7 support for Blazor views and the build infrastructure behind it, upgrades the WebAssembly build to Emscripten 3.1.12 with SIMD features, and improves GL interop for .NET. Community contributors [@jeromelaban](https://github.com/jeromelaban) and [@snnz](https://github.com/snnz) drove the WebAssembly and Linux loader improvements. ## New Features @@ -41,12 +41,12 @@ This release adds .NET 7 support for Blazor views and the build infrastructure b ### Platform - **.NET 7 Blazor views** — Adds .NET 7 support for Blazor views, along with the supporting build infrastructure. ([#2254](https://github.com/mono/SkiaSharp/pull/2254), [#2255](https://github.com/mono/SkiaSharp/pull/2255)) -- **Emscripten 3.1.12 with SIMD** — Generates for Emscripten 3.1.12 and enables SIMD features for WebAssembly. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2259](https://github.com/mono/SkiaSharp/pull/2259)) +- **Emscripten 3.1.12 with SIMD** — Generates for Emscripten 3.1.12 and enables SIMD features for WebAssembly. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2259](https://github.com/mono/SkiaSharp/pull/2259)) - **`RTLD_DEEPBIND` dlopen flag** — Adds the `RTLD_DEEPBIND` flag to the `dlopen` mode on Linux. ❤️ [@snnz](https://github.com/snnz) ([#2247](https://github.com/mono/SkiaSharp/pull/2247)) ## Bug Fixes -- **WASM archive lookup** — Fixes invalid globbing for the 3.1.12 archive lookup. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2269](https://github.com/mono/SkiaSharp/pull/2269)) +- **WASM archive lookup** — Fixes invalid globbing for the 3.1.12 archive lookup. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2269](https://github.com/mono/SkiaSharp/pull/2269)) - **Null-buffer skip** — Treats a skip as a read into a null buffer. ([#2265](https://github.com/mono/SkiaSharp/pull/2265)) ## Platform Support @@ -61,7 +61,7 @@ This release adds .NET 7 support for Blazor views and the build infrastructure b | Contributor | What They Did | |-------------|--------------| -| [@jerome.laban](https://github.com/jerome.laban) | Upgraded WebAssembly to Emscripten 3.1.12 with SIMD and fixed archive lookup | +| [@jeromelaban](https://github.com/jeromelaban) | Upgraded WebAssembly to Emscripten 3.1.12 with SIMD and fixed archive lookup | | [@snnz](https://github.com/snnz) | Added the `RTLD_DEEPBIND` dlopen flag on Linux | ## Links diff --git a/documentation/docfx/releases/2.88.4.md b/documentation/docfx/releases/2.88.4.md index 9cfd6056103..24562f56280 100644 --- a/documentation/docfx/releases/2.88.4.md +++ b/documentation/docfx/releases/2.88.4.md @@ -3,7 +3,7 @@ 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-16T18:22:19Z by generate-release-notes.py + Generated: 2026-06-16T19:39:18Z by generate-release-notes.py version: 2.88.4 status: stable branch: release/2.88.4 @@ -14,15 +14,15 @@ - Include the NativeReference for Hot Restart by @mattleibow in https://github.com/mono/SkiaSharp/pull/2553 (2 commits, 2 days) - Skip the .NET 7.0.4xx installs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2554 (1 commit, 1 day) - Removing nesting levels through block-scoped `using` statement by @Lehonti in https://github.com/mono/SkiaSharp/pull/2528 [community ✨] (2 commits, 2 days) - - fix: Disambiguate SKGLView for uno and maui targets by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2529 [community ✨] (2 commits, 1 day) + - fix: Disambiguate SKGLView for uno and maui targets by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2529 [community ✨] (2 commits, 1 day) - Update libpng to v1.6.40 and libexpat to 2.5.0+more by @mattleibow in https://github.com/mono/SkiaSharp/pull/2510 (3 commits, 1 day) - - fix: Adjust net7.0-* resolution for Uno.WinUI targets by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2503 [community ✨] (1 commit, 1 day) - - feat: Move to JSImport for WinUI Target on net7.0 by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2428 [community ✨] (13 commits, 6 days) + - fix: Adjust net7.0-* resolution for Uno.WinUI targets by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2503 [community ✨] (1 commit, 1 day) + - feat: Move to JSImport for WinUI Target on net7.0 by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2428 [community ✨] (13 commits, 6 days) - Fixed ToRect extension method extension by @niza93 in https://github.com/mono/SkiaSharp/pull/2392 [community ✨] (4 commits, 3 days) - Pack the iossimulator RID artifacts by @mattleibow in https://github.com/mono/SkiaSharp/pull/2498 (1 commit, 1 day) - Update Cake to the latest 2.x version by @mattleibow in https://github.com/mono/SkiaSharp/pull/2500 (2 commits, 1 day) - Include the new WASM assets in Blazor for .NET 8 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2497 (1 commit, 1 day) - - fix(wasm): Enable Wasm EH and SIMD in all configurations for net8+ by @jlaban in https://github.com/mono/SkiaSharp/pull/2495 [community ✨] (4 commits, 2 days) + - fix(wasm): Enable Wasm EH and SIMD in all configurations for net8+ by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2495 [community ✨] (4 commits, 2 days) - Improve performance of hex string parsing in SKColor by @jwikberg in https://github.com/mono/SkiaSharp/pull/2467 [community ✨] (1 commit, 1 day) - Support for ARM64 macOS Machines by @mattleibow in https://github.com/mono/SkiaSharp/pull/2468 (87 commits, 11 days) - Add a .NET iOS & Mac Catalyst sample and .NET "Core" sample support by @mattleibow in https://github.com/mono/SkiaSharp/pull/2491 (7 commits, 2 days) @@ -30,10 +30,10 @@ - Run cve-bin-tool by @mattleibow in https://github.com/mono/SkiaSharp/pull/2490 (30 commits, 2 days) - Update a few dependencies by @mattleibow in https://github.com/mono/SkiaSharp/pull/2487 (14 commits, 3 days) - Use the new DownloadBuildArtifacts task by @mattleibow in https://github.com/mono/SkiaSharp/pull/2489 (1 commit, 1 day) - - Update bitmap SKAlphaType in SKXamlCanvas.Wasm.cs by @jm.alfonsi in https://github.com/mono/SkiaSharp/pull/2443 [community ✨] (2 commits, 2 days) + - Update bitmap SKAlphaType in SKXamlCanvas.Wasm.cs by @roubachof in https://github.com/mono/SkiaSharp/pull/2443 [community ✨] (2 commits, 2 days) - Fix SKCanvasView dispose exception when the view is disposed before it's rendered by @jjzhang12 in https://github.com/mono/SkiaSharp/pull/2472 [community ✨] (3 commits, 2 days) - additional check to avoid exception by @FoggyFinder in https://github.com/mono/SkiaSharp/pull/2313 [community ✨] (1 commit, 1 day) - - chore: Add support for .NET 8 Preview 4 by @jlaban in https://github.com/mono/SkiaSharp/pull/2457 [community ✨] (2 commits, 2 days) + - chore: Add support for .NET 8 Preview 4 by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2457 [community ✨] (2 commits, 2 days) - Install .NET 7 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2485 (4 commits, 2 days) - Install a specific Tizen version by @mattleibow in https://github.com/mono/SkiaSharp/pull/2486 (1 commit, 1 day) - Update zlib to 1.2.13 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2484 (3 commits, 1 day) @@ -41,20 +41,20 @@ - Ship the .aar with the NuGet for android by @dellis1972 in https://github.com/mono/SkiaSharp/pull/2465 [community ✨] (5 commits, 4 days) - Add a manual, full-run pipeline by @mattleibow in https://github.com/mono/SkiaSharp/pull/2480 (1 commit, 1 day) - Skip updating GitHub status when no token by @mattleibow in https://github.com/mono/SkiaSharp/pull/2479 (1 commit, 1 day) - - Add `$schema` to `cgmanifest.json` by @jamie.magee in https://github.com/mono/SkiaSharp/pull/2232 [community ✨] (1 commit, 1 day) + - Add `$schema` to `cgmanifest.json` by @JamieMagee in https://github.com/mono/SkiaSharp/pull/2232 [community ✨] (1 commit, 1 day) - Use the new XHarness .NET tool and latest .NET 6 MAUI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2478 (4 commits, 1 day) - Switch to Debian archives by @mattleibow in https://github.com/mono/SkiaSharp/pull/2476 (1 commit, 1 day) - Use the correct method for setting Opaque on macOS by @mattleibow in https://github.com/mono/SkiaSharp/pull/2477 (1 commit, 1 day) - - [Uno] Default Opaque to false for SKXamlCanvas on MacOS and iOS by @jm.alfonsi in https://github.com/mono/SkiaSharp/pull/2398 [community ✨] (2 commits, 1 day) - - Update SKSwapChainPanel.Android.cs by @jm.alfonsi in https://github.com/mono/SkiaSharp/pull/2400 [community ✨] (1 commit, 1 day) - - Update SKSwapChainPanel.iOS.cs by @jm.alfonsi in https://github.com/mono/SkiaSharp/pull/2401 [community ✨] (1 commit, 1 day) - - [ci] Use default feed to install the .NET SDK by @pecolli in https://github.com/mono/SkiaSharp/pull/2393 [community ✨] (2 commits, 1 day) - - [ci] Add exclusions for PoliCheck and CredScan by @pecolli in https://github.com/mono/SkiaSharp/pull/2389 [community ✨] (9 commits, 2 days) - - [Tizen] Fixes Canvas Size calculation by @sngn.lee in https://github.com/mono/SkiaSharp/pull/2322 [community ✨] (2 commits, 2 days) + - [Uno] Default Opaque to false for SKXamlCanvas on MacOS and iOS by @roubachof in https://github.com/mono/SkiaSharp/pull/2398 [community ✨] (2 commits, 1 day) + - Update SKSwapChainPanel.Android.cs by @roubachof in https://github.com/mono/SkiaSharp/pull/2400 [community ✨] (1 commit, 1 day) + - Update SKSwapChainPanel.iOS.cs by @roubachof in https://github.com/mono/SkiaSharp/pull/2401 [community ✨] (1 commit, 1 day) + - [ci] Use default feed to install the .NET SDK by @pjcollins in https://github.com/mono/SkiaSharp/pull/2393 [community ✨] (2 commits, 1 day) + - [ci] Add exclusions for PoliCheck and CredScan by @pjcollins in https://github.com/mono/SkiaSharp/pull/2389 [community ✨] (9 commits, 2 days) + - [Tizen] Fixes Canvas Size calculation by @myroot in https://github.com/mono/SkiaSharp/pull/2322 [community ✨] (2 commits, 2 days) - Update some more NuGets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2304 (13 commits, 8 days) - - Enable CodeQL by @jondick in https://github.com/mono/SkiaSharp/pull/2303 [community ✨] (1 commit, 1 day) + - Enable CodeQL by @Redth in https://github.com/mono/SkiaSharp/pull/2303 [community ✨] (1 commit, 1 day) - Use the latest versions of some NuGets and SDKs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2301 (2 commits, 1 day) - - feat(wasm): Add mt and mt+simd, fix harfbuzz for emsdk 3.1.12 by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2286 [community ✨] (9 commits, 2 days) + - feat(wasm): Add mt and mt+simd, fix harfbuzz for emsdk 3.1.12 by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2286 [community ✨] (9 commits, 2 days) - Update Windows App SDK by @mattleibow in https://github.com/mono/SkiaSharp/pull/2276 (17 commits, 7 days) - Force an older version of Windows SDK by @mattleibow in https://github.com/mono/SkiaSharp/pull/2273 (1 commit, 1 day) - Removing all .NET 5 SDK requirements by @mattleibow in https://github.com/mono/SkiaSharp/pull/2266 (12 commits, 4 days) @@ -80,14 +80,14 @@ This release adds native support for ARM64 (Apple Silicon) macOS machines and br ### Platform - **ARM64 macOS support** — Adds support for Apple Silicon (ARM64) macOS machines. ([#2468](https://github.com/mono/SkiaSharp/pull/2468)) -- **JSImport for WinUI on net7.0** — Moves the WASM WinUI target to JSImport. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2428](https://github.com/mono/SkiaSharp/pull/2428)) -- **WASM exception handling & SIMD** — Enables WebAssembly exception handling and SIMD in all configurations for net8+. ❤️ [@jlaban](https://github.com/jlaban) ([#2495](https://github.com/mono/SkiaSharp/pull/2495)) -- **WASM multithreading & SIMD** — Adds `mt` and `mt+simd` variants and fixes HarfBuzz for emsdk 3.1.12. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2286](https://github.com/mono/SkiaSharp/pull/2286)) +- **JSImport for WinUI on net7.0** — Moves the WASM WinUI target to JSImport. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2428](https://github.com/mono/SkiaSharp/pull/2428)) +- **WASM exception handling & SIMD** — Enables WebAssembly exception handling and SIMD in all configurations for net8+. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2495](https://github.com/mono/SkiaSharp/pull/2495)) +- **WASM multithreading & SIMD** — Adds `mt` and `mt+simd` variants and fixes HarfBuzz for emsdk 3.1.12. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2286](https://github.com/mono/SkiaSharp/pull/2286)) - **Blazor WASM assets for .NET 8** — Ships the new WASM assets in Blazor for .NET 8. ([#2497](https://github.com/mono/SkiaSharp/pull/2497)) -- **Uno.WinUI target resolution** — Disambiguates `SKGLView` for Uno and MAUI targets and adjusts net7.0 resolution for Uno.WinUI. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2529](https://github.com/mono/SkiaSharp/pull/2529), [#2503](https://github.com/mono/SkiaSharp/pull/2503)) +- **Uno.WinUI target resolution** — Disambiguates `SKGLView` for Uno and MAUI targets and adjusts net7.0 resolution for Uno.WinUI. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2529](https://github.com/mono/SkiaSharp/pull/2529), [#2503](https://github.com/mono/SkiaSharp/pull/2503)) - **Android .aar packaging** — Ships the `.aar` with the Android NuGet. ❤️ [@dellis1972](https://github.com/dellis1972) ([#2465](https://github.com/mono/SkiaSharp/pull/2465)) - **Hot Restart support** — Includes the `NativeReference` for Hot Restart. ([#2553](https://github.com/mono/SkiaSharp/pull/2553)) -- **.NET 8 Preview 4 support** — Adds support for .NET 8 Preview 4. ❤️ [@jlaban](https://github.com/jlaban) ([#2457](https://github.com/mono/SkiaSharp/pull/2457)) +- **.NET 8 Preview 4 support** — Adds support for .NET 8 Preview 4. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2457](https://github.com/mono/SkiaSharp/pull/2457)) - **.NET iOS & Mac Catalyst samples** — Adds a .NET iOS & Mac Catalyst sample and .NET "Core" sample support. ([#2491](https://github.com/mono/SkiaSharp/pull/2491)) ### API Surface @@ -97,7 +97,7 @@ This release adds native support for ARM64 (Apple Silicon) macOS machines and br ### Security -- **Enabled CodeQL** — Adds CodeQL static analysis to the build. ❤️ [@jondick](https://github.com/jondick) ([#2303](https://github.com/mono/SkiaSharp/pull/2303)) +- **Enabled CodeQL** — Adds CodeQL static analysis to the build. ❤️ [@Redth](https://github.com/Redth) ([#2303](https://github.com/mono/SkiaSharp/pull/2303)) - **CVE scanning** — Runs `cve-bin-tool` against native binaries. ([#2490](https://github.com/mono/SkiaSharp/pull/2490)) ## Bug Fixes @@ -105,11 +105,11 @@ This release adds native support for ARM64 (Apple Silicon) macOS machines and br - **Fixed `ToRect` extension method** — Corrects the `ToRect` extension. ❤️ [@niza93](https://github.com/niza93) ([#2392](https://github.com/mono/SkiaSharp/pull/2392)) - **Fixed `SKCanvasView` dispose exception** — Resolves an exception when the view is disposed before it has rendered. ❤️ [@jjzhang12](https://github.com/jjzhang12) ([#2472](https://github.com/mono/SkiaSharp/pull/2472)) - **Added guard against exception** — Adds an additional check to avoid an exception. ❤️ [@FoggyFinder](https://github.com/FoggyFinder) ([#2313](https://github.com/mono/SkiaSharp/pull/2313)) -- **Fixed Tizen canvas size calculation** — Corrects the canvas size calculation on Tizen. ❤️ [@sngn.lee](https://github.com/sngn.lee) ([#2322](https://github.com/mono/SkiaSharp/pull/2322)) +- **Fixed Tizen canvas size calculation** — Corrects the canvas size calculation on Tizen. ❤️ [@myroot](https://github.com/myroot) ([#2322](https://github.com/mono/SkiaSharp/pull/2322)) - **Corrected macOS Opaque handling** — Uses the correct method for setting `Opaque` on macOS. ([#2477](https://github.com/mono/SkiaSharp/pull/2477)) -- **Uno: SKXamlCanvas alpha type & Opaque** — Updates the bitmap `SKAlphaType` in `SKXamlCanvas.Wasm`, defaults `Opaque` to false on macOS and iOS, and updates the `SKSwapChainPanel` for Android and iOS. ❤️ [@jm.alfonsi](https://github.com/jm.alfonsi) ([#2443](https://github.com/mono/SkiaSharp/pull/2443), [#2398](https://github.com/mono/SkiaSharp/pull/2398), [#2400](https://github.com/mono/SkiaSharp/pull/2400), [#2401](https://github.com/mono/SkiaSharp/pull/2401)) +- **Uno: SKXamlCanvas alpha type & Opaque** — Updates the bitmap `SKAlphaType` in `SKXamlCanvas.Wasm`, defaults `Opaque` to false on macOS and iOS, and updates the `SKSwapChainPanel` for Android and iOS. ❤️ [@roubachof](https://github.com/roubachof) ([#2443](https://github.com/mono/SkiaSharp/pull/2443), [#2398](https://github.com/mono/SkiaSharp/pull/2398), [#2400](https://github.com/mono/SkiaSharp/pull/2400), [#2401](https://github.com/mono/SkiaSharp/pull/2401)) -Plus several CI, build, and tooling improvements, including pipeline fixes from [@pecolli](https://github.com/pecolli) ([#2393](https://github.com/mono/SkiaSharp/pull/2393), [#2389](https://github.com/mono/SkiaSharp/pull/2389)) and a `cgmanifest.json` schema from [@jamie.magee](https://github.com/jamie.magee) ([#2232](https://github.com/mono/SkiaSharp/pull/2232)). +Plus several CI, build, and tooling improvements, including pipeline fixes from [@pjcollins](https://github.com/pjcollins) ([#2393](https://github.com/mono/SkiaSharp/pull/2393), [#2389](https://github.com/mono/SkiaSharp/pull/2389)) and a `cgmanifest.json` schema from [@JamieMagee](https://github.com/JamieMagee) ([#2232](https://github.com/mono/SkiaSharp/pull/2232)). ## Platform Support @@ -126,19 +126,19 @@ Plus several CI, build, and tooling improvements, including pipeline fixes from | Contributor | What They Did | |-------------|--------------| -| [@jerome.laban](https://github.com/jerome.laban) | WASM multithreading/SIMD, JSImport WinUI target, Uno target resolution, HarfBuzz fix | -| [@jlaban](https://github.com/jlaban) | WASM exception handling & SIMD, .NET 8 Preview 4 support | -| [@jm.alfonsi](https://github.com/jm.alfonsi) | Uno SKXamlCanvas alpha type & Opaque defaults, SwapChainPanel updates | +| [@jeromelaban](https://github.com/jeromelaban) | WASM multithreading/SIMD, JSImport WinUI target, Uno target resolution, HarfBuzz fix | +| [@jeromelaban](https://github.com/jeromelaban) | WASM exception handling & SIMD, .NET 8 Preview 4 support | +| [@roubachof](https://github.com/roubachof) | Uno SKXamlCanvas alpha type & Opaque defaults, SwapChainPanel updates | | [@dellis1972](https://github.com/dellis1972) | Shipped the Android `.aar` with the NuGet | | [@jwikberg](https://github.com/jwikberg) | Improved `SKColor` hex string parsing performance | | [@niza93](https://github.com/niza93) | Fixed the `ToRect` extension method | | [@jjzhang12](https://github.com/jjzhang12) | Fixed `SKCanvasView` dispose exception | | [@FoggyFinder](https://github.com/FoggyFinder) | Added a guard against an exception | -| [@sngn.lee](https://github.com/sngn.lee) | Fixed Tizen canvas size calculation | +| [@myroot](https://github.com/myroot) | Fixed Tizen canvas size calculation | | [@Lehonti](https://github.com/Lehonti) | Reduced nesting with block-scoped `using` statements | -| [@jondick](https://github.com/jondick) | Enabled CodeQL static analysis | -| [@pecolli](https://github.com/pecolli) | CI pipeline improvements | -| [@jamie.magee](https://github.com/jamie.magee) | Added a `$schema` to `cgmanifest.json` | +| [@Redth](https://github.com/Redth) | Enabled CodeQL static analysis | +| [@pjcollins](https://github.com/pjcollins) | CI pipeline improvements | +| [@JamieMagee](https://github.com/JamieMagee) | Added a `$schema` to `cgmanifest.json` | ## Links diff --git a/documentation/docfx/releases/2.88.5.md b/documentation/docfx/releases/2.88.5.md index 5ae1fe43fc8..3c626aa830e 100644 --- a/documentation/docfx/releases/2.88.5.md +++ b/documentation/docfx/releases/2.88.5.md @@ -3,7 +3,7 @@ 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-16T18:22:21Z by generate-release-notes.py + Generated: 2026-06-16T19:39:21Z by generate-release-notes.py version: 2.88.5 status: stable branch: release/2.88.5 diff --git a/documentation/docfx/releases/2.88.6.md b/documentation/docfx/releases/2.88.6.md index ee9f02916a5..25e94041838 100644 --- a/documentation/docfx/releases/2.88.6.md +++ b/documentation/docfx/releases/2.88.6.md @@ -3,7 +3,7 @@ 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-16T18:22:28Z by generate-release-notes.py + Generated: 2026-06-16T19:39:27Z by generate-release-notes.py version: 2.88.6 status: stable branch: release/2.88.6 diff --git a/documentation/docfx/releases/2.88.7.md b/documentation/docfx/releases/2.88.7.md index e165acbb6bc..4b5b3282dd1 100644 --- a/documentation/docfx/releases/2.88.7.md +++ b/documentation/docfx/releases/2.88.7.md @@ -3,7 +3,7 @@ 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-16T18:22:32Z by generate-release-notes.py + Generated: 2026-06-16T19:39:31Z by generate-release-notes.py version: 2.88.7 status: stable branch: release/2.88.7 diff --git a/documentation/docfx/releases/2.88.8.md b/documentation/docfx/releases/2.88.8.md index 8ac738eb638..096d61eab4d 100644 --- a/documentation/docfx/releases/2.88.8.md +++ b/documentation/docfx/releases/2.88.8.md @@ -3,7 +3,7 @@ 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-16T18:22:41Z by generate-release-notes.py + Generated: 2026-06-16T19:39:39Z by generate-release-notes.py version: 2.88.8 status: stable branch: release/2.88.8 diff --git a/documentation/docfx/releases/2.88.9.md b/documentation/docfx/releases/2.88.9.md index 92eaa327863..94878580839 100644 --- a/documentation/docfx/releases/2.88.9.md +++ b/documentation/docfx/releases/2.88.9.md @@ -3,7 +3,7 @@ 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-16T18:22:54Z by generate-release-notes.py + Generated: 2026-06-16T19:39:51Z by generate-release-notes.py version: 2.88.9 status: stable branch: release/2.88.9 @@ -12,7 +12,7 @@ - Use a snapshot now that 4.0 has been removed by @mattleibow in https://github.com/mono/SkiaSharp/pull/3054 (49 commits, 36 days) - Add symbols to the packages by @mattleibow in https://github.com/mono/SkiaSharp/pull/3046 (48 commits, 35 days) - - fix: Add WinUI native helper for GetByteBuffer by @jerome in https://github.com/mono/SkiaSharp/pull/3039 [community ✨] (47 commits, 35 days) + - fix: Add WinUI native helper for GetByteBuffer by @jeromelaban in https://github.com/mono/SkiaSharp/pull/3039 [community ✨] (47 commits, 35 days) - The fancy logic stopped working long ago by @mattleibow in https://github.com/mono/SkiaSharp/pull/3043 (46 commits, 34 days) - Fix CI again using the new rollback locations by @mattleibow in https://github.com/mono/SkiaSharp/pull/3041 (46 commits, 33 days) - Ignore some files to aid switching branches by @mattleibow in https://github.com/mono/SkiaSharp/pull/3021 (41 commits, 29 days) @@ -34,14 +34,14 @@ ## Highlights -This release adds support for .NET 9 and ships a batch of WinUI/Uno `SKXamlCanvas` fixes, along with debug symbols now included in the packages. The WinUI native helper for `GetByteBuffer` was contributed by [@jerome](https://github.com/jerome). +This release adds support for .NET 9 and ships a batch of WinUI/Uno `SKXamlCanvas` fixes, along with debug symbols now included in the packages. The WinUI native helper for `GetByteBuffer` was contributed by [@jeromelaban](https://github.com/jeromelaban). ## New Features ### Platform - **.NET 9 support** — Adds targeting and support for .NET 9. ([#3012](https://github.com/mono/SkiaSharp/pull/3012)) -- **WinUI `GetByteBuffer` native helper** — Adds a native helper enabling `GetByteBuffer` on WinUI. ❤️ [@jerome](https://github.com/jerome) ([#3039](https://github.com/mono/SkiaSharp/pull/3039)) +- **WinUI `GetByteBuffer` native helper** — Adds a native helper enabling `GetByteBuffer` on WinUI. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#3039](https://github.com/mono/SkiaSharp/pull/3039)) ### API Surface @@ -65,7 +65,7 @@ This release adds support for .NET 9 and ships a batch of WinUI/Uno `SKXamlCanva | Contributor | What They Did | |-------------|--------------| -| [@jerome](https://github.com/jerome) | Added a WinUI native helper for `GetByteBuffer` | +| [@jeromelaban](https://github.com/jeromelaban) | Added a WinUI native helper for `GetByteBuffer` | ## Links diff --git a/documentation/docfx/releases/3.0.0.md b/documentation/docfx/releases/3.0.0.md index 5ed4fbf2613..0029378f06f 100644 --- a/documentation/docfx/releases/3.0.0.md +++ b/documentation/docfx/releases/3.0.0.md @@ -3,7 +3,7 @@ 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-16T18:24:52Z by generate-release-notes.py + Generated: 2026-06-16T19:41:37Z by generate-release-notes.py version: 3.0.0 status: preview superseded: 3.116.0 (preview only, never released as stable) @@ -11,15 +11,15 @@ diff: release/2.88.9..release/3.0.0-preview.5 prs: 122 - - Update skia by @jondick in https://github.com/mono/SkiaSharp/pull/3026 [community ✨] (10 commits, 2 days) - - Revert SKBitmap.Encode with SKPngEncoderOptions to previous behavior (2.88.8) by @david.sungaila in https://github.com/mono/SkiaSharp/pull/3014 [community ✨] (2 commits, 2 days) + - Update skia by @Redth in https://github.com/mono/SkiaSharp/pull/3026 [community ✨] (10 commits, 2 days) + - Revert SKBitmap.Encode with SKPngEncoderOptions to previous behavior (2.88.8) by @sungaila in https://github.com/mono/SkiaSharp/pull/3014 [community ✨] (2 commits, 2 days) - Update bug-report.yml by @mattleibow in https://github.com/mono/SkiaSharp/pull/3022 (1 commit, 1 day) - - feat: Add support for .NET 9 by @jerome in https://github.com/mono/SkiaSharp/pull/3010 [community ✨] (1 commit, 1 day) + - feat: Add support for .NET 9 by @jeromelaban in https://github.com/mono/SkiaSharp/pull/3010 [community ✨] (1 commit, 1 day) - Use the new GLControl packages for WinForms by @mattleibow in https://github.com/mono/SkiaSharp/pull/2989 (4 commits, 2 days) - Function pointers and LibraryImport by @maxkatz6 in https://github.com/mono/SkiaSharp/pull/2917 [community ✨] (30 commits, 9 days) - Don't fail Mac Catalyst just so we can go green by @mattleibow in https://github.com/mono/SkiaSharp/pull/2975 (2 commits, 1 day) - Update SDK, workloads and projects by @mattleibow in https://github.com/mono/SkiaSharp/pull/2971 (18 commits, 4 days) - - Add compatibility overloads for SKFilterQuality by @youssefvictor00 in https://github.com/mono/SkiaSharp/pull/2963 [community ✨] (2 commits, 2 days) + - Add compatibility overloads for SKFilterQuality by @Youssef1313 in https://github.com/mono/SkiaSharp/pull/2963 [community ✨] (2 commits, 2 days) - Make sure ANGLE reaches the nugets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2970 (1 commit, 1 day) - Install workloads with diagnostic by @mattleibow in https://github.com/mono/SkiaSharp/pull/2969 (1 commit, 1 day) - Improve stability of CI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2959 (10 commits, 3 days) @@ -28,7 +28,7 @@ - Update .NET to 8.0 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2927 (27 commits, 14 days) - Download the native artifacts for _NativeAssets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2954 (1 commit, 1 day) - Build ANGLE separately by @mattleibow in https://github.com/mono/SkiaSharp/pull/2950 (2 commits, 1 day) - - Provide Span overload for SetRectRadii by @youssefvictor00 in https://github.com/mono/SkiaSharp/pull/2949 [community ✨] (3 commits, 1 day) + - Provide Span overload for SetRectRadii by @Youssef1313 in https://github.com/mono/SkiaSharp/pull/2949 [community ✨] (3 commits, 1 day) - Update IBufferByteAccess for AOT by @mattleibow in https://github.com/mono/SkiaSharp/pull/2920 (5 commits, 3 days) - Update the signing template (#2932) by @mattleibow in https://github.com/mono/SkiaSharp/pull/2946 (1 commit, 1 day) - Fix CI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2938 (3 commits, 1 day) @@ -39,15 +39,15 @@ - Update Tizen Studio by @mattleibow in https://github.com/mono/SkiaSharp/pull/2926 (1 commit, 1 day) - Do not stretch the background by @mattleibow in https://github.com/mono/SkiaSharp/pull/2922 (3 commits, 2 days) - Use the SKPaint.FilterQuality for the SamplingOptions in obsolete methods by @mattleibow in https://github.com/mono/SkiaSharp/pull/2924 (1 commit, 1 day) - - Fix SKXamlCanvas on Uno Skia to use Bgra8888 by @youssefvictor00 in https://github.com/mono/SkiaSharp/pull/2918 [community ✨] (2 commits, 1 day) + - Fix SKXamlCanvas on Uno Skia to use Bgra8888 by @Youssef1313 in https://github.com/mono/SkiaSharp/pull/2918 [community ✨] (2 commits, 1 day) - Add R-Tree overload of beginRecording by @mattleibow in https://github.com/mono/SkiaSharp/pull/2889 (3 commits, 2 days) - Re-generate APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2891 (1 commit, 1 day) - Make unit tests more reliable by @mattleibow in https://github.com/mono/SkiaSharp/pull/2890 (1 commit, 1 day) - - Fix the GetKerningPairAdjustments API. by @phill in https://github.com/mono/SkiaSharp/pull/2858 [community ✨] (2 commits, 2 days) + - Fix the GetKerningPairAdjustments API. by @pdjonov in https://github.com/mono/SkiaSharp/pull/2858 [community ✨] (2 commits, 2 days) - Add more SKPicture APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2883 (8 commits, 2 days) - Update skia external by @mattleibow in https://github.com/mono/SkiaSharp/pull/2885 (1 commit, 1 day) - Add spans to the color filters by @mattleibow in https://github.com/mono/SkiaSharp/pull/2879 (2 commits, 2 days) - - fix: XamlRoot may be null when the SKXamlCanvas is unloaded by @jlaban in https://github.com/mono/SkiaSharp/pull/2854 [community ✨] (4 commits, 4 days) + - fix: XamlRoot may be null when the SKXamlCanvas is unloaded by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2854 [community ✨] (4 commits, 4 days) - Use the new license expressions by @mattleibow in https://github.com/mono/SkiaSharp/pull/2878 (2 commits, 2 days) - Disable more unused tools by @mattleibow in https://github.com/mono/SkiaSharp/pull/2880 (1 commit, 1 day) - Remove some unused dependencies by @mattleibow in https://github.com/mono/SkiaSharp/pull/2876 (1 commit, 1 day) @@ -62,11 +62,11 @@ - Validate the generated interop files by @mattleibow in https://github.com/mono/SkiaSharp/pull/2831 (1 commit, 1 day) - Bring Metal APIs to a common .NET TFM by @maxkatz6 in https://github.com/mono/SkiaSharp/pull/2788 [community ✨] (2 commits, 2 days) - Add and remove the compatibility APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2789 (9 commits, 4 days) - - Expose Blazor components dpi by @rodriguezo.alberto in https://github.com/mono/SkiaSharp/pull/1832 [community ✨] (5 commits, 4 days) + - Expose Blazor components dpi by @beto-rodriguez in https://github.com/mono/SkiaSharp/pull/1832 [community ✨] (5 commits, 4 days) - Installing Java is troublesome, so avoid it by @mattleibow in https://github.com/mono/SkiaSharp/pull/2815 (1 commit, 1 day) - Fix Snapshot returning magenta color Apple Metal by @taublast in https://github.com/mono/SkiaSharp/pull/2804 [community ✨] (4 commits, 1 day) - Clean up SKTextBlobBuilder and SKRunBuffer APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2775 (4 commits, 1 day) - - Add SKGLElement to SkiaSharp.Views.WPF by @gmurray in https://github.com/mono/SkiaSharp/pull/2317 [community ✨] (19 commits, 10 days) + - Add SKGLElement to SkiaSharp.Views.WPF by @gmurray81 in https://github.com/mono/SkiaSharp/pull/2317 [community ✨] (19 commits, 10 days) - Scan the correct things correctly by @mattleibow in https://github.com/mono/SkiaSharp/pull/2808 (8 commits, 2 days) - Use the new connection string by @mattleibow in https://github.com/mono/SkiaSharp/pull/2802 (1 commit, 1 day) - FabricBot: Onboarding to GitOps.ResourceManagement because of FabricBot decommissioning by @dotnet-policy-service[bot] in https://github.com/mono/SkiaSharp/pull/2799 [community ✨] (2 commits, 1 day) @@ -108,7 +108,7 @@ - Update README.md by @mattleibow in https://github.com/mono/SkiaSharp/pull/2627 (1 commit, 1 day) - Update README.md by @mattleibow in https://github.com/mono/SkiaSharp/pull/2625 (1 commit, 1 day) - Update webp to 1.3.2 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2622 (2 commits, 2 days) - - fix: Restore nosimd builds for edge enhanced security and safari by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2612 [community ✨] (1 commit, 1 day) + - fix: Restore nosimd builds for edge enhanced security and safari by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2612 [community ✨] (1 commit, 1 day) - Include platform changes by @mattleibow in https://github.com/mono/SkiaSharp/pull/2611 (1 commit, 1 day) - Add a human-radable diff by @mattleibow in https://github.com/mono/SkiaSharp/pull/2610 (2 commits, 1 day) - Added GetPixelSpan() with offsets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2609 (13 commits, 2 days) @@ -125,8 +125,8 @@ - Floor outwards when converting to SKRectI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2568 (2 commits, 1 day) - Add YAML issue templates by @mattleibow in https://github.com/mono/SkiaSharp/pull/2571 (11 commits, 2 days) - Try do a better job at detecting workloads by @mattleibow in https://github.com/mono/SkiaSharp/pull/2567 (1 commit, 1 day) - - fix(skxamlcanvas): [Wasm] Don't fail when the canvas can't be found by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2563 [community ✨] (1 commit, 1 day) - - fix(uno): Ensure that the canvas' context is active when rendering by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2559 [community ✨] (1 commit, 1 day) + - fix(skxamlcanvas): [Wasm] Don't fail when the canvas can't be found by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2563 [community ✨] (1 commit, 1 day) + - fix(uno): Ensure that the canvas' context is active when rendering by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2559 [community ✨] (1 commit, 1 day) - Add an argument for device OS version by @mattleibow in https://github.com/mono/SkiaSharp/pull/2558 (1 commit, 1 day) - Try and follow more dotnet versions by @mattleibow in https://github.com/mono/SkiaSharp/pull/2556 (2 commits, 2 days) - Adding back text-based blobs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2545 (3 commits, 1 day) @@ -156,7 +156,7 @@ The first public preview of **SkiaSharp 3.0** — a major modernization built on ### Engine - **Skia m116** — Updates the bundled Skia engine to milestone 116. ([#2829](https://github.com/mono/SkiaSharp/pull/2829), [#2885](https://github.com/mono/SkiaSharp/pull/2885)) -- **Further Skia update** — ❤️ [@jondick](https://github.com/jondick) brings in additional Skia changes. ([#3026](https://github.com/mono/SkiaSharp/pull/3026)) +- **Further Skia update** — ❤️ [@Redth](https://github.com/Redth) brings in additional Skia changes. ([#3026](https://github.com/mono/SkiaSharp/pull/3026)) - **Modernized repository** — Reworks the repository and prepares the SkiaSharp 3.0 foundation. ([#2505](https://github.com/mono/SkiaSharp/pull/2505)) ### API Surface @@ -167,15 +167,15 @@ The first public preview of **SkiaSharp 3.0** — a major modernization built on - **Skottie Animation Builder** — Binds Skottie's `Animation.Builder`. ([#2630](https://github.com/mono/SkiaSharp/pull/2630)) - **`SKImage.ToRawShader`** — Adds `SKImage.ToRawShader`. ([#2748](https://github.com/mono/SkiaSharp/pull/2748)) - **`GetPixelSpan` with offsets** — Adds a `GetPixelSpan()` overload that accepts offsets. ([#2609](https://github.com/mono/SkiaSharp/pull/2609)) -- **`Span` for `SetRectRadii`** — ❤️ [@youssefvictor00](https://github.com/youssefvictor00) adds a `Span` overload for `SetRectRadii`. ([#2949](https://github.com/mono/SkiaSharp/pull/2949)) +- **`Span` for `SetRectRadii`** — ❤️ [@Youssef1313](https://github.com/Youssef1313) adds a `Span` overload for `SetRectRadii`. ([#2949](https://github.com/mono/SkiaSharp/pull/2949)) - **Spans for color filters** — Adds `Span` overloads to the color filters. ([#2879](https://github.com/mono/SkiaSharp/pull/2879)) -- **`SKFilterQuality` compatibility overloads** — ❤️ [@youssefvictor00](https://github.com/youssefvictor00) adds compatibility overloads for `SKFilterQuality`. ([#2963](https://github.com/mono/SkiaSharp/pull/2963)) +- **`SKFilterQuality` compatibility overloads** — ❤️ [@Youssef1313](https://github.com/Youssef1313) adds compatibility overloads for `SKFilterQuality`. ([#2963](https://github.com/mono/SkiaSharp/pull/2963)) - **Trimmable `PlatformConfiguration`** — ❤️ [@maxkatz6](https://github.com/maxkatz6) makes `PlatformConfiguration` properties trimmable. ([#2717](https://github.com/mono/SkiaSharp/pull/2717)) ### GPU & Rendering - **`SKGLView`** — Implements `SKGLView`. ([#2598](https://github.com/mono/SkiaSharp/pull/2598)) -- **`SKGLElement` for WPF** — ❤️ [@gmurray](https://github.com/gmurray) adds `SKGLElement` to `SkiaSharp.Views.WPF`. ([#2317](https://github.com/mono/SkiaSharp/pull/2317)) +- **`SKGLElement` for WPF** — ❤️ [@gmurray81](https://github.com/gmurray81) adds `SKGLElement` to `SkiaSharp.Views.WPF`. ([#2317](https://github.com/mono/SkiaSharp/pull/2317)) - **WinUI accelerated views** — Adds support for hardware-accelerated WinUI views. ([#2733](https://github.com/mono/SkiaSharp/pull/2733)) - **Metal on Mac Catalyst** — Uses Metal as the backend on Mac Catalyst. ([#2747](https://github.com/mono/SkiaSharp/pull/2747)) - **Common Metal TFM** — ❤️ [@maxkatz6](https://github.com/maxkatz6) brings the Metal APIs to a common .NET TFM. ([#2788](https://github.com/mono/SkiaSharp/pull/2788)) @@ -187,9 +187,9 @@ The first public preview of **SkiaSharp 3.0** — a major modernization built on ### Platform - **.NET 8** — Updates the binding and samples to .NET 8. ([#2927](https://github.com/mono/SkiaSharp/pull/2927)) -- **.NET 9 support** — ❤️ [@jerome](https://github.com/jerome) adds early support for .NET 9. ([#3010](https://github.com/mono/SkiaSharp/pull/3010)) +- **.NET 9 support** — ❤️ [@jeromelaban](https://github.com/jeromelaban) adds early support for .NET 9. ([#3010](https://github.com/mono/SkiaSharp/pull/3010)) - **WinForms GLControl** — Uses the new `GLControl` packages for WinForms. ([#2989](https://github.com/mono/SkiaSharp/pull/2989)) -- **Blazor component DPI** — ❤️ [@rodriguezo.alberto](https://github.com/rodriguezo.alberto) exposes DPI on the Blazor components. ([#1832](https://github.com/mono/SkiaSharp/pull/1832)) +- **Blazor component DPI** — ❤️ [@beto-rodriguez](https://github.com/beto-rodriguez) exposes DPI on the Blazor components. ([#1832](https://github.com/mono/SkiaSharp/pull/1832)) ### Images & Documents @@ -201,15 +201,15 @@ The first public preview of **SkiaSharp 3.0** — a major modernization built on - **MAUI memory leaks** — Fixes memory leaks in the MAUI views. ([#2955](https://github.com/mono/SkiaSharp/pull/2955)) - **`SKRectI` rounding** — Floors outwards when converting to `SKRectI`. ([#2568](https://github.com/mono/SkiaSharp/pull/2568)) - **Cloned `SKPaint` disposal** — ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) fixes an `AccessViolationException` when disposing a cloned `SKPaint`. ([#2904](https://github.com/mono/SkiaSharp/pull/2904)) -- **`SKBitmap.Encode` regression** — ❤️ [@david.sungaila](https://github.com/david.sungaila) reverts `SKBitmap.Encode` with `SKPngEncoderOptions` to the 2.88.8 behavior. ([#3014](https://github.com/mono/SkiaSharp/pull/3014)) -- **Uno Skia pixel format** — ❤️ [@youssefvictor00](https://github.com/youssefvictor00) fixes `SKXamlCanvas` on Uno Skia to use `Bgra8888`. ([#2918](https://github.com/mono/SkiaSharp/pull/2918)) -- **`XamlRoot` null** — ❤️ [@jlaban](https://github.com/jlaban) handles a null `XamlRoot` when the `SKXamlCanvas` is unloaded. ([#2854](https://github.com/mono/SkiaSharp/pull/2854)) +- **`SKBitmap.Encode` regression** — ❤️ [@sungaila](https://github.com/sungaila) reverts `SKBitmap.Encode` with `SKPngEncoderOptions` to the 2.88.8 behavior. ([#3014](https://github.com/mono/SkiaSharp/pull/3014)) +- **Uno Skia pixel format** — ❤️ [@Youssef1313](https://github.com/Youssef1313) fixes `SKXamlCanvas` on Uno Skia to use `Bgra8888`. ([#2918](https://github.com/mono/SkiaSharp/pull/2918)) +- **`XamlRoot` null** — ❤️ [@jeromelaban](https://github.com/jeromelaban) handles a null `XamlRoot` when the `SKXamlCanvas` is unloaded. ([#2854](https://github.com/mono/SkiaSharp/pull/2854)) - **Metal snapshot color** — ❤️ [@taublast](https://github.com/taublast) fixes `Snapshot` returning magenta on Apple Metal. ([#2804](https://github.com/mono/SkiaSharp/pull/2804)) -- **Kerning adjustments** — ❤️ [@phill](https://github.com/phill) fixes the `GetKerningPairAdjustments` API. ([#2858](https://github.com/mono/SkiaSharp/pull/2858)) +- **Kerning adjustments** — ❤️ [@pdjonov](https://github.com/pdjonov) fixes the `GetKerningPairAdjustments` API. ([#2858](https://github.com/mono/SkiaSharp/pull/2858)) - **`async void` in `SKXamlCanvas`** — ❤️ [@lindexi](https://github.com/lindexi) avoids `async void` in `SKXamlCanvas`. ([#2720](https://github.com/mono/SkiaSharp/pull/2720)) -- **WASM canvas lookup** — ❤️ [@jerome.laban](https://github.com/jerome.laban) stops the WASM `SKXamlCanvas` failing when the canvas can't be found. ([#2563](https://github.com/mono/SkiaSharp/pull/2563)) -- **Uno render context** — ❤️ [@jerome.laban](https://github.com/jerome.laban) ensures the canvas' context is active when rendering on Uno. ([#2559](https://github.com/mono/SkiaSharp/pull/2559)) -- **nosimd builds** — ❤️ [@jerome.laban](https://github.com/jerome.laban) restores `nosimd` builds for enhanced-security Edge and Safari. ([#2612](https://github.com/mono/SkiaSharp/pull/2612)) +- **WASM canvas lookup** — ❤️ [@jeromelaban](https://github.com/jeromelaban) stops the WASM `SKXamlCanvas` failing when the canvas can't be found. ([#2563](https://github.com/mono/SkiaSharp/pull/2563)) +- **Uno render context** — ❤️ [@jeromelaban](https://github.com/jeromelaban) ensures the canvas' context is active when rendering on Uno. ([#2559](https://github.com/mono/SkiaSharp/pull/2559)) +- **nosimd builds** — ❤️ [@jeromelaban](https://github.com/jeromelaban) restores `nosimd` builds for enhanced-security Edge and Safari. ([#2612](https://github.com/mono/SkiaSharp/pull/2612)) ## Platform Support @@ -226,18 +226,18 @@ The first public preview of **SkiaSharp 3.0** — a major modernization built on | Contributor | What They Did | |-------------|--------------| | [@maxkatz6](https://github.com/maxkatz6) | Modernized interop with function pointers/`LibraryImport`, common Metal TFM, trimmable config | -| [@youssefvictor00](https://github.com/youssefvictor00) | Added `SKFilterQuality` and `SetRectRadii` overloads and fixed Uno pixel format | -| [@jerome.laban](https://github.com/jerome.laban) | Fixed WASM/Uno canvas rendering and restored nosimd builds | -| [@jondick](https://github.com/jondick) | Brought in additional Skia updates | -| [@jerome](https://github.com/jerome) | Added .NET 9 support | -| [@david.sungaila](https://github.com/david.sungaila) | Reverted an `SKBitmap.Encode` regression | +| [@Youssef1313](https://github.com/Youssef1313) | Added `SKFilterQuality` and `SetRectRadii` overloads and fixed Uno pixel format | +| [@jeromelaban](https://github.com/jeromelaban) | Fixed WASM/Uno canvas rendering and restored nosimd builds | +| [@Redth](https://github.com/Redth) | Brought in additional Skia updates | +| [@jeromelaban](https://github.com/jeromelaban) | Added .NET 9 support | +| [@sungaila](https://github.com/sungaila) | Reverted an `SKBitmap.Encode` regression | | [@jeremy-visionaid](https://github.com/jeremy-visionaid) | Fixed an AVE disposing a cloned `SKPaint` | -| [@jlaban](https://github.com/jlaban) | Handled a null `XamlRoot` on unload | +| [@jeromelaban](https://github.com/jeromelaban) | Handled a null `XamlRoot` on unload | | [@taublast](https://github.com/taublast) | Fixed magenta snapshots on Apple Metal | -| [@phill](https://github.com/phill) | Fixed `GetKerningPairAdjustments` | +| [@pdjonov](https://github.com/pdjonov) | Fixed `GetKerningPairAdjustments` | | [@lindexi](https://github.com/lindexi) | Avoided `async void` in `SKXamlCanvas` | -| [@gmurray](https://github.com/gmurray) | Added `SKGLElement` to the WPF views | -| [@rodriguezo.alberto](https://github.com/rodriguezo.alberto) | Exposed DPI on the Blazor components | +| [@gmurray81](https://github.com/gmurray81) | Added `SKGLElement` to the WPF views | +| [@beto-rodriguez](https://github.com/beto-rodriguez) | Exposed DPI on the Blazor components | | [@Fxplorer](https://github.com/Fxplorer) | Fixed a typo in the README | ## Links diff --git a/documentation/docfx/releases/3.116.0.md b/documentation/docfx/releases/3.116.0.md index 8fc0e0b2cef..a6c6585cebb 100644 --- a/documentation/docfx/releases/3.116.0.md +++ b/documentation/docfx/releases/3.116.0.md @@ -3,7 +3,7 @@ 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-16T18:28:39Z by generate-release-notes.py + Generated: 2026-06-16T19:43:33Z by generate-release-notes.py version: 3.116.0 status: stable supersedes: 3.0.0 (preview only, rolled up) @@ -18,15 +18,15 @@ - Use `` to set the SDK version (#3085) by @github-actions[bot] in https://github.com/mono/SkiaSharp/pull/3086 [community ✨] (4 commits, 2 days) - Add support for multi-thread and/or SIMD WebAssembly by @mattleibow in https://github.com/mono/SkiaSharp/pull/2620 (9 commits, 4 days) - Add SKMatrix.MapPoints/MapVectors, SKPath.AddPoly overloads with Span by @alexandrvslv in https://github.com/mono/SkiaSharp/pull/3030 [community ✨] (2 commits, 2 days) - - Update skia by @jondick in https://github.com/mono/SkiaSharp/pull/3026 [community ✨] (10 commits, 2 days) - - Revert SKBitmap.Encode with SKPngEncoderOptions to previous behavior (2.88.8) by @david.sungaila in https://github.com/mono/SkiaSharp/pull/3014 [community ✨] (2 commits, 2 days) + - Update skia by @Redth in https://github.com/mono/SkiaSharp/pull/3026 [community ✨] (10 commits, 2 days) + - Revert SKBitmap.Encode with SKPngEncoderOptions to previous behavior (2.88.8) by @sungaila in https://github.com/mono/SkiaSharp/pull/3014 [community ✨] (2 commits, 2 days) - Update bug-report.yml by @mattleibow in https://github.com/mono/SkiaSharp/pull/3022 (1 commit, 1 day) - - feat: Add support for .NET 9 by @jerome in https://github.com/mono/SkiaSharp/pull/3010 [community ✨] (1 commit, 1 day) + - feat: Add support for .NET 9 by @jeromelaban in https://github.com/mono/SkiaSharp/pull/3010 [community ✨] (1 commit, 1 day) - Use the new GLControl packages for WinForms by @mattleibow in https://github.com/mono/SkiaSharp/pull/2989 (4 commits, 2 days) - Function pointers and LibraryImport by @maxkatz6 in https://github.com/mono/SkiaSharp/pull/2917 [community ✨] (30 commits, 9 days) - Don't fail Mac Catalyst just so we can go green by @mattleibow in https://github.com/mono/SkiaSharp/pull/2975 (2 commits, 1 day) - Update SDK, workloads and projects by @mattleibow in https://github.com/mono/SkiaSharp/pull/2971 (18 commits, 4 days) - - Add compatibility overloads for SKFilterQuality by @youssefvictor00 in https://github.com/mono/SkiaSharp/pull/2963 [community ✨] (2 commits, 2 days) + - Add compatibility overloads for SKFilterQuality by @Youssef1313 in https://github.com/mono/SkiaSharp/pull/2963 [community ✨] (2 commits, 2 days) - Make sure ANGLE reaches the nugets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2970 (1 commit, 1 day) - Install workloads with diagnostic by @mattleibow in https://github.com/mono/SkiaSharp/pull/2969 (1 commit, 1 day) - Improve stability of CI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2959 (10 commits, 3 days) @@ -35,7 +35,7 @@ - Update .NET to 8.0 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2927 (27 commits, 14 days) - Download the native artifacts for _NativeAssets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2954 (1 commit, 1 day) - Build ANGLE separately by @mattleibow in https://github.com/mono/SkiaSharp/pull/2950 (2 commits, 1 day) - - Provide Span overload for SetRectRadii by @youssefvictor00 in https://github.com/mono/SkiaSharp/pull/2949 [community ✨] (3 commits, 1 day) + - Provide Span overload for SetRectRadii by @Youssef1313 in https://github.com/mono/SkiaSharp/pull/2949 [community ✨] (3 commits, 1 day) - Update IBufferByteAccess for AOT by @mattleibow in https://github.com/mono/SkiaSharp/pull/2920 (5 commits, 3 days) - Update the signing template (#2932) by @mattleibow in https://github.com/mono/SkiaSharp/pull/2946 (1 commit, 1 day) - Fix CI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2938 (3 commits, 1 day) @@ -46,15 +46,15 @@ - Update Tizen Studio by @mattleibow in https://github.com/mono/SkiaSharp/pull/2926 (1 commit, 1 day) - Do not stretch the background by @mattleibow in https://github.com/mono/SkiaSharp/pull/2922 (3 commits, 2 days) - Use the SKPaint.FilterQuality for the SamplingOptions in obsolete methods by @mattleibow in https://github.com/mono/SkiaSharp/pull/2924 (1 commit, 1 day) - - Fix SKXamlCanvas on Uno Skia to use Bgra8888 by @youssefvictor00 in https://github.com/mono/SkiaSharp/pull/2918 [community ✨] (2 commits, 1 day) + - Fix SKXamlCanvas on Uno Skia to use Bgra8888 by @Youssef1313 in https://github.com/mono/SkiaSharp/pull/2918 [community ✨] (2 commits, 1 day) - Add R-Tree overload of beginRecording by @mattleibow in https://github.com/mono/SkiaSharp/pull/2889 (3 commits, 2 days) - Re-generate APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2891 (1 commit, 1 day) - Make unit tests more reliable by @mattleibow in https://github.com/mono/SkiaSharp/pull/2890 (1 commit, 1 day) - - Fix the GetKerningPairAdjustments API. by @phill in https://github.com/mono/SkiaSharp/pull/2858 [community ✨] (2 commits, 2 days) + - Fix the GetKerningPairAdjustments API. by @pdjonov in https://github.com/mono/SkiaSharp/pull/2858 [community ✨] (2 commits, 2 days) - Add more SKPicture APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2883 (8 commits, 2 days) - Update skia external by @mattleibow in https://github.com/mono/SkiaSharp/pull/2885 (1 commit, 1 day) - Add spans to the color filters by @mattleibow in https://github.com/mono/SkiaSharp/pull/2879 (2 commits, 2 days) - - fix: XamlRoot may be null when the SKXamlCanvas is unloaded by @jlaban in https://github.com/mono/SkiaSharp/pull/2854 [community ✨] (4 commits, 4 days) + - fix: XamlRoot may be null when the SKXamlCanvas is unloaded by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2854 [community ✨] (4 commits, 4 days) - Use the new license expressions by @mattleibow in https://github.com/mono/SkiaSharp/pull/2878 (2 commits, 2 days) - Disable more unused tools by @mattleibow in https://github.com/mono/SkiaSharp/pull/2880 (1 commit, 1 day) - Remove some unused dependencies by @mattleibow in https://github.com/mono/SkiaSharp/pull/2876 (1 commit, 1 day) @@ -69,11 +69,11 @@ - Validate the generated interop files by @mattleibow in https://github.com/mono/SkiaSharp/pull/2831 (1 commit, 1 day) - Bring Metal APIs to a common .NET TFM by @maxkatz6 in https://github.com/mono/SkiaSharp/pull/2788 [community ✨] (2 commits, 2 days) - Add and remove the compatibility APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2789 (9 commits, 4 days) - - Expose Blazor components dpi by @rodriguezo.alberto in https://github.com/mono/SkiaSharp/pull/1832 [community ✨] (5 commits, 4 days) + - Expose Blazor components dpi by @beto-rodriguez in https://github.com/mono/SkiaSharp/pull/1832 [community ✨] (5 commits, 4 days) - Installing Java is troublesome, so avoid it by @mattleibow in https://github.com/mono/SkiaSharp/pull/2815 (1 commit, 1 day) - Fix Snapshot returning magenta color Apple Metal by @taublast in https://github.com/mono/SkiaSharp/pull/2804 [community ✨] (4 commits, 1 day) - Clean up SKTextBlobBuilder and SKRunBuffer APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2775 (4 commits, 1 day) - - Add SKGLElement to SkiaSharp.Views.WPF by @gmurray in https://github.com/mono/SkiaSharp/pull/2317 [community ✨] (19 commits, 10 days) + - Add SKGLElement to SkiaSharp.Views.WPF by @gmurray81 in https://github.com/mono/SkiaSharp/pull/2317 [community ✨] (19 commits, 10 days) - Scan the correct things correctly by @mattleibow in https://github.com/mono/SkiaSharp/pull/2808 (8 commits, 2 days) - Use the new connection string by @mattleibow in https://github.com/mono/SkiaSharp/pull/2802 (1 commit, 1 day) - FabricBot: Onboarding to GitOps.ResourceManagement because of FabricBot decommissioning by @dotnet-policy-service[bot] in https://github.com/mono/SkiaSharp/pull/2799 [community ✨] (2 commits, 1 day) @@ -115,7 +115,7 @@ - Update README.md by @mattleibow in https://github.com/mono/SkiaSharp/pull/2627 (1 commit, 1 day) - Update README.md by @mattleibow in https://github.com/mono/SkiaSharp/pull/2625 (1 commit, 1 day) - Update webp to 1.3.2 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2622 (2 commits, 2 days) - - fix: Restore nosimd builds for edge enhanced security and safari by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2612 [community ✨] (1 commit, 1 day) + - fix: Restore nosimd builds for edge enhanced security and safari by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2612 [community ✨] (1 commit, 1 day) - Include platform changes by @mattleibow in https://github.com/mono/SkiaSharp/pull/2611 (1 commit, 1 day) - Add a human-radable diff by @mattleibow in https://github.com/mono/SkiaSharp/pull/2610 (2 commits, 1 day) - Added GetPixelSpan() with offsets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2609 (13 commits, 2 days) @@ -132,8 +132,8 @@ - Floor outwards when converting to SKRectI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2568 (2 commits, 1 day) - Add YAML issue templates by @mattleibow in https://github.com/mono/SkiaSharp/pull/2571 (11 commits, 2 days) - Try do a better job at detecting workloads by @mattleibow in https://github.com/mono/SkiaSharp/pull/2567 (1 commit, 1 day) - - fix(skxamlcanvas): [Wasm] Don't fail when the canvas can't be found by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2563 [community ✨] (1 commit, 1 day) - - fix(uno): Ensure that the canvas' context is active when rendering by @jerome.laban in https://github.com/mono/SkiaSharp/pull/2559 [community ✨] (1 commit, 1 day) + - fix(skxamlcanvas): [Wasm] Don't fail when the canvas can't be found by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2563 [community ✨] (1 commit, 1 day) + - fix(uno): Ensure that the canvas' context is active when rendering by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2559 [community ✨] (1 commit, 1 day) - Add an argument for device OS version by @mattleibow in https://github.com/mono/SkiaSharp/pull/2558 (1 commit, 1 day) - Try and follow more dotnet versions by @mattleibow in https://github.com/mono/SkiaSharp/pull/2556 (2 commits, 2 days) - Adding back text-based blobs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2545 (3 commits, 1 day) @@ -152,7 +152,7 @@ ## Highlights -SkiaSharp 3.116.0 is the first stable release of the modernized **SkiaSharp 3.0** line. It rolls up all of the preview-only **3.0.0** work cumulatively and ships it as a single stable package. The engine is updated to **Skia m116**, the interop layer is rebuilt on **function pointers and `LibraryImport`**, and the libraries now target **.NET 8 and .NET 9** with multi-threaded/SIMD WebAssembly, a Metal backend on Mac Catalyst, and a wave of new span-based APIs. This is a **major version** with breaking changes — see below. Dozens of community contributors helped land this release, including [@maxkatz6](https://github.com/maxkatz6), [@jerome.laban](https://github.com/jerome.laban), [@youssefvictor00](https://github.com/youssefvictor00), [@alexandrvslv](https://github.com/alexandrvslv), [@jondick](https://github.com/jondick) and [@gmurray](https://github.com/gmurray). +SkiaSharp 3.116.0 is the first stable release of the modernized **SkiaSharp 3.0** line. It rolls up all of the preview-only **3.0.0** work cumulatively and ships it as a single stable package. The engine is updated to **Skia m116**, the interop layer is rebuilt on **function pointers and `LibraryImport`**, and the libraries now target **.NET 8 and .NET 9** with multi-threaded/SIMD WebAssembly, a Metal backend on Mac Catalyst, and a wave of new span-based APIs. This is a **major version** with breaking changes — see below. Dozens of community contributors helped land this release, including [@maxkatz6](https://github.com/maxkatz6), [@jeromelaban](https://github.com/jeromelaban), [@Youssef1313](https://github.com/Youssef1313), [@alexandrvslv](https://github.com/alexandrvslv), [@Redth](https://github.com/Redth) and [@gmurray81](https://github.com/gmurray81). ### ⚠️ Breaking Changes @@ -164,10 +164,10 @@ SkiaSharp 3.116.0 is the first stable release of the modernized **SkiaSharp 3.0* ### Engine -- **Skia updated to m116** — Brings the bundled Skia engine up to milestone 116, plus follow-up external updates. ([#2829](https://github.com/mono/SkiaSharp/pull/2829), [#2885](https://github.com/mono/SkiaSharp/pull/2885)) ❤️ [@jondick](https://github.com/jondick) ([#3026](https://github.com/mono/SkiaSharp/pull/3026)) +- **Skia updated to m116** — Brings the bundled Skia engine up to milestone 116, plus follow-up external updates. ([#2829](https://github.com/mono/SkiaSharp/pull/2829), [#2885](https://github.com/mono/SkiaSharp/pull/2885)) ❤️ [@Redth](https://github.com/Redth) ([#3026](https://github.com/mono/SkiaSharp/pull/3026)) - **HarfBuzz 7.3.0 → 8.3.0** — Updates the bundled HarfBuzz for improved text shaping. ([#2582](https://github.com/mono/SkiaSharp/pull/2582), [#2624](https://github.com/mono/SkiaSharp/pull/2624)) - **libjpeg-turbo 3.0.0 & libwebp 1.3.2** — Refreshes the bundled JPEG and WebP codecs. ([#2583](https://github.com/mono/SkiaSharp/pull/2583), [#2622](https://github.com/mono/SkiaSharp/pull/2622)) -- **SkiaSharp 3.0 modernization** — Modernizes the repository, build and packaging and targets .NET 8 and .NET 9. ([#2505](https://github.com/mono/SkiaSharp/pull/2505), [#2927](https://github.com/mono/SkiaSharp/pull/2927)) ❤️ [@jerome](https://github.com/jerome) ([#3010](https://github.com/mono/SkiaSharp/pull/3010)) +- **SkiaSharp 3.0 modernization** — Modernizes the repository, build and packaging and targets .NET 8 and .NET 9. ([#2505](https://github.com/mono/SkiaSharp/pull/2505), [#2927](https://github.com/mono/SkiaSharp/pull/2927)) ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#3010](https://github.com/mono/SkiaSharp/pull/3010)) ### GPU & Rendering @@ -180,10 +180,10 @@ SkiaSharp 3.116.0 is the first stable release of the modernized **SkiaSharp 3.0* ### API Surface -- **Span overloads across the API** — Adds `Span` overloads for `SKMatrix.MapPoints`/`MapVectors` and `SKPath.AddPoly`, a span overload for `SetRectRadii`, and span overloads on the color filters. ❤️ [@alexandrvslv](https://github.com/alexandrvslv) ([#3030](https://github.com/mono/SkiaSharp/pull/3030)) · ❤️ [@youssefvictor00](https://github.com/youssefvictor00) ([#2949](https://github.com/mono/SkiaSharp/pull/2949)) · ([#2879](https://github.com/mono/SkiaSharp/pull/2879)) +- **Span overloads across the API** — Adds `Span` overloads for `SKMatrix.MapPoints`/`MapVectors` and `SKPath.AddPoly`, a span overload for `SetRectRadii`, and span overloads on the color filters. ❤️ [@alexandrvslv](https://github.com/alexandrvslv) ([#3030](https://github.com/mono/SkiaSharp/pull/3030)) · ❤️ [@Youssef1313](https://github.com/Youssef1313) ([#2949](https://github.com/mono/SkiaSharp/pull/2949)) · ([#2879](https://github.com/mono/SkiaSharp/pull/2879)) - **`GetPixelSpan()` with offsets** — Adds an offset-aware pixel span accessor. ([#2609](https://github.com/mono/SkiaSharp/pull/2609)) - **More `SKPicture` APIs & R-Tree recording** — Expands the `SKPicture` surface and adds an R-Tree overload of `BeginRecording`. ([#2883](https://github.com/mono/SkiaSharp/pull/2883), [#2889](https://github.com/mono/SkiaSharp/pull/2889)) -- **`SKFilterQuality` compatibility overloads** — Provides compatibility overloads to bridge `SKFilterQuality` to the new sampling options. ❤️ [@youssefvictor00](https://github.com/youssefvictor00) ([#2963](https://github.com/mono/SkiaSharp/pull/2963)) +- **`SKFilterQuality` compatibility overloads** — Provides compatibility overloads to bridge `SKFilterQuality` to the new sampling options. ❤️ [@Youssef1313](https://github.com/Youssef1313) ([#2963](https://github.com/mono/SkiaSharp/pull/2963)) - **Read-only `GRMtlTextureInfo` getters** — Makes `GRMtlTextureInfo` getters read-only. ([#2833](https://github.com/mono/SkiaSharp/pull/2833)) - **Trimmable `PlatformConfiguration`** — Marks `PlatformConfiguration` properties trimmable for smaller AOT/trimmed apps. ❤️ [@maxkatz6](https://github.com/maxkatz6) ([#2717](https://github.com/mono/SkiaSharp/pull/2717)) @@ -194,23 +194,23 @@ SkiaSharp 3.116.0 is the first stable release of the modernized **SkiaSharp 3.0* ### Platform -- **`SKGLElement` for WPF** — Adds an OpenGL-accelerated `SKGLElement` to `SkiaSharp.Views.WPF`. ❤️ [@gmurray](https://github.com/gmurray) ([#2317](https://github.com/mono/SkiaSharp/pull/2317)) +- **`SKGLElement` for WPF** — Adds an OpenGL-accelerated `SKGLElement` to `SkiaSharp.Views.WPF`. ❤️ [@gmurray81](https://github.com/gmurray81) ([#2317](https://github.com/mono/SkiaSharp/pull/2317)) - **New WinForms GLControl** — Moves WinForms onto the new GLControl packages. ([#2989](https://github.com/mono/SkiaSharp/pull/2989)) -- **Blazor component DPI** — Exposes the device pixel ratio on the Blazor components. ❤️ [@rodriguezo.alberto](https://github.com/rodriguezo.alberto) ([#1832](https://github.com/mono/SkiaSharp/pull/1832)) +- **Blazor component DPI** — Exposes the device pixel ratio on the Blazor components. ❤️ [@beto-rodriguez](https://github.com/beto-rodriguez) ([#1832](https://github.com/mono/SkiaSharp/pull/1832)) ## Bug Fixes - **Fixed MAUI view memory leaks** — Resolves leaks in the MAUI views. ([#2955](https://github.com/mono/SkiaSharp/pull/2955)) - **Fixed access violation disposing a cloned `SKPaint`** — Prevents an AVE when disposing a cloned paint. ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) ([#2904](https://github.com/mono/SkiaSharp/pull/2904)) - **Fixed magenta Metal snapshots** — Corrects `Snapshot` returning a magenta image on Apple Metal. ❤️ [@taublast](https://github.com/taublast) ([#2804](https://github.com/mono/SkiaSharp/pull/2804)) -- **Fixed Uno `SKXamlCanvas` color format** — Uses `Bgra8888` for `SKXamlCanvas` on Uno Skia. ❤️ [@youssefvictor00](https://github.com/youssefvictor00) ([#2918](https://github.com/mono/SkiaSharp/pull/2918)) -- **Fixed null `XamlRoot` on unload** — Handles `XamlRoot` being null when the `SKXamlCanvas` is unloaded. ❤️ [@jlaban](https://github.com/jlaban) ([#2854](https://github.com/mono/SkiaSharp/pull/2854)) +- **Fixed Uno `SKXamlCanvas` color format** — Uses `Bgra8888` for `SKXamlCanvas` on Uno Skia. ❤️ [@Youssef1313](https://github.com/Youssef1313) ([#2918](https://github.com/mono/SkiaSharp/pull/2918)) +- **Fixed null `XamlRoot` on unload** — Handles `XamlRoot` being null when the `SKXamlCanvas` is unloaded. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2854](https://github.com/mono/SkiaSharp/pull/2854)) - **Avoided `async void` in `SKXamlCanvas`** — Removes an `async void` path in `SKXamlCanvas`. ❤️ [@lindexi](https://github.com/lindexi) ([#2720](https://github.com/mono/SkiaSharp/pull/2720)) -- **Fixed `GetKerningPairAdjustments`** — Corrects the kerning-pair adjustment API. ❤️ [@phill](https://github.com/phill) ([#2858](https://github.com/mono/SkiaSharp/pull/2858)) -- **Restored `SKBitmap.Encode` behavior** — Reverts `SKBitmap.Encode` with `SKPngEncoderOptions` to the previous (2.88.8) behavior. ❤️ [@david.sungaila](https://github.com/david.sungaila) ([#3014](https://github.com/mono/SkiaSharp/pull/3014)) +- **Fixed `GetKerningPairAdjustments`** — Corrects the kerning-pair adjustment API. ❤️ [@pdjonov](https://github.com/pdjonov) ([#2858](https://github.com/mono/SkiaSharp/pull/2858)) +- **Restored `SKBitmap.Encode` behavior** — Reverts `SKBitmap.Encode` with `SKPngEncoderOptions` to the previous (2.88.8) behavior. ❤️ [@sungaila](https://github.com/sungaila) ([#3014](https://github.com/mono/SkiaSharp/pull/3014)) - **Fixed .NET 9 ASP.NET Blazor & WASM issues** — Resolves Blazor base-path imports and .NET 9 Blazor/WebAssembly problems. ([#3081](https://github.com/mono/SkiaSharp/pull/3081), [#3087](https://github.com/mono/SkiaSharp/pull/3087), [#3089](https://github.com/mono/SkiaSharp/pull/3089), [#3093](https://github.com/mono/SkiaSharp/pull/3093)) - **Floored outwards converting to `SKRectI`** — Rounds outward when converting to integer rects. ([#2568](https://github.com/mono/SkiaSharp/pull/2568)) -- **Restored no-SIMD WebAssembly builds** — Restores `nosimd` builds for hardened-security Edge and Safari. ❤️ [@jerome.laban](https://github.com/jerome.laban) ([#2612](https://github.com/mono/SkiaSharp/pull/2612)) +- **Restored no-SIMD WebAssembly builds** — Restores `nosimd` builds for hardened-security Edge and Safari. ❤️ [@jeromelaban](https://github.com/jeromelaban) ([#2612](https://github.com/mono/SkiaSharp/pull/2612)) Plus the migration to 1ES pipelines, an MSVC build, dev-container support and many other CI, compliance and documentation improvements. @@ -228,18 +228,18 @@ Plus the migration to 1ES pipelines, an MSVC build, dev-container support and ma | Contributor | What They Did | |-------------|--------------| | [@maxkatz6](https://github.com/maxkatz6) | Function pointers & `LibraryImport` interop, common Metal TFM, trimmable `PlatformConfiguration` | -| [@youssefvictor00](https://github.com/youssefvictor00) | `SKFilterQuality` compatibility overloads, `SetRectRadii` span overload, Uno `Bgra8888` fix | -| [@jerome.laban](https://github.com/jerome.laban) | Restored `nosimd` WebAssembly builds and Uno/WASM fixes | +| [@Youssef1313](https://github.com/Youssef1313) | `SKFilterQuality` compatibility overloads, `SetRectRadii` span overload, Uno `Bgra8888` fix | +| [@jeromelaban](https://github.com/jeromelaban) | Restored `nosimd` WebAssembly builds and Uno/WASM fixes | | [@alexandrvslv](https://github.com/alexandrvslv) | Added `Span` overloads for `MapPoints`/`MapVectors`/`AddPoly` | -| [@jondick](https://github.com/jondick) | Updated the bundled Skia | -| [@jerome](https://github.com/jerome) | Added .NET 9 support | -| [@gmurray](https://github.com/gmurray) | Added `SKGLElement` to `SkiaSharp.Views.WPF` | -| [@rodriguezo.alberto](https://github.com/rodriguezo.alberto) | Exposed DPI on the Blazor components | -| [@david.sungaila](https://github.com/david.sungaila) | Restored prior `SKBitmap.Encode` PNG behavior | +| [@Redth](https://github.com/Redth) | Updated the bundled Skia | +| [@jeromelaban](https://github.com/jeromelaban) | Added .NET 9 support | +| [@gmurray81](https://github.com/gmurray81) | Added `SKGLElement` to `SkiaSharp.Views.WPF` | +| [@beto-rodriguez](https://github.com/beto-rodriguez) | Exposed DPI on the Blazor components | +| [@sungaila](https://github.com/sungaila) | Restored prior `SKBitmap.Encode` PNG behavior | | [@jeremy-visionaid](https://github.com/jeremy-visionaid) | Fixed an access violation disposing a cloned `SKPaint` | | [@taublast](https://github.com/taublast) | Fixed magenta `Snapshot` on Apple Metal | -| [@phill](https://github.com/phill) | Fixed `GetKerningPairAdjustments` | -| [@jlaban](https://github.com/jlaban) | Fixed null `XamlRoot` on `SKXamlCanvas` unload | +| [@pdjonov](https://github.com/pdjonov) | Fixed `GetKerningPairAdjustments` | +| [@jeromelaban](https://github.com/jeromelaban) | Fixed null `XamlRoot` on `SKXamlCanvas` unload | | [@lindexi](https://github.com/lindexi) | Removed an `async void` path in `SKXamlCanvas` | | [@Fxplorer](https://github.com/Fxplorer) | Fixed a typo in the README | diff --git a/documentation/docfx/releases/3.116.1.md b/documentation/docfx/releases/3.116.1.md index 1bc6d2eaaa6..098e577c64d 100644 --- a/documentation/docfx/releases/3.116.1.md +++ b/documentation/docfx/releases/3.116.1.md @@ -3,7 +3,7 @@ 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-16T18:28:41Z by generate-release-notes.py + Generated: 2026-06-16T19:43:35Z by generate-release-notes.py version: 3.116.1 status: stable branch: release/3.116.1 diff --git a/documentation/docfx/releases/3.118.0.md b/documentation/docfx/releases/3.118.0.md index 399b12873ff..7d943fd7a77 100644 --- a/documentation/docfx/releases/3.118.0.md +++ b/documentation/docfx/releases/3.118.0.md @@ -3,7 +3,7 @@ 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:30:25Z by generate-release-notes.py + Generated: 2026-06-16T19:43:58Z by generate-release-notes.py version: 3.118.0 status: preview superseded: 3.119.0 (preview only, never released as stable) @@ -17,7 +17,7 @@ - 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) + - Add Metal API for GRBackendRenderTarget to all platforms by @spouliot 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 `` 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) diff --git a/documentation/docfx/releases/3.119.0.md b/documentation/docfx/releases/3.119.0.md index caab129b20d..7e86979f857 100644 --- a/documentation/docfx/releases/3.119.0.md +++ b/documentation/docfx/releases/3.119.0.md @@ -3,7 +3,7 @@ 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 + Generated: 2026-06-16T19:44:45Z by generate-release-notes.py version: 3.119.0 status: stable supersedes: 3.118.0 (preview only, rolled up) @@ -21,7 +21,7 @@ - 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) + - 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) @@ -33,14 +33,14 @@ - 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) + - Fix regression that breaks projects using .NET Framework/Mono and packages.config by @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) + - [build] Address CVE-2024-30105 by @pjcollins 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) + - Support SKMetalView on tvOS by @MartinZikmund 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) + - Fix the incorrect call. by @kkwpsv 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) @@ -49,7 +49,7 @@ - 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) + - Add Metal API for GRBackendRenderTarget to all platforms by @spouliot 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 `` 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) @@ -96,23 +96,23 @@ This is the first stable release since 3.116.1, rolling up all the work from the - **LoongArch64 support** — SkiaSharp now builds and ships native binaries for the LoongArch64 architecture on Linux. ❤️ [@4Darmygeometry](https://github.com/4Darmygeometry) ([#3198](https://github.com/mono/SkiaSharp/pull/3198)) - **RISC-V 64-bit support** — Native binaries are now built and shipped for the `linux-riscv64` RID. ❤️ [@kasperk81](https://github.com/kasperk81) ([#3192](https://github.com/mono/SkiaSharp/pull/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](https://github.com/kation) ([#2823](https://github.com/mono/SkiaSharp/pull/2823)) +- **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](https://github.com/Kation) ([#2823](https://github.com/mono/SkiaSharp/pull/2823)) - **OpenGL on Windows ARM** — The OpenGL backend is now enabled on Windows ARM devices. ([#3189](https://github.com/mono/SkiaSharp/pull/3189)) -- **`SKMetalView` on tvOS** — Adds `SKMetalView` support to the tvOS platform, matching other Apple targets. ❤️ [@martin](https://github.com/martin) ([#3114](https://github.com/mono/SkiaSharp/pull/3114)) +- **`SKMetalView` on tvOS** — Adds `SKMetalView` support to the tvOS platform, matching other Apple targets. ❤️ [@MartinZikmund](https://github.com/MartinZikmund) ([#3114](https://github.com/mono/SkiaSharp/pull/3114)) - **Expanded Linux support** — Extended the Linux build matrix to cover more distributions and configurations, including Alpine Linux cross-compilation support. ❤️ [@kasperk81](https://github.com/kasperk81) ([#3200](https://github.com/mono/SkiaSharp/pull/3200), [#3209](https://github.com/mono/SkiaSharp/pull/3209)) ## Bug Fixes - **iOS Simulator Metal performance** — Fixed a significant rendering performance regression when using the Metal backend on the iOS Simulator. ❤️ [@taublast](https://github.com/taublast) ([#3156](https://github.com/mono/SkiaSharp/pull/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](https://github.com/david.sungaila) ([#3112](https://github.com/mono/SkiaSharp/pull/3112)) +- **.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. ❤️ [@sungaila](https://github.com/sungaila) ([#3112](https://github.com/mono/SkiaSharp/pull/3112)) - **WebAssembly / Blazor app base path** — Fixed WASM module loading when the application is hosted under a non-root base path. ([#3092](https://github.com/mono/SkiaSharp/pull/3092)) - **.NET 9 ASP.NET Blazor compatibility** — Resolved multiple issues with .NET 9 Blazor hosted apps. ([#3064](https://github.com/mono/SkiaSharp/pull/3064), [#3082](https://github.com/mono/SkiaSharp/pull/3082), [#3088](https://github.com/mono/SkiaSharp/pull/3088)) -- **Incorrect internal API call** — Fixed a wrong native API call in the bindings. ❤️ [@i](https://github.com/i) ([#3143](https://github.com/mono/SkiaSharp/pull/3143)) +- **Incorrect internal API call** — Fixed a wrong native API call in the bindings. ❤️ [@kkwpsv](https://github.com/kkwpsv) ([#3143](https://github.com/mono/SkiaSharp/pull/3143)) - **tvOS build target** — Fixed an incorrect build target configuration for tvOS. ([#3199](https://github.com/mono/SkiaSharp/pull/3199)) ## Security -- **CVE-2024-30105 addressed** — Updated the build toolchain to address a .NET security vulnerability in the CI pipeline. ❤️ [@pecolli](https://github.com/pecolli) ([#3166](https://github.com/mono/SkiaSharp/pull/3166)) +- **CVE-2024-30105 addressed** — Updated the build toolchain to address a .NET security vulnerability in the CI pipeline. ❤️ [@pjcollins](https://github.com/pjcollins) ([#3166](https://github.com/mono/SkiaSharp/pull/3166)) ## Dependencies @@ -145,13 +145,13 @@ All major native dependencies were updated to current stable versions: | [@ahmed605](https://github.com/ahmed605) | Implemented `SKCanvas.SaveLayerRec` | | [@4Darmygeometry](https://github.com/4Darmygeometry) | Added LoongArch64 native build support | | [@kasperk81](https://github.com/kasperk81) | Added RISC-V 64-bit support, updated VulkanMemoryAllocator, extended Alpine Linux cross-compilation | -| [@kation](https://github.com/kation) | Enabled Direct3D 12 GPU backend on Windows | -| [@martin](https://github.com/martin) | Added `SKMetalView` support on tvOS | +| [@Kation](https://github.com/Kation) | Enabled Direct3D 12 GPU backend on Windows | +| [@MartinZikmund](https://github.com/MartinZikmund) | Added `SKMetalView` support on tvOS | | [@taublast](https://github.com/taublast) | Fixed iOS Simulator Metal performance regression | | [@spouliot](https://github.com/spouliot) | Added Metal `GRBackendRenderTarget` API across all Apple platforms | -| [@david.sungaila](https://github.com/david.sungaila) | Fixed .NET Framework / Mono `packages.config` regression | -| [@pecolli](https://github.com/pecolli) | Addressed CVE-2024-30105 in the build toolchain | -| [@i](https://github.com/i) | Fixed an incorrect internal API call | +| [@sungaila](https://github.com/sungaila) | Fixed .NET Framework / Mono `packages.config` regression | +| [@pjcollins](https://github.com/pjcollins) | Addressed CVE-2024-30105 in the build toolchain | +| [@kkwpsv](https://github.com/kkwpsv) | Fixed an incorrect internal API call | ## Links diff --git a/documentation/docfx/releases/3.119.1.md b/documentation/docfx/releases/3.119.1.md index ecce56ea34e..0aefecd8090 100644 --- a/documentation/docfx/releases/3.119.1.md +++ b/documentation/docfx/releases/3.119.1.md @@ -3,7 +3,7 @@ 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-16T18:29:08Z by generate-release-notes.py + Generated: 2026-06-16T19:45:08Z by generate-release-notes.py version: 3.119.1 status: stable branch: release/3.119.1 @@ -16,7 +16,7 @@ - Update to 1ES MicroBuild templates by @mattleibow in https://github.com/mono/SkiaSharp/pull/3347 (26 commits, 5 days) - Regenerate the docs and bump the version by @mattleibow in https://github.com/mono/SkiaSharp/pull/3345 (2 commits, 1 day) - Build the WinUI Interop as /MT by @mattleibow in https://github.com/mono/SkiaSharp/pull/3341 (2 commits, 1 day) - - Added PostScriptName to SkTypeface by @jon in https://github.com/mono/SkiaSharp/pull/3263 [community ✨] (4 commits, 3 days) + - Added PostScriptName to SkTypeface by @jonlipsky in https://github.com/mono/SkiaSharp/pull/3263 [community ✨] (4 commits, 3 days) - Build EGL as win32 and GLESv2 as WASDK by @mattleibow in https://github.com/mono/SkiaSharp/pull/3338 (1 commit, 1 day) - Test disposing GRContext does not crash for Metal backend by @jeremy-visionaid in https://github.com/mono/SkiaSharp/pull/3258 [community ✨] (2 commits, 2 days) - Update azure-pipelines-native.yml by @mattleibow in https://github.com/mono/SkiaSharp/pull/3340 (1 commit, 1 day) @@ -26,14 +26,14 @@ - Hotfix metal for ios 15 and lower by @taublast in https://github.com/mono/SkiaSharp/pull/3293 [community ✨] (3 commits, 3 days) - Update label-with-ai.yml by @mattleibow in https://github.com/mono/SkiaSharp/pull/3306 (5 commits, 2 days) - Use the new Triage assistant by @mattleibow in https://github.com/mono/SkiaSharp/pull/3305 (1 commit, 1 day) - - fix: SKXamlCanvas must not be opaque on MacCatalyst by @sebastien.pouliot in https://github.com/mono/SkiaSharp/pull/3236 [community ✨] (2 commits, 2 days) + - fix: SKXamlCanvas must not be opaque on MacCatalyst by @spouliot in https://github.com/mono/SkiaSharp/pull/3236 [community ✨] (2 commits, 2 days) - SKAutoCanvasRestore avoid crash at Dispose when canvas was already disposed by @taublast in https://github.com/mono/SkiaSharp/pull/3291 [community ✨] (5 commits, 4 days) - Update Azure Pipelines from ubuntu-20.04 to ubuntu-22.04 by @Copilot in https://github.com/mono/SkiaSharp/pull/3295 [community ✨] (2 commits, 1 day) - Avoid initializing SKMetalView twice by @jeremy-visionaid in https://github.com/mono/SkiaSharp/pull/3256 [community ✨] (1 commit, 1 day) - Update README.md by @mattleibow in https://github.com/mono/SkiaSharp/pull/3254 (1 commit, 1 day) - Increase the build number in the new pipeline by @mattleibow in https://github.com/mono/SkiaSharp/pull/3253 (1 commit, 1 day) - Add a cron job to make sure all is well by @mattleibow in https://github.com/mono/SkiaSharp/pull/3249 (1 commit, 1 day) - - [azure-pipelines-native] Add CI triggers for primary branches by @pecolli in https://github.com/mono/SkiaSharp/pull/3248 [community ✨] (3 commits, 1 day) + - [azure-pipelines-native] Add CI triggers for primary branches by @pjcollins in https://github.com/mono/SkiaSharp/pull/3248 [community ✨] (3 commits, 1 day) - Split the pipeline up on release builds by @mattleibow in https://github.com/mono/SkiaSharp/pull/3247 (26 commits, 3 days) --> @@ -45,7 +45,7 @@ ## Highlights -A servicing release focused on Apple platform stability — fixing Metal rendering on iOS 15 and lower, MacCatalyst canvas opacity, and disposal crashes — alongside a zlib update and a new `PostScriptName` on `SKTypeface`. Most user-facing fixes came from community contributors including [@taublast](https://github.com/taublast), [@jeremy-visionaid](https://github.com/jeremy-visionaid), [@jon](https://github.com/jon), and [@sebastien.pouliot](https://github.com/sebastien.pouliot). +A servicing release focused on Apple platform stability — fixing Metal rendering on iOS 15 and lower, MacCatalyst canvas opacity, and disposal crashes — alongside a zlib update and a new `PostScriptName` on `SKTypeface`. Most user-facing fixes came from community contributors including [@taublast](https://github.com/taublast), [@jeremy-visionaid](https://github.com/jeremy-visionaid), [@jonlipsky](https://github.com/jonlipsky), and [@spouliot](https://github.com/spouliot). ## New Features @@ -55,7 +55,7 @@ A servicing release focused on Apple platform stability — fixing Metal renderi ### Text & Fonts -- **`PostScriptName` on `SKTypeface`** — Exposes the PostScript name of a typeface. ❤️ [@jon](https://github.com/jon) ([#3263](https://github.com/mono/SkiaSharp/pull/3263)) +- **`PostScriptName` on `SKTypeface`** — Exposes the PostScript name of a typeface. ❤️ [@jonlipsky](https://github.com/jonlipsky) ([#3263](https://github.com/mono/SkiaSharp/pull/3263)) ### Platform @@ -66,7 +66,7 @@ A servicing release focused on Apple platform stability — fixing Metal renderi - **Metal on iOS 15 and lower** — Hotfixes Metal rendering for iOS 15 and earlier. ❤️ [@taublast](https://github.com/taublast) ([#3293](https://github.com/mono/SkiaSharp/pull/3293)) - **`SKAutoCanvasRestore` disposal crash** — Avoids a crash at `Dispose` when the canvas was already disposed. ❤️ [@taublast](https://github.com/taublast) ([#3291](https://github.com/mono/SkiaSharp/pull/3291)) -- **MacCatalyst canvas opacity** — Ensures `SKXamlCanvas` is not opaque on MacCatalyst. ❤️ [@sebastien.pouliot](https://github.com/sebastien.pouliot) ([#3236](https://github.com/mono/SkiaSharp/pull/3236)) +- **MacCatalyst canvas opacity** — Ensures `SKXamlCanvas` is not opaque on MacCatalyst. ❤️ [@spouliot](https://github.com/spouliot) ([#3236](https://github.com/mono/SkiaSharp/pull/3236)) - **Double `SKMetalView` initialization** — Avoids initializing `SKMetalView` twice. ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) ([#3256](https://github.com/mono/SkiaSharp/pull/3256)) - **UTC `DateTime` conversion** — Fixes UTC `DateTime` conversion. ❤️ [@jeremy-visionaid](https://github.com/jeremy-visionaid) ([#3333](https://github.com/mono/SkiaSharp/pull/3333)) @@ -84,9 +84,9 @@ A servicing release focused on Apple platform stability — fixing Metal renderi |-------------|--------------| | [@taublast](https://github.com/taublast) | Hotfixed Metal on iOS 15 and fixed an `SKAutoCanvasRestore` disposal crash | | [@jeremy-visionaid](https://github.com/jeremy-visionaid) | Fixed UTC `DateTime` conversion, double `SKMetalView` init, and added a Metal `GRContext` disposal test | -| [@jon](https://github.com/jon) | Added `PostScriptName` to `SKTypeface` | -| [@sebastien.pouliot](https://github.com/sebastien.pouliot) | Fixed MacCatalyst `SKXamlCanvas` opacity | -| [@pecolli](https://github.com/pecolli) | Added CI triggers for the native pipeline | +| [@jonlipsky](https://github.com/jonlipsky) | Added `PostScriptName` to `SKTypeface` | +| [@spouliot](https://github.com/spouliot) | Fixed MacCatalyst `SKXamlCanvas` opacity | +| [@pjcollins](https://github.com/pjcollins) | Added CI triggers for the native pipeline | ## Links diff --git a/documentation/docfx/releases/3.119.2.md b/documentation/docfx/releases/3.119.2.md index 0f5ce20fe87..6061ec6a63c 100644 --- a/documentation/docfx/releases/3.119.2.md +++ b/documentation/docfx/releases/3.119.2.md @@ -3,7 +3,7 @@ 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-16T18:29:31Z by generate-release-notes.py + Generated: 2026-06-16T19:45:30Z by generate-release-notes.py version: 3.119.2 status: stable branch: release/3.119.2 @@ -19,14 +19,14 @@ - Rewite the docs and Copilot instructions by @mattleibow in https://github.com/mono/SkiaSharp/pull/3442 (2 commits, 2 days) - improved docs a bit by @mattleibow in https://github.com/mono/SkiaSharp/pull/3441 (1 commit, 1 day) - Adding the initial set of AI docs by @mattleibow in https://github.com/mono/SkiaSharp/pull/3406 (9 commits, 3 days) - - Enable BufferSecurityCheck for native DLLs to resolve BinSkim BA2007 by @laguiler in https://github.com/mono/SkiaSharp/pull/3404 [community ✨] (2 commits, 1 day) - - Enable Control Flow Guard for all Windows native DLLs by @laguiler in https://github.com/mono/SkiaSharp/pull/3397 [community ✨] (1 commit, 1 day) + - Enable BufferSecurityCheck for native DLLs to resolve BinSkim BA2007 by @Aguilex in https://github.com/mono/SkiaSharp/pull/3404 [community ✨] (2 commits, 1 day) + - Enable Control Flow Guard for all Windows native DLLs by @Aguilex in https://github.com/mono/SkiaSharp/pull/3397 [community ✨] (1 commit, 1 day) - Use the correct run for the artifacts by @mattleibow in https://github.com/mono/SkiaSharp/pull/3383 (1 commit, 1 day) - Bump to the next version (3.119.3) after release by @mattleibow in https://github.com/mono/SkiaSharp/pull/3382 (1 commit, 1 day) - Preserve and pack the Android symbols by @mattleibow in https://github.com/mono/SkiaSharp/pull/3374 (3 commits, 3 days) - Bump to the next version after release by @mattleibow in https://github.com/mono/SkiaSharp/pull/3370 (1 commit, 1 day) - Add handling for symbol package suffix in folder name by @mattleibow in https://github.com/mono/SkiaSharp/pull/3368 (1 commit, 1 day) - - Add missing tvOS `SKSurface.Create` overloads by @martin in https://github.com/mono/SkiaSharp/pull/3342 [community ✨] (2 commits, 2 days) + - Add missing tvOS `SKSurface.Create` overloads by @MartinZikmund in https://github.com/mono/SkiaSharp/pull/3342 [community ✨] (2 commits, 2 days) - Use a valid "version number" for APIScan by @mattleibow in https://github.com/mono/SkiaSharp/pull/3367 (1 commit, 1 day) - Extract to same folder names by @mattleibow in https://github.com/mono/SkiaSharp/pull/3366 (1 commit, 1 day) - Add the MS build messages to AzDo logs by @mattleibow in https://github.com/mono/SkiaSharp/pull/3364 (1 commit, 1 day) @@ -49,15 +49,15 @@ This release hardens the native libraries against common exploit techniques on W ### Platform -- **tvOS `SKSurface.Create` overloads** — Adds the missing overloads for tvOS, bringing parity with the other Apple platforms. ❤️ [@martin](https://github.com/martin) ([#3342](https://github.com/mono/SkiaSharp/pull/3342)) +- **tvOS `SKSurface.Create` overloads** — Adds the missing overloads for tvOS, bringing parity with the other Apple platforms. ❤️ [@MartinZikmund](https://github.com/MartinZikmund) ([#3342](https://github.com/mono/SkiaSharp/pull/3342)) - **Android symbols** — Preserves and packs the Android debug symbols. ([#3374](https://github.com/mono/SkiaSharp/pull/3374)) ### Security - **Spectre mitigation for Linux** — Adds the Spectre mitigation flag for `libSkiaSharp.so`. ([#3503](https://github.com/mono/SkiaSharp/pull/3503)) - **Spectre mitigation for Windows** — Adds the Spectre mitigation flag for `libSkiaSharp.dll`. ([#3497](https://github.com/mono/SkiaSharp/pull/3497)) -- **Control Flow Guard (CFG)** — Enables Control Flow Guard for all Windows native DLLs. ❤️ [@laguiler](https://github.com/laguiler) ([#3397](https://github.com/mono/SkiaSharp/pull/3397)) -- **BufferSecurityCheck** — Enables `BufferSecurityCheck` for native DLLs to resolve BinSkim BA2007. ❤️ [@laguiler](https://github.com/laguiler) ([#3404](https://github.com/mono/SkiaSharp/pull/3404)) +- **Control Flow Guard (CFG)** — Enables Control Flow Guard for all Windows native DLLs. ❤️ [@Aguilex](https://github.com/Aguilex) ([#3397](https://github.com/mono/SkiaSharp/pull/3397)) +- **BufferSecurityCheck** — Enables `BufferSecurityCheck` for native DLLs to resolve BinSkim BA2007. ❤️ [@Aguilex](https://github.com/Aguilex) ([#3404](https://github.com/mono/SkiaSharp/pull/3404)) ## Bug Fixes @@ -78,8 +78,8 @@ Plus several CI, build, and documentation improvements. | Contributor | What They Did | |-------------|--------------| -| [@laguiler](https://github.com/laguiler) | Enabled Control Flow Guard and BufferSecurityCheck for Windows native DLLs | -| [@martin](https://github.com/martin) | Added the missing tvOS `SKSurface.Create` overloads | +| [@Aguilex](https://github.com/Aguilex) | Enabled Control Flow Guard and BufferSecurityCheck for Windows native DLLs | +| [@MartinZikmund](https://github.com/MartinZikmund) | Added the missing tvOS `SKSurface.Create` overloads | ## Links diff --git a/documentation/docfx/releases/3.119.3.md b/documentation/docfx/releases/3.119.3.md index 2fe787ac439..c4fd75f95fc 100644 --- a/documentation/docfx/releases/3.119.3.md +++ b/documentation/docfx/releases/3.119.3.md @@ -3,7 +3,7 @@ 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:29:31Z by generate-release-notes.py + Generated: 2026-06-16T19:46:03Z by generate-release-notes.py version: 3.119.3 status: preview superseded: 3.119.4 (preview only, never released as stable) diff --git a/documentation/docfx/releases/3.119.4.md b/documentation/docfx/releases/3.119.4.md index 0a831f9403d..8a4352c492a 100644 --- a/documentation/docfx/releases/3.119.4.md +++ b/documentation/docfx/releases/3.119.4.md @@ -3,7 +3,7 @@ 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:12:31Z by generate-release-notes.py + Generated: 2026-06-16T19:48:13Z by generate-release-notes.py version: 3.119.4 status: stable supersedes: 3.119.3 (preview only, rolled up) diff --git a/documentation/docfx/releases/3.119.5-unreleased.md b/documentation/docfx/releases/3.119.5-unreleased.md index 17f1faba15c..b903e533ec6 100644 --- a/documentation/docfx/releases/3.119.5-unreleased.md +++ b/documentation/docfx/releases/3.119.5-unreleased.md @@ -3,7 +3,7 @@ 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:46:51Z by generate-release-notes.py + Generated: 2026-06-16T19:32:16Z by generate-release-notes.py version: 3.119.5 status: unreleased branch: release/3.119.x diff --git a/documentation/docfx/releases/4.147.0.md b/documentation/docfx/releases/4.147.0.md index 135fb19f592..203622fc7b6 100644 --- a/documentation/docfx/releases/4.147.0.md +++ b/documentation/docfx/releases/4.147.0.md @@ -3,7 +3,7 @@ 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-11T22:09:08Z by generate-release-notes.py + Generated: 2026-06-16T19:50:15Z by generate-release-notes.py version: 4.147.0 status: preview superseded: 4.148.0 (preview only, never released as stable) diff --git a/documentation/docfx/releases/4.148.0.md b/documentation/docfx/releases/4.148.0.md index 5ffa9ff83f9..7c3e0b26781 100644 --- a/documentation/docfx/releases/4.148.0.md +++ b/documentation/docfx/releases/4.148.0.md @@ -3,7 +3,7 @@ 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-16T18:33:30Z by generate-release-notes.py + Generated: 2026-06-16T19:52:46Z by generate-release-notes.py version: 4.148.0 status: preview supersedes: 4.147.0 (preview only, rolled up) diff --git a/documentation/docfx/releases/4.150.0.md b/documentation/docfx/releases/4.150.0.md index dede5303f8b..1ff74303bfe 100644 --- a/documentation/docfx/releases/4.150.0.md +++ b/documentation/docfx/releases/4.150.0.md @@ -3,7 +3,7 @@ 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-16T18:33:33Z by generate-release-notes.py + Generated: 2026-06-16T19:52:48Z by generate-release-notes.py version: 4.150.0 status: preview branch: release/4.150.0-preview.1 diff --git a/scripts/pr-authors.json b/scripts/pr-authors.json new file mode 100644 index 00000000000..2ff50548355 --- /dev/null +++ b/scripts/pr-authors.json @@ -0,0 +1,923 @@ +{ + "81": "mattleibow", + "386": "mattleibow", + "522": "mattleibow", + "562": "mattleibow", + "565": "mattleibow", + "615": "mattleibow", + "616": "mattleibow", + "635": "mattleibow", + "638": "mattleibow", + "662": "mattleibow", + "724": "newky2k", + "737": "mattleibow", + "761": "mattleibow", + "776": "mattleibow", + "777": "mattleibow", + "779": "mattleibow", + "785": "mattleibow", + "786": "mattleibow", + "790": "mattleibow", + "817": "mattleibow", + "821": "mattleibow", + "843": "mattleibow", + "850": "mattleibow", + "857": "mattleibow", + "859": "mattleibow", + "862": "mattleibow", + "863": "Odirb", + "865": "mattleibow", + "868": "mattleibow", + "869": "mattleibow", + "872": "Gillibald", + "875": "mattleibow", + "878": "mattleibow", + "879": "mattleibow", + "881": "Gillibald", + "882": "mattleibow", + "884": "mattleibow", + "885": "mattleibow", + "886": "mattleibow", + "889": "mattleibow", + "891": "mattleibow", + "892": "danien", + "899": "mattleibow", + "900": "mattleibow", + "903": "mattleibow", + "904": "Gillibald", + "915": "mattleibow", + "916": "mattleibow", + "917": "mattleibow", + "919": "mattleibow", + "922": "mattleibow", + "929": "Gillibald", + "962": "mattleibow", + "966": "mattleibow", + "967": "mattleibow", + "971": "mattleibow", + "972": "Gillibald", + "979": "mattleibow", + "984": "Gillibald", + "985": "mattleibow", + "986": "mattleibow", + "992": "mattleibow", + "995": "mattleibow", + "997": "mattleibow", + "1000": "mattleibow", + "1005": "mattleibow", + "1007": "mattleibow", + "1010": "mattleibow", + "1012": "mattleibow", + "1013": "mattleibow", + "1015": "mattleibow", + "1019": "mattleibow", + "1020": "mattleibow", + "1021": "mattleibow", + "1022": "mattleibow", + "1023": "mattleibow", + "1024": "mattleibow", + "1025": "mattleibow", + "1030": "mattleibow", + "1034": "mattleibow", + "1036": "mattleibow", + "1037": "mattleibow", + "1038": "mattleibow", + "1039": "daltonks", + "1040": "mattleibow", + "1043": "mattleibow", + "1044": "mattleibow", + "1045": "mattleibow", + "1051": "mattleibow", + "1054": "mattleibow", + "1055": "mattleibow", + "1056": "mattleibow", + "1057": "mattleibow", + "1060": "mattleibow", + "1077": "mattleibow", + "1082": "mattleibow", + "1083": "mattleibow", + "1086": "validvoid", + "1089": "mattleibow", + "1090": "mattleibow", + "1095": "zbyszekpy", + "1098": "mattleibow", + "1103": "mattleibow", + "1109": "mattleibow", + "1116": "mattleibow", + "1117": "mattleibow", + "1120": "mattleibow", + "1122": "mattleibow", + "1123": "mattleibow", + "1125": "mattleibow", + "1126": "mattleibow", + "1133": "mattleibow", + "1135": "mattleibow", + "1140": "mattleibow", + "1141": "mattleibow", + "1143": "mattleibow", + "1152": "mattleibow", + "1153": "mattleibow", + "1158": "mattleibow", + "1175": "mattleibow", + "1180": "mattleibow", + "1185": "ziriax", + "1190": "mattleibow", + "1191": "mscherotter", + "1198": "ziriax", + "1200": "mattleibow", + "1206": "mattleibow", + "1207": "mattleibow", + "1209": "Gillibald", + "1212": "mscherotter", + "1213": "mattleibow", + "1214": "mattleibow", + "1215": "mattleibow", + "1216": "terrajobst", + "1224": "mattleibow", + "1229": "mattleibow", + "1234": "mattleibow", + "1237": "mattleibow", + "1242": "mattleibow", + "1245": "mattleibow", + "1250": "mattleibow", + "1255": "mattleibow", + "1256": "mattleibow", + "1257": "mattleibow", + "1258": "mattleibow", + "1263": "mattleibow", + "1268": "mattleibow", + "1277": "mattleibow", + "1280": "mattleibow", + "1281": "mattleibow", + "1285": "mattleibow", + "1286": "mattleibow", + "1287": "mattleibow", + "1292": "mattleibow", + "1294": "mattleibow", + "1296": "mattleibow", + "1299": "mattleibow", + "1300": "mattleibow", + "1313": "mattleibow", + "1322": "mattleibow", + "1323": "mattleibow", + "1325": "mattleibow", + "1326": "mattleibow", + "1328": "mattleibow", + "1331": "mattleibow", + "1333": "mattleibow", + "1339": "mattleibow", + "1342": "mattleibow", + "1344": "mattleibow", + "1356": "mattleibow", + "1357": "mattleibow", + "1358": "mattleibow", + "1359": "mattleibow", + "1360": "mattleibow", + "1361": "mattleibow", + "1362": "mattleibow", + "1365": "mattleibow", + "1366": "mattleibow", + "1368": "mattleibow", + "1382": "mattleibow", + "1386": "mattleibow", + "1387": "mattleibow", + "1388": "mattleibow", + "1389": "mattleibow", + "1394": "mattleibow", + "1396": "mattleibow", + "1399": "mattleibow", + "1400": "mattleibow", + "1404": "ziriax", + "1410": "ziriax", + "1411": "mattleibow", + "1416": "mattleibow", + "1417": "mattleibow", + "1418": "mattleibow", + "1420": "mattleibow", + "1424": "mattleibow", + "1426": "mattleibow", + "1427": "mattleibow", + "1429": "mattleibow", + "1431": "mattleibow", + "1436": "mattleibow", + "1438": "mattleibow", + "1439": "mattleibow", + "1440": "mattleibow", + "1441": "mattleibow", + "1445": "mattleibow", + "1447": "mattleibow", + "1452": "mattleibow", + "1453": "mattleibow", + "1456": "mattleibow", + "1457": "mattleibow", + "1468": "mattleibow", + "1469": "mattleibow", + "1473": "mattleibow", + "1475": "mattleibow", + "1476": "mattleibow", + "1478": "mattleibow", + "1480": "mattleibow", + "1483": "mattleibow", + "1488": "mattleibow", + "1489": "mattleibow", + "1493": "mattleibow", + "1510": "mattleibow", + "1511": "mattleibow", + "1512": "mattleibow", + "1514": "mattleibow", + "1518": "mattleibow", + "1519": "Mikolaytis", + "1525": "mattleibow", + "1527": "mattleibow", + "1529": "mattleibow", + "1536": "mattleibow", + "1539": "mattleibow", + "1540": "mattleibow", + "1566": "mattleibow", + "1568": "mattleibow", + "1590": "mattleibow", + "1591": "mattleibow", + "1592": "mattleibow", + "1593": "mattleibow", + "1594": "mattleibow", + "1595": "mattleibow", + "1597": "mattleibow", + "1598": "mattleibow", + "1599": "mattleibow", + "1602": "jeromelaban", + "1603": "mattleibow", + "1604": "mattleibow", + "1606": "HarlanHugh", + "1615": "mattleibow", + "1617": "mattleibow", + "1620": "mattleibow", + "1627": "mattleibow", + "1630": "mattleibow", + "1636": "mattleibow", + "1638": "mattleibow", + "1642": "gmurray81", + "1651": "mattleibow", + "1653": "mattleibow", + "1657": "mattleibow", + "1659": "mattleibow", + "1660": "mattleibow", + "1662": "mattleibow", + "1665": "mattleibow", + "1668": "mattleibow", + "1678": "mattleibow", + "1681": "mattleibow", + "1685": "mattleibow", + "1696": "mattleibow", + "1697": "mattleibow", + "1698": "mattleibow", + "1703": "mattleibow", + "1704": "mattleibow", + "1707": "mattleibow", + "1708": "mattleibow", + "1710": "mattleibow", + "1721": "mattleibow", + "1730": "mattleibow", + "1734": "jsuarezruiz", + "1736": "mattleibow", + "1740": "mattleibow", + "1741": "mattleibow", + "1746": "jeromelaban", + "1749": "mattleibow", + "1754": "mattleibow", + "1758": "mattleibow", + "1760": "mattleibow", + "1762": "mattleibow", + "1766": "mattleibow", + "1774": "mattleibow", + "1781": "mattleibow", + "1782": "mattleibow", + "1788": "mattleibow", + "1793": "mattleibow", + "1797": "mattleibow", + "1800": "mattleibow", + "1802": "mattleibow", + "1804": "mattleibow", + "1806": "mattleibow", + "1807": "mattleibow", + "1811": "mattleibow", + "1812": "jonathanpeppers", + "1815": "mattleibow", + "1817": "toptensoftware", + "1827": "mattleibow", + "1828": "mattleibow", + "1832": "beto-rodriguez", + "1842": "mattleibow", + "1843": "mattleibow", + "1851": "mattleibow", + "1854": "HarlanHugh", + "1856": "mattleibow", + "1857": "mattleibow", + "1859": "mattleibow", + "1863": "mattleibow", + "1865": "mattleibow", + "1873": "jeromelaban", + "1889": "JensKrumsieck", + "1890": "mattleibow", + "1895": "jonathanpeppers", + "1910": "koolkdev", + "1932": "mattleibow", + "1942": "mattleibow", + "1944": "mattleibow", + "1946": "mattleibow", + "1954": "mjbond-msft", + "1956": "mattleibow", + "1957": "mattleibow", + "1958": "mattleibow", + "1959": "mattleibow", + "1963": "mattleibow", + "1965": "mattleibow", + "1967": "mattleibow", + "1986": "mattleibow", + "1987": "jeromelaban", + "1988": "mattleibow", + "1992": "mattleibow", + "1993": "mattleibow", + "2004": "mattleibow", + "2010": "akoeplinger", + "2016": "mattleibow", + "2029": "mattleibow", + "2031": "mattleibow", + "2032": "mattleibow", + "2034": "mattleibow", + "2042": "jeromelaban", + "2045": "mattleibow", + "2047": "mattleibow", + "2052": "mattleibow", + "2054": "mattleibow", + "2078": "mattleibow", + "2079": "mattleibow", + "2083": "mattleibow", + "2085": "mattleibow", + "2086": "jeromelaban", + "2087": "mattleibow", + "2088": "jeromelaban", + "2091": "mattleibow", + "2092": "mattleibow", + "2093": "mattleibow", + "2094": "jeromelaban", + "2098": "mattleibow", + "2099": "mattleibow", + "2100": "mattleibow", + "2118": "mattleibow", + "2119": "mattleibow", + "2120": "mattleibow", + "2126": "mattleibow", + "2128": "mattleibow", + "2130": "mattleibow", + "2133": "jeromelaban", + "2137": "mattleibow", + "2138": "mgood7123", + "2140": "mattleibow", + "2146": "lindexi", + "2154": "mgood7123", + "2162": "mgood7123", + "2167": "mattleibow", + "2168": "mattleibow", + "2189": "mattleibow", + "2192": "mattleibow", + "2193": "mattleibow", + "2195": "RichardD2", + "2198": "mattleibow", + "2199": "jeromelaban", + "2206": "mattleibow", + "2212": "mattleibow", + "2213": "mattleibow", + "2225": "myroot", + "2231": "jeromelaban", + "2232": "JamieMagee", + "2243": "mattleibow", + "2247": "snnz", + "2254": "mattleibow", + "2255": "mattleibow", + "2256": "mattleibow", + "2257": "mattleibow", + "2259": "jeromelaban", + "2264": "mattleibow", + "2265": "mattleibow", + "2266": "mattleibow", + "2268": "mattleibow", + "2269": "jeromelaban", + "2273": "mattleibow", + "2276": "mattleibow", + "2286": "jeromelaban", + "2301": "mattleibow", + "2303": "Redth", + "2304": "mattleibow", + "2313": "FoggyFinder", + "2317": "gmurray81", + "2322": "myroot", + "2389": "pjcollins", + "2393": "pjcollins", + "2398": "roubachof", + "2400": "roubachof", + "2401": "roubachof", + "2425": "mattleibow", + "2428": "jeromelaban", + "2443": "roubachof", + "2457": "jeromelaban", + "2465": "dellis1972", + "2468": "mattleibow", + "2476": "mattleibow", + "2477": "mattleibow", + "2478": "mattleibow", + "2479": "mattleibow", + "2480": "mattleibow", + "2482": "mattleibow", + "2484": "mattleibow", + "2485": "mattleibow", + "2486": "mattleibow", + "2487": "mattleibow", + "2489": "mattleibow", + "2490": "mattleibow", + "2491": "mattleibow", + "2495": "jeromelaban", + "2497": "mattleibow", + "2498": "mattleibow", + "2500": "mattleibow", + "2503": "jeromelaban", + "2505": "mattleibow", + "2510": "mattleibow", + "2529": "jeromelaban", + "2539": "mattleibow", + "2540": "mattleibow", + "2545": "mattleibow", + "2553": "mattleibow", + "2554": "mattleibow", + "2556": "mattleibow", + "2558": "mattleibow", + "2559": "jeromelaban", + "2563": "jeromelaban", + "2567": "mattleibow", + "2568": "mattleibow", + "2571": "mattleibow", + "2573": "mattleibow", + "2577": "mattleibow", + "2581": "mattleibow", + "2582": "mattleibow", + "2583": "mattleibow", + "2587": "mattleibow", + "2588": "mattleibow", + "2592": "mattleibow", + "2596": "mattleibow", + "2597": "mattleibow", + "2598": "mattleibow", + "2604": "mattleibow", + "2605": "mattleibow", + "2609": "mattleibow", + "2610": "mattleibow", + "2611": "mattleibow", + "2612": "jeromelaban", + "2620": "mattleibow", + "2622": "mattleibow", + "2623": "mattleibow", + "2624": "mattleibow", + "2625": "mattleibow", + "2627": "mattleibow", + "2630": "mattleibow", + "2693": "mattleibow", + "2694": "mattleibow", + "2695": "mattleibow", + "2696": "mattleibow", + "2697": "mattleibow", + "2698": "mattleibow", + "2699": "mattleibow", + "2700": "mattleibow", + "2701": "mattleibow", + "2702": "mattleibow", + "2703": "mattleibow", + "2705": "mattleibow", + "2706": "mattleibow", + "2707": "mattleibow", + "2710": "mattleibow", + "2711": "mattleibow", + "2717": "maxkatz6", + "2720": "lindexi", + "2730": "mattleibow", + "2733": "mattleibow", + "2736": "mattleibow", + "2737": "mattleibow", + "2739": "mattleibow", + "2741": "mattleibow", + "2743": "mattleibow", + "2747": "mattleibow", + "2748": "mattleibow", + "2749": "mattleibow", + "2753": "mattleibow", + "2763": "mattleibow", + "2769": "mattleibow", + "2770": "mattleibow", + "2772": "mattleibow", + "2775": "mattleibow", + "2780": "mattleibow", + "2781": "mattleibow", + "2785": "mattleibow", + "2788": "maxkatz6", + "2789": "mattleibow", + "2791": "mattleibow", + "2792": "mattleibow", + "2802": "mattleibow", + "2804": "taublast", + "2805": "mattleibow", + "2808": "mattleibow", + "2810": "mattleibow", + "2815": "mattleibow", + "2823": "Kation", + "2829": "mattleibow", + "2830": "mattleibow", + "2831": "mattleibow", + "2833": "mattleibow", + "2844": "mattleibow", + "2851": "mattleibow", + "2854": "jeromelaban", + "2858": "pdjonov", + "2864": "mattleibow", + "2873": "mattleibow", + "2875": "mattleibow", + "2876": "mattleibow", + "2877": "mattleibow", + "2878": "mattleibow", + "2879": "mattleibow", + "2880": "mattleibow", + "2882": "mattleibow", + "2883": "mattleibow", + "2885": "mattleibow", + "2889": "mattleibow", + "2890": "mattleibow", + "2891": "mattleibow", + "2917": "maxkatz6", + "2918": "Youssef1313", + "2920": "mattleibow", + "2922": "mattleibow", + "2924": "mattleibow", + "2926": "mattleibow", + "2927": "mattleibow", + "2929": "mattleibow", + "2930": "mattleibow", + "2932": "mattleibow", + "2934": "mattleibow", + "2935": "mattleibow", + "2938": "mattleibow", + "2946": "mattleibow", + "2949": "Youssef1313", + "2950": "mattleibow", + "2954": "mattleibow", + "2955": "mattleibow", + "2957": "mattleibow", + "2959": "mattleibow", + "2963": "Youssef1313", + "2969": "mattleibow", + "2970": "mattleibow", + "2971": "mattleibow", + "2975": "mattleibow", + "2989": "mattleibow", + "3010": "jeromelaban", + "3014": "sungaila", + "3021": "mattleibow", + "3022": "mattleibow", + "3026": "Redth", + "3039": "jeromelaban", + "3041": "mattleibow", + "3043": "mattleibow", + "3046": "mattleibow", + "3047": "mattleibow", + "3048": "mattleibow", + "3050": "mattleibow", + "3051": "mattleibow", + "3052": "mattleibow", + "3054": "mattleibow", + "3056": "mattleibow", + "3058": "mattleibow", + "3059": "mattleibow", + "3060": "mattleibow", + "3061": "mattleibow", + "3062": "mattleibow", + "3063": "mattleibow", + "3064": "mattleibow", + "3070": "spouliot", + "3080": "mattleibow", + "3082": "mattleibow", + "3083": "mattleibow", + "3085": "mattleibow", + "3088": "mattleibow", + "3090": "mattleibow", + "3092": "mattleibow", + "3096": "mattleibow", + "3100": "mattleibow", + "3112": "sungaila", + "3114": "MartinZikmund", + "3143": "kkwpsv", + "3150": "mattleibow", + "3152": "mattleibow", + "3154": "mattleibow", + "3156": "taublast", + "3161": "mattleibow", + "3166": "pjcollins", + "3171": "mattleibow", + "3180": "mattleibow", + "3186": "mattleibow", + "3187": "mattleibow", + "3189": "mattleibow", + "3190": "mattleibow", + "3199": "mattleibow", + "3209": "mattleibow", + "3215": "mattleibow", + "3216": "mattleibow", + "3221": "mattleibow", + "3231": "mattleibow", + "3236": "spouliot", + "3247": "mattleibow", + "3248": "pjcollins", + "3249": "mattleibow", + "3252": "mattleibow", + "3253": "mattleibow", + "3254": "mattleibow", + "3263": "jonlipsky", + "3291": "taublast", + "3293": "taublast", + "3305": "mattleibow", + "3306": "mattleibow", + "3338": "mattleibow", + "3339": "mattleibow", + "3340": "mattleibow", + "3341": "mattleibow", + "3342": "MartinZikmund", + "3345": "mattleibow", + "3347": "mattleibow", + "3352": "mattleibow", + "3353": "mattleibow", + "3355": "mattleibow", + "3359": "mattleibow", + "3360": "mattleibow", + "3361": "mattleibow", + "3364": "mattleibow", + "3366": "mattleibow", + "3367": "mattleibow", + "3368": "mattleibow", + "3370": "mattleibow", + "3374": "mattleibow", + "3382": "mattleibow", + "3383": "mattleibow", + "3387": "mattleibow", + "3397": "Aguilex", + "3404": "Aguilex", + "3406": "mattleibow", + "3441": "mattleibow", + "3442": "mattleibow", + "3443": "mattleibow", + "3444": "mattleibow", + "3445": "mattleibow", + "3446": "mattleibow", + "3447": "mattleibow", + "3450": "mattleibow", + "3451": "mattleibow", + "3452": "mattleibow", + "3453": "mattleibow", + "3454": "mattleibow", + "3455": "mattleibow", + "3457": "mattleibow", + "3458": "mattleibow", + "3459": "mattleibow", + "3460": "mattleibow", + "3463": "mattleibow", + "3468": "mattleibow", + "3469": "mattleibow", + "3474": "mattleibow", + "3475": "mattleibow", + "3477": "mattleibow", + "3478": "mattleibow", + "3479": "mattleibow", + "3486": "mattleibow", + "3488": "mattleibow", + "3494": "mattleibow", + "3495": "mattleibow", + "3496": "sshumakov", + "3501": "mattleibow", + "3502": "sshumakov", + "3504": "mattleibow", + "3505": "mattleibow", + "3506": "mattleibow", + "3507": "mattleibow", + "3508": "mattleibow", + "3510": "mattleibow", + "3513": "mattleibow", + "3514": "mattleibow", + "3515": "mattleibow", + "3516": "mattleibow", + "3517": "mattleibow", + "3518": "mattleibow", + "3529": "mattleibow", + "3530": "mattleibow", + "3532": "mattleibow", + "3543": "mattleibow", + "3544": "mattleibow", + "3547": "mattleibow", + "3548": "mattleibow", + "3550": "mattleibow", + "3551": "mattleibow", + "3556": "mattleibow", + "3558": "mattleibow", + "3561": "mattleibow", + "3562": "mattleibow", + "3563": "mattleibow", + "3564": "mattleibow", + "3566": "mattleibow", + "3567": "mattleibow", + "3568": "mattleibow", + "3569": "mattleibow", + "3571": "mattleibow", + "3573": "mattleibow", + "3574": "mattleibow", + "3575": "mattleibow", + "3577": "mattleibow", + "3579": "mattleibow", + "3580": "mattleibow", + "3581": "mattleibow", + "3582": "mattleibow", + "3584": "mattleibow", + "3585": "mattleibow", + "3586": "mattleibow", + "3590": "mattleibow", + "3591": "mattleibow", + "3593": "mattleibow", + "3594": "mattleibow", + "3595": "mattleibow", + "3596": "mattleibow", + "3597": "mattleibow", + "3598": "mattleibow", + "3599": "mattleibow", + "3600": "mattleibow", + "3601": "mattleibow", + "3602": "mattleibow", + "3603": "mattleibow", + "3604": "mattleibow", + "3605": "mattleibow", + "3606": "mattleibow", + "3613": "mattleibow", + "3614": "mattleibow", + "3616": "mattleibow", + "3618": "mattleibow", + "3619": "mattleibow", + "3620": "mattleibow", + "3622": "mattleibow", + "3623": "mattleibow", + "3624": "mattleibow", + "3625": "mattleibow", + "3626": "mattleibow", + "3629": "mattleibow", + "3633": "mattleibow", + "3634": "mattleibow", + "3635": "mattleibow", + "3637": "mattleibow", + "3639": "mattleibow", + "3640": "mattleibow", + "3641": "mattleibow", + "3648": "mattleibow", + "3650": "mattleibow", + "3651": "mattleibow", + "3653": "mattleibow", + "3656": "mattleibow", + "3658": "mattleibow", + "3660": "mattleibow", + "3662": "mattleibow", + "3665": "mattleibow", + "3667": "mattleibow", + "3668": "mattleibow", + "3669": "mattleibow", + "3670": "mattleibow", + "3671": "mattleibow", + "3672": "mattleibow", + "3674": "mattleibow", + "3675": "mattleibow", + "3676": "mattleibow", + "3694": "mattleibow", + "3696": "mattleibow", + "3697": "mattleibow", + "3704": "mattleibow", + "3706": "mattleibow", + "3707": "mattleibow", + "3708": "mattleibow", + "3709": "mattleibow", + "3710": "mattleibow", + "3711": "mattleibow", + "3712": "mattleibow", + "3713": "mattleibow", + "3717": "mattleibow", + "3718": "mattleibow", + "3720": "mattleibow", + "3721": "mattleibow", + "3723": "mattleibow", + "3726": "mattleibow", + "3727": "mattleibow", + "3729": "mattleibow", + "3731": "mattleibow", + "3742": "mattleibow", + "3743": "mattleibow", + "3744": "mattleibow", + "3745": "mattleibow", + "3746": "mattleibow", + "3747": "mattleibow", + "3748": "mattleibow", + "3749": "mattleibow", + "3750": "mattleibow", + "3752": "mattleibow", + "3753": "mattleibow", + "3755": "mattleibow", + "3756": "mattleibow", + "3757": "mattleibow", + "3760": "mattleibow", + "3761": "mattleibow", + "3763": "mattleibow", + "3764": "mattleibow", + "3765": "mattleibow", + "3771": "mattleibow", + "3772": "mattleibow", + "3774": "mattleibow", + "3780": "mattleibow", + "3782": "mattleibow", + "3787": "mattleibow", + "3792": "mattleibow", + "3794": "mattleibow", + "3798": "mattleibow", + "3802": "mattleibow", + "3805": "mattleibow", + "3808": "mattleibow", + "3811": "mattleibow", + "3812": "mattleibow", + "3813": "mattleibow", + "3815": "mattleibow", + "3822": "mattleibow", + "3824": "mattleibow", + "3825": "mattleibow", + "3826": "mattleibow", + "3827": "mattleibow", + "3830": "mattleibow", + "3835": "mattleibow", + "3836": "mattleibow", + "3839": "mattleibow", + "3877": "mattleibow", + "3907": "mattleibow", + "3911": "mattleibow", + "3918": "mattleibow", + "3970": "mattleibow", + "3971": "mattleibow", + "4000": "mattleibow", + "4001": "mattleibow", + "4004": "mattleibow", + "4006": "mattleibow", + "4012": "mattleibow", + "4013": "mattleibow", + "4014": "mattleibow", + "4019": "mattleibow", + "4020": "mattleibow", + "4022": "mattleibow", + "4023": "mattleibow", + "4024": "mattleibow", + "4025": "mattleibow", + "4030": "mattleibow", + "4035": "mattleibow", + "4036": "mattleibow", + "4038": "mattleibow", + "4043": "mattleibow", + "4044": "mattleibow", + "4045": "mattleibow", + "4050": "mattleibow", + "4054": "mattleibow", + "4055": "mattleibow", + "4057": "mattleibow", + "4058": "mattleibow", + "4059": "mattleibow", + "4062": "mattleibow", + "4070": "mattleibow", + "4073": "mattleibow", + "4075": "mattleibow", + "4077": "mattleibow", + "4079": "mattleibow", + "4081": "mattleibow", + "4084": "mattleibow", + "4086": "mattleibow", + "4087": "mattleibow", + "4089": "mattleibow", + "4091": "mattleibow", + "4094": "mattleibow", + "4097": "mattleibow", + "4099": "mattleibow", + "4105": "mattleibow", + "4114": "mattleibow", + "4125": "mattleibow", + "4128": "mattleibow", + "4133": "mattleibow", + "4143": "mattleibow", + "4144": "mattleibow", + "4146": "mattleibow", + "4148": "mattleibow", + "4149": "mattleibow", + "4152": "mattleibow", + "4159": "mattleibow", + "4167": "mattleibow", + "4171": "mattleibow" +} From 6b3189c189c89184694e4486978be952317d0fe3 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 16 Jun 2026 23:26:01 +0200 Subject: [PATCH 4/6] Move docs-gen data files into scripts/infra/docs/ versions.json (version-comparison/supersession config) and pr-authors.json (the GitHub-login cache) are both data files for the documentation-generation systems. Their only consumers are: - the release-notes generator (.agents/skills/release-notes/.../generate-release-notes.py) - the api-diff/docs Cake infra (scripts/infra/docs/docs.cake) Both already anchor on the repo root, and docs.cake itself lives under scripts/infra/docs/, so colocate the data with the code that produces the docs instead of leaving it in the generic top-level scripts/ directory. - git mv scripts/versions.json -> scripts/infra/docs/versions.json - git mv scripts/pr-authors.json -> scripts/infra/docs/pr-authors.json - Update the two code paths (VERSIONS_JSON_PATH and _AUTHOR_CACHE_PATH in the generator; the ROOT_PATH-relative path in docs.cake). - Update the prose/links that reference the old locations: writing-docs.md, api-diff.yml, SKILL.md, and inline docstrings/comments. Verified with a full `--all` run: the generator loads both files from the new paths, all 68 existing pages are skipped unchanged, and TOC/index regenerate identically. No release-note content changes. Co-authored-by: Matthew Leibowitz Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .agents/skills/release-notes/SKILL.md | 2 +- .../scripts/generate-release-notes.py | 14 +++++++------- .github/workflows/api-diff.yml | 8 ++++---- documentation/dev/writing-docs.md | 4 ++-- scripts/infra/docs/docs.cake | 4 ++-- scripts/{ => infra/docs}/pr-authors.json | 0 scripts/{ => infra/docs}/versions.json | 0 7 files changed, 16 insertions(+), 16 deletions(-) rename scripts/{ => infra/docs}/pr-authors.json (100%) rename scripts/{ => infra/docs}/versions.json (100%) diff --git a/.agents/skills/release-notes/SKILL.md b/.agents/skills/release-notes/SKILL.md index 09cc4f4290c..00249d67235 100644 --- a/.agents/skills/release-notes/SKILL.md +++ b/.agents/skills/release-notes/SKILL.md @@ -129,7 +129,7 @@ and records the outcome in the file's data-block; you only render what's there: script-generated *"Supersedes …"* note (kept verbatim). > You never compute supersession or base selection — just render whatever markers the file -> contains. The mechanics (and the optional `scripts/versions.json` overrides) are script +> contains. The mechanics (and the optional `scripts/infra/docs/versions.json` overrides) are script > internals. When polishing a superseded page, keep the script-generated *"Preview only · Superseded by …"* diff --git a/.agents/skills/release-notes/scripts/generate-release-notes.py b/.agents/skills/release-notes/scripts/generate-release-notes.py index 1402f9a1ffa..45e41acb011 100644 --- a/.agents/skills/release-notes/scripts/generate-release-notes.py +++ b/.agents/skills/release-notes/scripts/generate-release-notes.py @@ -24,7 +24,7 @@ The --all command iterates every branch and only writes files whose PR count or diff range has changed (idempotent). Use this for automated workflows. -Reads scripts/versions.json (if present) for comparison overrides and +Reads scripts/infra/docs/versions.json (if present) for comparison overrides and supersession markers. versions.json is the single source of truth: only the versions listed there get a non-default baseline or a superseded marker. @@ -56,15 +56,15 @@ # Noreply email pattern: {id}+{username}@users.noreply.github.com _NOREPLY_RE = re.compile(r"^\d+\+(.+)@users\.noreply\.github\.com$") -# Versions config (loaded lazily from scripts/versions.json) +# Versions config (loaded lazily from scripts/infra/docs/versions.json) _VERSIONS_CONFIG = None # type: Optional[list[dict]] -VERSIONS_JSON_PATH = Path("scripts/versions.json") +VERSIONS_JSON_PATH = Path("scripts/infra/docs/versions.json") def load_versions_config(): # type: () -> list[dict] - """Load scripts/versions.json override config (cached).""" + """Load scripts/infra/docs/versions.json override config (cached).""" global _VERSIONS_CONFIG if _VERSIONS_CONFIG is not None: return _VERSIONS_CONFIG @@ -305,13 +305,13 @@ def _login_from_email(email): # ── GitHub author resolution ───────────────────────────────────────── -_AUTHOR_CACHE_PATH = Path("scripts/pr-authors.json") +_AUTHOR_CACHE_PATH = Path("scripts/infra/docs/pr-authors.json") _GRAPHQL_BATCH = 50 def load_author_cache(): # type: () -> dict - """Load the PR-number -> GitHub-login cache (scripts/pr-authors.json). + """Load the PR-number -> GitHub-login cache (scripts/infra/docs/pr-authors.json). This cache is the durable record of every author resolved from the GitHub API, so ordinary regenerations stay fully offline: a warm cache means @@ -381,7 +381,7 @@ def resolve_pr_authors(prs): Confidence order: 1. noreply login — already set by get_prs_from_diff, always correct. - 2. cache (scripts/pr-authors.json) — previously resolved from the API. + 2. cache (scripts/infra/docs/pr-authors.json) — previously resolved from the API. 3. GitHub GraphQL — the authoritative PR author, batched then cached. PRs that still cannot be resolved keep ``login=None``; format_pr_list then diff --git a/.github/workflows/api-diff.yml b/.github/workflows/api-diff.yml index f1ffb5f085b..4ebab74612e 100644 --- a/.github/workflows/api-diff.yml +++ b/.github/workflows/api-diff.yml @@ -12,7 +12,7 @@ name: API Diff # That target wraps Mono.ApiTools.NuGetDiff, walks every version published to # NuGet.org (prereleases included) and writes a per-assembly markdown diff to # changelogs/{PackageId}/{version}/{Assembly}.md. Baseline selection and -# superseded-version handling are driven by scripts/versions.json — see that +# superseded-version handling are driven by scripts/infra/docs/versions.json — see that # file's $comment fields and the docs-api-diff-past target in # scripts/infra/docs/docs.cake. To reproduce a run locally, just run that one # command from the repo root. @@ -87,7 +87,7 @@ jobs: global-json-file: global.json # Single Cake target — the exact same command a human runs locally. It - # reads scripts/versions.json for compare_to / supersession overrides and + # reads scripts/infra/docs/versions.json for compare_to / supersession overrides and # writes the changelogs under changelogs/. - name: Generate changelogs run: | @@ -176,7 +176,7 @@ jobs: git commit -m "[docs] Update API changelogs" \ -m "Regenerated by the api-diff workflow using Mono.ApiTools.NuGetDiff. Compares all published NuGet.org versions (including prereleases). - Respects scripts/versions.json for comparison overrides." + Respects scripts/infra/docs/versions.json for comparison overrides." git push --force origin "$PR_BRANCH" @@ -190,7 +190,7 @@ jobs: --body "Automated API changelogs comparing all published NuGet.org versions. Generated by the \`api-diff\` workflow using \`Mono.ApiTools.NuGetDiff\`. - Respects \`scripts/versions.json\` for comparison overrides and supersession tracking. + Respects \`scripts/infra/docs/versions.json\` for comparison overrides and supersession tracking. --- - **Workflow run:** ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" diff --git a/documentation/dev/writing-docs.md b/documentation/dev/writing-docs.md index 7801d2d9d3c..2362f1a8fa7 100644 --- a/documentation/dev/writing-docs.md +++ b/documentation/dev/writing-docs.md @@ -159,7 +159,7 @@ git diff changelogs/ `docs-api-diff-past` diffs **published** NuGet.org versions: every version is compared against its predecessor, with baselines and superseded-version skips -driven by [`scripts/versions.json`](../../scripts/versions.json) (same config the +driven by [`scripts/infra/docs/versions.json`](../../scripts/infra/docs/versions.json) (same config the release-notes script uses). Superseded versions still get their own changelog; they are only removed from the pool of *baselines*, so e.g. `4.148.0` walks past the abandoned `4.147.*` previews and lands on `3.119.4`. @@ -197,7 +197,7 @@ inspection — it is **not** meant to be committed. The API changelogs (Cake) and the website release notes ([`generate-release-notes.py`](../../.agents/skills/release-notes/scripts/generate-release-notes.py)) are **separate systems** that deliberately share only one thing: -[`scripts/versions.json`](../../scripts/versions.json). That file is the single +[`scripts/infra/docs/versions.json`](../../scripts/infra/docs/versions.json). That file is the single source of truth for two decisions, and both systems honour it identically: - **Supersession** — only a version with an explicit `status: superseded` entry diff --git a/scripts/infra/docs/docs.cake b/scripts/infra/docs/docs.cake index 8298b714a4d..85f494d7608 100644 --- a/scripts/infra/docs/docs.cake +++ b/scripts/infra/docs/docs.cake @@ -862,14 +862,14 @@ void CopyChangelogs (DirectoryPath diffRoot, string id, string version) // targets thin and guarantees they treat supersession the same way. //////////////////////////////////////////////////////////////////////////////////////////////////// -// Load the shared version-comparison config (scripts/versions.json). This is the +// Load the shared version-comparison config (scripts/infra/docs/versions.json). This is the // single source of truth for how versions relate to each other. It is "override // only": versions NOT listed fall back to the default behaviour of diffing // against the immediately-preceding published version. Returns the "versions" // array (empty when the file is absent). See versions.json for the schema. JArray LoadVersionsConfig () { - var path = $"{ROOT_PATH}/scripts/versions.json"; + var path = $"{ROOT_PATH}/scripts/infra/docs/versions.json"; if (!FileExists (path)) return new JArray (); var doc = JObject.Parse (System.IO.File.ReadAllText (path)); diff --git a/scripts/pr-authors.json b/scripts/infra/docs/pr-authors.json similarity index 100% rename from scripts/pr-authors.json rename to scripts/infra/docs/pr-authors.json diff --git a/scripts/versions.json b/scripts/infra/docs/versions.json similarity index 100% rename from scripts/versions.json rename to scripts/infra/docs/versions.json From b7e4de0eb7337417d844d89bfc08536661521821 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 16 Jun 2026 23:34:58 +0200 Subject: [PATCH 5/6] Drop 4.148/4.150 pages + cache entries to test regeneration Deliberately remove the generated 4.148.0 and 4.150.0 release pages, their TOC.yml/index.md navigation entries, and the 134 corresponding author-cache entries (921 -> 787) from scripts/infra/docs/pr-authors.json. This exercises the full create/update path end to end after merge: the update-release-notes workflow's `--all` run should recreate both pages from the release/4.148.0-rc.1 and release/4.150.0-preview.1 branches, re-resolve their PR authors via the GitHub GraphQL API (the cache is now cold for those PRs), repopulate the cache, and re-link both versions in TOC.yml and index.md. The removed PRs are unique to the 4.148/4.150 diff ranges, so no other (skipped) page depends on those cache entries. Co-authored-by: Matthew Leibowitz Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- documentation/docfx/releases/4.148.0.md | 268 ------------------------ documentation/docfx/releases/4.150.0.md | 42 ---- documentation/docfx/releases/TOC.yml | 10 - documentation/docfx/releases/index.md | 4 - scripts/infra/docs/pr-authors.json | 134 ------------ 5 files changed, 458 deletions(-) delete mode 100644 documentation/docfx/releases/4.148.0.md delete mode 100644 documentation/docfx/releases/4.150.0.md diff --git a/documentation/docfx/releases/4.148.0.md b/documentation/docfx/releases/4.148.0.md deleted file mode 100644 index 7c3e0b26781..00000000000 --- a/documentation/docfx/releases/4.148.0.md +++ /dev/null @@ -1,268 +0,0 @@ - - - - -# Version 4.148.0 - -> **Preview release** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/4.148.0-preview) - -> **Supersedes [4.147.0](4.147.0.md)** · Rolls up preview-only work that was never released as stable — those changes are included cumulatively below. - -## Highlights - -This preview brings SkiaSharp up to **Skia milestone m148** and marks the move to the **4.x** major version, with a refreshed native stack (HarfBuzz, FreeType, expat, libpng, zlib, libjpeg-turbo) and broad new font capabilities including variable fonts and color font palettes. It also **rolls up the skipped 4.147 preview cumulatively**, so everything from that abandoned preview line — the m147 bump, animated WebP encoding, zero-copy stream APIs, and the singleton-lifecycle rework — ships here as one combined preview. Huge thanks to the many community contributors, especially [@ramezgerges](https://github.com/ramezgerges), who drove the milestone bumps, variable-font work, and numerous fixes. - -### ⚠️ Breaking Changes - -- **Major version 4.x** — SkiaSharp moves from the 3.x to the 4.x major version. ([#3640](https://github.com/mono/SkiaSharp/pull/3640)) -- **`SKPaint` text/font members now error** — The long-deprecated text and font members on `SKPaint` are promoted from obsolete warnings to compile errors. [@ramezgerges](https://github.com/ramezgerges) ([#4068](https://github.com/mono/SkiaSharp/pull/4068)) -- **Legacy paint state-reading APIs obsoleted** — The remaining legacy paint state-reading APIs are now marked obsolete. ([#4114](https://github.com/mono/SkiaSharp/pull/4114)) - -## New Features - -### Engine - -- **Skia milestone m148** — Updates the native engine to Skia milestone m148. ([#4125](https://github.com/mono/SkiaSharp/pull/4125)) -- **Skia milestone m147 (rolled up)** — Bumps Skia to milestone 147, carried forward from the superseded 4.147 preview. [@ramezgerges](https://github.com/ramezgerges) ([#3702](https://github.com/mono/SkiaSharp/pull/3702)) -- **Skia milestone m133** — Bumps Skia to milestone 133. ([#3660](https://github.com/mono/SkiaSharp/pull/3660)) -- **Skia milestone m132** — Bumps SkiaSharp to Skia milestone 132. [@ramezgerges](https://github.com/ramezgerges) ([#3560](https://github.com/mono/SkiaSharp/pull/3560)) -- **Upstream chrome/m147 bug fixes** — Merges upstream chrome/m147 bug fixes into the Skia fork. ([#4081](https://github.com/mono/SkiaSharp/pull/4081), [#4044](https://github.com/mono/SkiaSharp/pull/4044)) -- **Native dependency refresh** — Updates the bundled native libraries: HarfBuzz 14.2.0 ([#4035](https://github.com/mono/SkiaSharp/pull/4035)), FreeType 2.14.3 ([#3726](https://github.com/mono/SkiaSharp/pull/3726)), expat 2.8.1 ([#4079](https://github.com/mono/SkiaSharp/pull/4079)) / libexpat 2.7.5 ([#3717](https://github.com/mono/SkiaSharp/pull/3717)), libjpeg-turbo 3.1.4.1 ([#4012](https://github.com/mono/SkiaSharp/pull/4012)), libpng 1.6.58 ([#3718](https://github.com/mono/SkiaSharp/pull/3718)), and zlib 1.3.2.1-motley ([#3720](https://github.com/mono/SkiaSharp/pull/3720)). - -### GPU & Rendering - -- **`SKSamplingOptions` on surface draws** — Adds `SKSamplingOptions` support to `SKSurface.Draw` and `SKCanvas.DrawSurface` for control over resampling quality. [@Copilot](https://github.com/Copilot) ([#3491](https://github.com/mono/SkiaSharp/pull/3491)) - -### API Surface - -- **`SKStream.GetData()`** — Adds zero-copy stream-to-`SKData` conversion. ([#3772](https://github.com/mono/SkiaSharp/pull/3772)) -- **Animated WebP encoding** — Adds `SKWebpEncoder` support for encoding animated WebP images. ([#3771](https://github.com/mono/SkiaSharp/pull/3771)) -- **Singleton lifecycle rework** — Reworks the lifecycle of singleton instances for safer teardown. [@ramezgerges](https://github.com/ramezgerges) ([#4080](https://github.com/mono/SkiaSharp/pull/4080)) -- **`HBColor` struct** — Adds an `HBColor` struct for a proper `hb_color_t` representation. ([#4000](https://github.com/mono/SkiaSharp/pull/4000)) -- **Additional API wrappers** — Adds missing API wrappers and fixes naming-convention violations. ([#4001](https://github.com/mono/SkiaSharp/pull/4001)) - -### Text & Fonts - -- **Variable font support** — Adds variable font support to SkiaSharp and HarfBuzzSharp. [@ramezgerges](https://github.com/ramezgerges) ([#3703](https://github.com/mono/SkiaSharp/pull/3703)) -- **Color font palettes** — Adds color font palette support and improves variable-font robustness. ([#3742](https://github.com/mono/SkiaSharp/pull/3742)) -- **Legacy typeface factory** — Bumps the Skia fork to include `sk_fontmgr_legacy_create_typeface`. ([#3744](https://github.com/mono/SkiaSharp/pull/3744)) - -### Platform - -- **Linux Bionic native assets** — Adds Linux Bionic native assets support. [@4Darmygeometry](https://github.com/4Darmygeometry) ([#3217](https://github.com/mono/SkiaSharp/pull/3217)) -- **Tizen x64 and arm64** — Adds x64 and arm64 native build support for Tizen. ([#3620](https://github.com/mono/SkiaSharp/pull/3620)) -- **C# 13 on legacy TFMs** — Uses PolySharp to enable C# 13 support on legacy target frameworks. [@4Darmygeometry](https://github.com/4Darmygeometry) ([#3642](https://github.com/mono/SkiaSharp/pull/3642)) - -## Bug Fixes - -- **`GetPixelSpan` stride** — `SKPixmap`/`SKBitmap` `GetPixelSpan` now uses `RowBytes` for stride instead of computing it incorrectly. ([#4148](https://github.com/mono/SkiaSharp/pull/4148)) -- **`GetPixelSpan` offset** — Fixes `SKPixmap.GetPixelSpan(x, y)` using `Height` instead of `Width` when computing the offset. ([#4128](https://github.com/mono/SkiaSharp/pull/4128)) -- **`SKPath` finalizer crash** — Fixes a finalizer crash in `SKPath` when its `SKPathBuilder` is collected first. [@ramezgerges](https://github.com/ramezgerges) ([#3796](https://github.com/mono/SkiaSharp/pull/3796)) -- **Default-typeface resolution** — Moves default-typeface resolution to the managed layer, fixing #3693. [@ramezgerges](https://github.com/ramezgerges) ([#3730](https://github.com/mono/SkiaSharp/pull/3730)) -- **WinUI Projection DLL** — Fixes the WinUI Projection DLL not being found by .NET 9 consumers. ([#4084](https://github.com/mono/SkiaSharp/pull/4084)) -- **Native-compat gate** — Moves the native-compat gate from `[ModuleInitializer]` to the `SkiaApi` static constructor for more reliable initialization. ([#4133](https://github.com/mono/SkiaSharp/pull/4133)) -- **`SKGLView` after tab switch** — Fixes `SKGLView` not rendering after a tab switch in a MAUI `TabBar` on Android. [@SimonvBez](https://github.com/SimonvBez) ([#3076](https://github.com/mono/SkiaSharp/pull/3076)) - -Plus many CI, build, documentation, and tooling improvements. - -## Platform Support - -| Platform | What's New | -|----------|-----------| -| 🐧 Linux | Bionic native assets support | -| 🤖 Android | `SKGLView` MAUI `TabBar` rendering fix | -| 🪟 Windows | WinUI Projection DLL fix for .NET 9 | -| 📦 Tizen | x64 and arm64 native builds | -| 🎨 Core API | Variable fonts, color palettes, animated WebP, `SKStream.GetData()` | -| 🏗️ Build/CI | Skia m148, 4.x major bump, native dependency refresh, C# 13 on legacy TFMs | - -## Community Contributors ❤️ - -| Contributor | What They Did | -|-------------|--------------| -| [@ramezgerges](https://github.com/ramezgerges) | Variable font support, singleton lifecycle rework, Skia m147/m132 bumps, `SKPath` finalizer fix, default-typeface resolution, obsolete-to-error promotion, and sample/tooling work | -| [@4Darmygeometry](https://github.com/4Darmygeometry) | Linux Bionic native assets and PolySharp-based C# 13 support on legacy TFMs | -| [@Copilot](https://github.com/Copilot) | Added `SKSamplingOptions` support to `SKSurface.Draw` and `SKCanvas.DrawSurface` | -| [@SimonvBez](https://github.com/SimonvBez) | Fixed `SKGLView` not rendering after a MAUI `TabBar` tab switch on Android | -| [@ebariche](https://github.com/ebariche) | Reduced the SkiaFiddle WASM application size by ~60% | -| [@sasakrsmanovic](https://github.com/sasakrsmanovic) | Updated the Uno Platform link and description in the README | - -## Links - -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v3.119.4...v4.148.0-preview) -- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/4.148.0-preview) diff --git a/documentation/docfx/releases/4.150.0.md b/documentation/docfx/releases/4.150.0.md deleted file mode 100644 index 1ff74303bfe..00000000000 --- a/documentation/docfx/releases/4.150.0.md +++ /dev/null @@ -1,42 +0,0 @@ - - - - -# Version 4.150.0 - -> **Preview release** · Preview only · [NuGet](https://www.nuget.org/packages/SkiaSharp/4.150.0-preview) - -## Highlights - -This preview updates the native engine to **Skia milestone m150**, picking up the latest upstream rendering, text, and codec improvements from Google's Skia. - -## New Features - -### Engine - -- **Skia milestone m150** — Updated the native Skia engine to milestone m150, bringing the full set of upstream fixes and improvements ([#4146](https://github.com/mono/SkiaSharp/pull/4146)). - -## Platform Support - -| Platform | What's New | -|----------|-----------| -| 🎨 Core API | Skia engine updated to milestone m150 | - -## Links - -- [Full Changelog](https://github.com/mono/SkiaSharp/compare/v4.148.0...v4.150.0-preview.1) -- [NuGet Package](https://www.nuget.org/packages/SkiaSharp/4.150.0-preview) diff --git a/documentation/docfx/releases/TOC.yml b/documentation/docfx/releases/TOC.yml index 2fb8cb413e8..7fe19abd2f9 100644 --- a/documentation/docfx/releases/TOC.yml +++ b/documentation/docfx/releases/TOC.yml @@ -1,15 +1,5 @@ - name: Overview href: index.md -- name: Version 4.150.x - href: 4.150.0.md - items: - - name: Version 4.150.0 - href: 4.150.0.md -- name: Version 4.148.x - href: 4.148.0.md - items: - - name: Version 4.148.0 - href: 4.148.0.md - name: Version 4.147.x href: 4.147.0.md items: diff --git a/documentation/docfx/releases/index.md b/documentation/docfx/releases/index.md index 3546f3b037e..2a348465069 100644 --- a/documentation/docfx/releases/index.md +++ b/documentation/docfx/releases/index.md @@ -4,10 +4,6 @@ Release notes for all SkiaSharp versions. ### SkiaSharp 4.x -- **Version 4.150.x** - - [Version 4.150.0](4.150.0.md) -- **Version 4.148.x** - - [Version 4.148.0](4.148.0.md) - **Version 4.147.x** - [Version 4.147.0](4.147.0.md) diff --git a/scripts/infra/docs/pr-authors.json b/scripts/infra/docs/pr-authors.json index 2ff50548355..98497134217 100644 --- a/scripts/infra/docs/pr-authors.json +++ b/scripts/infra/docs/pr-authors.json @@ -762,7 +762,6 @@ "3616": "mattleibow", "3618": "mattleibow", "3619": "mattleibow", - "3620": "mattleibow", "3622": "mattleibow", "3623": "mattleibow", "3624": "mattleibow", @@ -774,150 +773,17 @@ "3635": "mattleibow", "3637": "mattleibow", "3639": "mattleibow", - "3640": "mattleibow", "3641": "mattleibow", "3648": "mattleibow", "3650": "mattleibow", "3651": "mattleibow", - "3653": "mattleibow", - "3656": "mattleibow", - "3658": "mattleibow", - "3660": "mattleibow", - "3662": "mattleibow", - "3665": "mattleibow", - "3667": "mattleibow", - "3668": "mattleibow", - "3669": "mattleibow", - "3670": "mattleibow", - "3671": "mattleibow", - "3672": "mattleibow", - "3674": "mattleibow", - "3675": "mattleibow", - "3676": "mattleibow", - "3694": "mattleibow", - "3696": "mattleibow", - "3697": "mattleibow", - "3704": "mattleibow", - "3706": "mattleibow", - "3707": "mattleibow", - "3708": "mattleibow", - "3709": "mattleibow", - "3710": "mattleibow", - "3711": "mattleibow", - "3712": "mattleibow", - "3713": "mattleibow", - "3717": "mattleibow", - "3718": "mattleibow", - "3720": "mattleibow", "3721": "mattleibow", "3723": "mattleibow", - "3726": "mattleibow", - "3727": "mattleibow", - "3729": "mattleibow", - "3731": "mattleibow", - "3742": "mattleibow", - "3743": "mattleibow", - "3744": "mattleibow", - "3745": "mattleibow", - "3746": "mattleibow", - "3747": "mattleibow", - "3748": "mattleibow", - "3749": "mattleibow", - "3750": "mattleibow", - "3752": "mattleibow", - "3753": "mattleibow", - "3755": "mattleibow", - "3756": "mattleibow", - "3757": "mattleibow", - "3760": "mattleibow", - "3761": "mattleibow", - "3763": "mattleibow", - "3764": "mattleibow", - "3765": "mattleibow", - "3771": "mattleibow", - "3772": "mattleibow", - "3774": "mattleibow", - "3780": "mattleibow", - "3782": "mattleibow", - "3787": "mattleibow", - "3792": "mattleibow", - "3794": "mattleibow", - "3798": "mattleibow", - "3802": "mattleibow", - "3805": "mattleibow", - "3808": "mattleibow", - "3811": "mattleibow", - "3812": "mattleibow", - "3813": "mattleibow", - "3815": "mattleibow", - "3822": "mattleibow", - "3824": "mattleibow", - "3825": "mattleibow", - "3826": "mattleibow", - "3827": "mattleibow", - "3830": "mattleibow", - "3835": "mattleibow", - "3836": "mattleibow", - "3839": "mattleibow", - "3877": "mattleibow", - "3907": "mattleibow", - "3911": "mattleibow", - "3918": "mattleibow", - "3970": "mattleibow", - "3971": "mattleibow", - "4000": "mattleibow", - "4001": "mattleibow", - "4004": "mattleibow", - "4006": "mattleibow", - "4012": "mattleibow", - "4013": "mattleibow", - "4014": "mattleibow", - "4019": "mattleibow", - "4020": "mattleibow", - "4022": "mattleibow", - "4023": "mattleibow", - "4024": "mattleibow", - "4025": "mattleibow", - "4030": "mattleibow", - "4035": "mattleibow", - "4036": "mattleibow", - "4038": "mattleibow", "4043": "mattleibow", - "4044": "mattleibow", "4045": "mattleibow", - "4050": "mattleibow", - "4054": "mattleibow", - "4055": "mattleibow", - "4057": "mattleibow", - "4058": "mattleibow", - "4059": "mattleibow", - "4062": "mattleibow", - "4070": "mattleibow", - "4073": "mattleibow", - "4075": "mattleibow", - "4077": "mattleibow", - "4079": "mattleibow", - "4081": "mattleibow", - "4084": "mattleibow", "4086": "mattleibow", - "4087": "mattleibow", - "4089": "mattleibow", - "4091": "mattleibow", - "4094": "mattleibow", - "4097": "mattleibow", - "4099": "mattleibow", "4105": "mattleibow", - "4114": "mattleibow", - "4125": "mattleibow", - "4128": "mattleibow", - "4133": "mattleibow", "4143": "mattleibow", - "4144": "mattleibow", - "4146": "mattleibow", - "4148": "mattleibow", - "4149": "mattleibow", - "4152": "mattleibow", - "4159": "mattleibow", "4167": "mattleibow", "4171": "mattleibow" } From 44babaee0930a76a6c40960c74067d283e4f2802 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 16 Jun 2026 23:43:38 +0200 Subject: [PATCH 6/6] caching: drop stale scripts/versions.json from api_diff deps The api_diff cache job listed scripts/versions.json explicitly, but that file moved to scripts/infra/docs/versions.json in 6b3189c189 and is already covered by the sibling scripts/infra/docs/** glob on the same line. Remove the dead path so the config has no reference to a file that no longer exists. repo-deps.py validate still passes (0 uncovered); versions.json and the relocated pr-authors.json are both hashed via scripts/infra/docs/** into the api_diff cache key. Co-authored-by: Matthew Leibowitz Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- scripts/infra/caching/repo-deps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/infra/caching/repo-deps.json b/scripts/infra/caching/repo-deps.json index a880d72ef04..9da6458c8e6 100644 --- a/scripts/infra/caching/repo-deps.json +++ b/scripts/infra/caching/repo-deps.json @@ -100,7 +100,7 @@ "include": ["scripts/infra/package/**"], "children": { "api_diff": { - "include": ["scripts/infra/docs/**", "changelogs/**", "scripts/versions.json"] + "include": ["scripts/infra/docs/**", "changelogs/**"] }, "samples": { "include": ["samples/**", "scripts/infra/samples/**"]