You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
authored
[release-notes] Align rollup boundaries and prerelease links (#5024)
Make release pages and API diffs use stable shipments as cumulative boundaries
while keeping preview-only lines separate, make prerelease banners resolve to
package versions that were actually published, and keep generated Markdown
canonical. Refresh current release artifacts and navigation from these rules.
~~ Stable-delimited rollups ~~
Release notes previously based every versioned page on the preceding stable,
while API diffs normally used the preceding emitted line. Consecutive
preview-only pages therefore repeated earlier work, and a later stable could
not apply one consistent cumulative boundary across both surfaces.
Make preview-only lines compare with the preceding emitted, non-superseded
line. Make stable lines roll every intervening preview-only line into the range
since the preceding non-superseded stable.
Honor an explicit `versions.json` `compare_to` before either default. Require
an exact stable tag, rather than a stable-looking branch name, to establish a
stable boundary; preserve four-segment cores in both Python and Cake; and use
the highest surviving versioned branch when an exact stable branch is absent.
For the current history this produces `4.151.2..4.152.0`,
`4.152.0..4.153.0-preview.1`, and
`4.153.0-preview.1..4.154.0-preview.1`.
~~ Exact prerelease package links ~~
Preview banners synthesized `X.Y.Z-preview` NuGet URLs even when the published
packages used exact build-qualified versions. The 4.152 page consequently
linked to a package that does not exist instead of
`4.152.0-rc.1.26426.14`.
Use the newest exact preview or RC shipment version. Fall back to the newest
preview tag for legacy data, and omit the link when neither exists. Keep the
derived URL prose-independent so refreshed facts preserve reviewed prose.
~~ Canonical generated Markdown ~~
The newly emitted API-diff files exposed an extra blank line at end of file,
which made the staged patch fail Git's whitespace check. Normalize copied
Mono.ApiTools output and new API-diff indexes to exactly one trailing newline.
Preserve existing index endings so a scoped regeneration does not rewrite
historical folders solely for whitespace.
Regenerate release data, prose, Markdown, API diffs, and aggregate navigation.
The 157-test release-notes suite passes; the renderer rebuilt 80 pages, left
the polish queue empty, and rendered prerelease links have no synthetic
numeric `-preview` target.
Co-authored-by: v <v@v.v>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 35401b0a-2541-4d55-855c-0cf93b59a08a
> **Skia m152 and Graphite** · [NuGet (prerelease)](https://www.nuget.org/packages/SkiaSharp/4.152.0-rc.1.26426.14)
4
4
5
5
> **API changes** · [SkiaSharp API diff](4.152.0/index.md) · [HarfBuzzSharp API diff](harfbuzzsharp/14.2.1.200/index.md)
6
6
7
7
## Highlights
8
8
9
-
SkiaSharp 4.152.0 previews Skia m152 with new Graphite GPU backend bindingsand several native leak fixes. It adds a Vulkan.Silk.NET package, backend-neutral async pixel reads, and fixes several use-after-free and undisposed-resource leaks discovered during a memory audit.
9
+
SkiaSharp 4.152.0 previews Skia m152 with Graphite bindings, Vulkan.Silk.NET, and several native lifetime fixes. This preview line adds backend-neutral async pixel reads, restores Nano Server font support, improves package debugging assets, and trims hot-path allocations.
10
10
11
11
## Breaking Changes
12
12
13
13
*None in this preview line.*
14
14
15
15
## Engine
16
16
17
-
-**Skia updated to milestone m152** — Brings the bundled Skia engine up to the m152 upstream release line, plus ongoing chrome/m151 and m152 servicing bug-fix merges. ([#4651](https://github.com/mono/SkiaSharp/pull/4651), [#4538](https://github.com/mono/SkiaSharp/pull/4538), [#4568](https://github.com/mono/SkiaSharp/pull/4568), [#4808](https://github.com/mono/SkiaSharp/pull/4808), [#4537](https://github.com/mono/SkiaSharp/pull/4537))
17
+
-**Skia updated to milestone m152** — Brings the bundled engine onto the m152 upstream line, carries forward the late chrome/m151 fixes, and picks up the subsequent m152 servicing and use-after-free follow-up syncs. ([#4651](https://github.com/mono/SkiaSharp/pull/4651), [#4538](https://github.com/mono/SkiaSharp/pull/4538), [#4568](https://github.com/mono/SkiaSharp/pull/4568), [#4808](https://github.com/mono/SkiaSharp/pull/4808), [#4925](https://github.com/mono/SkiaSharp/pull/4925), [#4537](https://github.com/mono/SkiaSharp/pull/4537))
18
18
19
19
## API Surface
20
20
21
-
-**Graphite GPU backend bindings added** — Adds bindings for Skia's Graphite GPU backend across Vulkan, Metal, and Dawn. — ❤️ [@ramezgerges](https://github.com/ramezgerges) ([#3968](https://github.com/mono/SkiaSharp/pull/3968))
22
-
-**Backend-neutral async pixel reads** — Adds an async RequestReadPixels API to SKImage and SKSurface that works across GPU backends. ([#4545](https://github.com/mono/SkiaSharp/pull/4545))
23
-
-**Vulkan via Silk.NET** — Ships the SkiaSharp.Vulkan.Silk.NET package for applications using Silk.NET to create Vulkan contexts. ([#4527](https://github.com/mono/SkiaSharp/pull/4527), [#4841](https://github.com/mono/SkiaSharp/pull/4841))
21
+
-**Graphite GPU backend bindings added** — Adds managed bindings for Skia's Graphite GPU stack across Vulkan, Metal, and Dawn so early adopters can start integrating the new renderer. — ❤️ [@ramezgerges](https://github.com/ramezgerges) ([#3968](https://github.com/mono/SkiaSharp/pull/3968))
22
+
-**New GPU interop APIs and packages** — Adds backend-neutral async `RequestReadPixels` APIs on `SKImage` and `SKSurface`, and ships the `SkiaSharp.Vulkan.Silk.NET` package for Silk.NET-based Vulkan hosts. ([#4545](https://github.com/mono/SkiaSharp/pull/4545), [#4527](https://github.com/mono/SkiaSharp/pull/4527), [#4841](https://github.com/mono/SkiaSharp/pull/4841))
24
23
25
24
## Bug Fixes
26
25
27
-
-**Native use-after-free and leaks fixed** — Fixes native use-after-free crashes by keeping an SKRegion alive for its SpanIterator and rooting the pixel source of SKPixmap derived views. It also closes leaks in HarfBuzz blob conversion, failed raster-image creation, and SKRuntimeEffectUniforms.Reset(). ([#4355](https://github.com/mono/SkiaSharp/pull/4355), [#4558](https://github.com/mono/SkiaSharp/pull/4558), [#4710](https://github.com/mono/SkiaSharp/pull/4710), [#4455](https://github.com/mono/SkiaSharp/pull/4455), [#4783](https://github.com/mono/SkiaSharp/pull/4783))
28
-
-**Nano Server font support restored** — Uses FreeType for font support on Nano Server. — ❤️ [@jeffska](https://github.com/jeffska) ([#4280](https://github.com/mono/SkiaSharp/pull/4280))
26
+
-**Native lifetime bugs and leaks fixed** — Fixes rooted-lifetime bugs that could trigger use-after-free crashes in `SKRegion.SpanIterator` and `SKPixmap` derived views, and closes leaks in HarfBuzz blob conversion, raster-image failure paths, and `SKRuntimeEffectUniforms.Reset()`. ([#4355](https://github.com/mono/SkiaSharp/pull/4355), [#4558](https://github.com/mono/SkiaSharp/pull/4558), [#4710](https://github.com/mono/SkiaSharp/pull/4710), [#4455](https://github.com/mono/SkiaSharp/pull/4455), [#4783](https://github.com/mono/SkiaSharp/pull/4783))
27
+
-**Nano Server font support restored** — Windows Nano Server packages switch to FreeType for font discovery again, restoring text rendering in constrained server environments. — ❤️ [@jeffska](https://github.com/jeffska) ([#4280](https://github.com/mono/SkiaSharp/pull/4280))
29
28
30
29
## Lifecycle & Internals
31
30
32
-
-**Managed hot paths optimized** — Removes a defensive Feature[] copy in HarfBuzz Font.Shape, avoids char boxing in SKFourByteTag/Tag.ToString, caches a reflection-based skip-registration check, avoids a double buffer copy in SKData.SaveTo, pre-sizes the SKRuntimeEffectUniforms lookup map, and avoids an intermediate string allocation in GetEncodedText's null-terminated path. ([#4690](https://github.com/mono/SkiaSharp/pull/4690), [#4752](https://github.com/mono/SkiaSharp/pull/4752), [#4630](https://github.com/mono/SkiaSharp/pull/4630), [#4550](https://github.com/mono/SkiaSharp/pull/4550), [#4512](https://github.com/mono/SkiaSharp/pull/4512), [#4498](https://github.com/mono/SkiaSharp/pull/4498))
31
+
-**Managed hot paths trimmed** — Removes repeated allocations and reflection overhead from HarfBuzz shaping, tag formatting, `SKData.SaveTo`, text encoding, and runtime-effect uniform lookups so high-frequency calls do less work. ([#4690](https://github.com/mono/SkiaSharp/pull/4690), [#4752](https://github.com/mono/SkiaSharp/pull/4752), [#4630](https://github.com/mono/SkiaSharp/pull/4630), [#4550](https://github.com/mono/SkiaSharp/pull/4550), [#4512](https://github.com/mono/SkiaSharp/pull/4512), [#4498](https://github.com/mono/SkiaSharp/pull/4498))
33
32
34
33
## Platform
35
34
36
-
-**Apple native symbol packages** — Produces symbol packages with native dSYMs for macOS, iOS, Mac Catalyst, and tvOS, improving native debugging without changing the runtime packages. ([#4846](https://github.com/mono/SkiaSharp/pull/4846))
35
+
-**Package docs and symbols improved** — NuGet package READMEs are refreshed, Apple packages now emit dSYM symbol bundles, and Android symbol packages get deterministic identities for more predictable native debugging. ([#4714](https://github.com/mono/SkiaSharp/pull/4714), [#4846](https://github.com/mono/SkiaSharp/pull/4846), [#4843](https://github.com/mono/SkiaSharp/pull/4843))
37
36
38
37
## HarfBuzzSharp 14.2.1.200
39
38
40
-
Avoids a defensive Feature array copy in Font.Shapefor lower per-call overhead.
39
+
HarfBuzzSharp 14.2.1.200 reduces per-call shaping overhead in `Font.Shape` and ships with refreshed package metadata and symbol artifacts for easier package consumption and debugging.
41
40
42
41
## Community Contributors ❤️
43
42
44
43
Thank you to everyone who contributed to this release!
45
44
46
45
| Contributor | Contributions |
47
46
|-------------|---------------|
48
-
|[@jeffska](https://github.com/jeffska)| Restored Nano Server font support by switching it to FreeType. ([#4280](https://github.com/mono/SkiaSharp/pull/4280)) |
49
-
|[@mmitche](https://github.com/mmitche)|Fixed the Windows native build to initialize the MSVC environment only once per build. ([#4570](https://github.com/mono/SkiaSharp/pull/4570)) |
50
-
|[@ramezgerges](https://github.com/ramezgerges)| Added the Graphite GPU backend bindings for Vulkan, Metal, and Dawn. ([#3968](https://github.com/mono/SkiaSharp/pull/3968)) |
47
+
|[@jeffska](https://github.com/jeffska)| Restored Nano Server font support by switching the package set over to FreeType. ([#4280](https://github.com/mono/SkiaSharp/pull/4280)) |
48
+
|[@mmitche](https://github.com/mmitche)|Simplified Windows native builds by initializing the MSVC environment once per build. ([#4570](https://github.com/mono/SkiaSharp/pull/4570)) |
49
+
|[@ramezgerges](https://github.com/ramezgerges)| Added Graphite GPU backend bindings for Vulkan, Metal, and Dawn. ([#3968](https://github.com/mono/SkiaSharp/pull/3968)) |
51
50
52
51
## Release Candidate 1 (August 26, 2026)
53
52
54
-
Release Candidate 1 bumped to Skia m152, restored Vulkan.Silk.NET package production, added Apple native symbol packages, and fixed additional resource leaks.
53
+
Release Candidate 1 refreshed the bundled m152 engine, restored Vulkan.Silk.NET package production, improved symbol packaging, and fixed more resource leaks ahead of stable release.
Preview 1 added the Graphite GPU backend bindings, the Vulkan.Silk.NET package, backend-neutral async pixel reads, and fixed several native memory leaks found during an audit.
59
+
Preview 1 opened the m152 line with Graphite bindings, the Vulkan.Silk.NET package, backend-neutral async pixel reads, Nano Server font support, and several native lifetime fixes.
0 commit comments