diff --git a/documentation/docfx/releases/4.150.2-unreleased.md b/documentation/docfx/releases/4.150.2-unreleased.md index da0d6104813..dc21ef1b912 100644 --- a/documentation/docfx/releases/4.150.2-unreleased.md +++ b/documentation/docfx/releases/4.150.2-unreleased.md @@ -1,10 +1,10 @@ # Version 4.150.2 (Unreleased) -> **Engine bug fixes** +> **Upstream engine bug fixes** ## Highlights -SkiaSharp 4.150.2 merges upstream Skia m150 bug fixes from Chrome. +SkiaSharp 4.150.2 merges upstream chrome/m150 bug fixes from Skia into the 4.150 servicing line. ## Breaking Changes @@ -12,4 +12,4 @@ SkiaSharp 4.150.2 merges upstream Skia m150 bug fixes from Chrome. ## Engine -- **Upstream Skia m150 bug fixes merged** — Chrome/m150 upstream patches are folded in, bringing engine-level correctness and stability fixes from the Skia project. ([#4517](https://github.com/mono/SkiaSharp/pull/4517)) +- **chrome/m150 upstream bug fixes merged** — Stability and correctness patches from the Skia team's chrome/m150 branch have been backported into the 4.150 servicing release. ([#4517](https://github.com/mono/SkiaSharp/pull/4517)) diff --git a/documentation/docfx/releases/4.151.0-unreleased.md b/documentation/docfx/releases/4.151.0-unreleased.md index 9f6a438ba7d..720fbe39bfa 100644 --- a/documentation/docfx/releases/4.151.0-unreleased.md +++ b/documentation/docfx/releases/4.151.0-unreleased.md @@ -1,23 +1,27 @@ # Version 4.151.0 (Unreleased) -> **Performance and font improvements** +> **Performance fixes and Nano Server fonts** ## Highlights -SkiaSharp 4.151.0 delivers targeted performance fixes and adds FreeType-based font support for Windows Nano Server. String allocation in the text encoding hot path is eliminated, the SKRuntimeEffect uniform map is pre-sized to avoid rehashing, and a community contribution brings FreeType font rendering to environments like Windows Nano Server where the system font stack is unavailable. +SkiaSharp 4.151.0 fixes a memory leak, improves managed-code performance, and adds FreeType-backed font support for Nano Server. A CoTaskMem pixel-buffer leak in the SKImage raster failure path is resolved. GetEncodedText and SKRuntimeEffectUniforms see allocation and lookup optimisations. FreeType font support on Windows Nano Server containers closes a long-standing gap for that platform. ## Breaking Changes *None in this preview line.* -## API Surface +## Bug Fixes -- **FreeType font support on Windows Nano Server** — SKFontManager can now use FreeType as the font backend on Windows environments that lack the GDI font stack, such as Windows Nano Server containers, fixing font loading failures on those targets. — ❤️ [@jeffska](https://github.com/jeffska) ([#4280](https://github.com/mono/SkiaSharp/pull/4280)) +- **Memory leak fixed in SKImage raster failure path** — When SKImage.Create failed to create a raster image, a CoTaskMem pixel buffer was not freed. The allocation is now correctly released on all failure paths. ([#4455](https://github.com/mono/SkiaSharp/pull/4455)) -## Bug Fixes +## Lifecycle & Internals + +- **GetEncodedText avoids an intermediate string allocation** — The null-terminated fast path in GetEncodedText no longer allocates a temporary string, reducing per-call overhead on hot text rendering paths. ([#4498](https://github.com/mono/SkiaSharp/pull/4498)) +- **SKRuntimeEffectUniforms lookup map pre-sized at construction** — The uniform name-to-index dictionary is now initialised with the known count, eliminating rehash allocations when effects define many uniforms. ([#4512](https://github.com/mono/SkiaSharp/pull/4512)) + +## Platform -- **Eliminated intermediate string allocation in GetEncodedText** — The null-terminated code path in `GetEncodedText` no longer creates an intermediate string; the encoded bytes are written directly, reducing GC pressure in text-heavy workloads. ([#4498](https://github.com/mono/SkiaSharp/pull/4498)) -- **SKRuntimeEffectUniforms lookup map pre-sized** — The internal uniform-name lookup dictionary is now initialised with the known uniform count, avoiding repeated resize allocations when populating effect uniforms. ([#4512](https://github.com/mono/SkiaSharp/pull/4512)) +- **FreeType-backed font support for Windows Nano Server** — SkiaSharp now uses FreeType for font rendering on Windows Nano Server containers, where GDI is unavailable, resolving text rendering failures in that environment. — ❤️ [@jeffska](https://github.com/jeffska) ([#4280](https://github.com/mono/SkiaSharp/pull/4280)) ## Community Contributors ❤️ @@ -25,4 +29,4 @@ Thank you to everyone who contributed to this release! | Contributor | Contributions | |-------------|---------------| -| [@jeffska](https://github.com/jeffska) | Added FreeType-based font support for Windows Nano Server, enabling font loading in container environments where the system font stack is absent ([#4280](https://github.com/mono/SkiaSharp/pull/4280)) | +| [@jeffska](https://github.com/jeffska) | Added FreeType font support for Windows Nano Server containers, fixing text rendering for GDI-less environments ([#4280](https://github.com/mono/SkiaSharp/pull/4280)) | diff --git a/documentation/docfx/releases/_sources/4.150.2-unreleased.data.json b/documentation/docfx/releases/_sources/4.150.2-unreleased.data.json index 26e8d81ebb8..7f5f887e35e 100644 --- a/documentation/docfx/releases/_sources/4.150.2-unreleased.data.json +++ b/documentation/docfx/releases/_sources/4.150.2-unreleased.data.json @@ -17,12 +17,19 @@ "tallies": { "product": 1, "mixed": 0, - "internal": 1 + "internal": 2 }, "breaking_candidates": [], "contributors": [], "previews": [], "prs": { + "4522": { + "url": "https://github.com/mono/SkiaSharp/pull/4522", + "title": "[infra] Backport CI fixes to release/4.150.x (skiasharp-docker + Apple provisioning)", + "author": "mattleibow", + "community": false, + "tag": "internal" + }, "4517": { "url": "https://github.com/mono/SkiaSharp/pull/4517", "title": "[skia-sync] Merge upstream chrome/m150 bug fixes", diff --git a/documentation/docfx/releases/_sources/4.150.2-unreleased.prose.json b/documentation/docfx/releases/_sources/4.150.2-unreleased.prose.json index 43ff89900f6..e88d6ecced6 100644 --- a/documentation/docfx/releases/_sources/4.150.2-unreleased.prose.json +++ b/documentation/docfx/releases/_sources/4.150.2-unreleased.prose.json @@ -1,6 +1,6 @@ { - "theme": "Engine bug fixes", - "highlights_headline": "SkiaSharp 4.150.2 merges upstream Skia m150 bug fixes from Chrome.", + "theme": "Upstream engine bug fixes", + "highlights_headline": "SkiaSharp 4.150.2 merges upstream chrome/m150 bug fixes from Skia into the 4.150 servicing line.", "highlights_body": null, "breaking": [], "categories": [ @@ -8,8 +8,8 @@ "heading": "Engine", "bullets": [ { - "lead": "Upstream Skia m150 bug fixes merged", - "detail": "Chrome/m150 upstream patches are folded in, bringing engine-level correctness and stability fixes from the Skia project.", + "lead": "chrome/m150 upstream bug fixes merged", + "detail": "Stability and correctness patches from the Skia team's chrome/m150 branch have been backported into the 4.150 servicing release.", "prs": [4517] } ] diff --git a/documentation/docfx/releases/_sources/4.151.0-unreleased.data.json b/documentation/docfx/releases/_sources/4.151.0-unreleased.data.json index 49875fb1ed4..3562f5565af 100644 --- a/documentation/docfx/releases/_sources/4.151.0-unreleased.data.json +++ b/documentation/docfx/releases/_sources/4.151.0-unreleased.data.json @@ -15,9 +15,9 @@ "superseded_by": null, "api_links": [], "tallies": { - "product": 3, + "product": 6, "mixed": 1, - "internal": 8 + "internal": 9 }, "breaking_candidates": [], "contributors": [ @@ -31,6 +31,37 @@ ], "previews": [], "prs": { + "4528": { + "url": "https://github.com/mono/SkiaSharp/pull/4528", + "title": "Convert all .sln solutions to .slnx format", + "author": "mattleibow", + "community": false, + "tag": "product" + }, + "4515": { + "url": "https://github.com/mono/SkiaSharp/pull/4515", + "title": "[infra] Add containerized test legs: Azure Linux, Alpine/musl, Nano Server", + "author": "mattleibow", + "community": false, + "tag": "product" + }, + "4455": { + "url": "https://github.com/mono/SkiaSharp/pull/4455", + "title": "[memory-leak] Fix CoTaskMem pixel-buffer leak in SKImage.Create raster failure path", + "author": "github-actions[bot]", + "community": false, + "tag": "product", + "fixes": [ + 4454 + ] + }, + "4523": { + "url": "https://github.com/mono/SkiaSharp/pull/4523", + "title": "docs: regenerate API diffs and release notes", + "author": "github-actions[bot]", + "community": false, + "tag": "internal" + }, "4498": { "url": "https://github.com/mono/SkiaSharp/pull/4498", "title": "Avoid intermediate string allocation in GetEncodedText null-terminated path", diff --git a/documentation/docfx/releases/_sources/4.151.0-unreleased.prose.json b/documentation/docfx/releases/_sources/4.151.0-unreleased.prose.json index 525171a19c6..e05705fd285 100644 --- a/documentation/docfx/releases/_sources/4.151.0-unreleased.prose.json +++ b/documentation/docfx/releases/_sources/4.151.0-unreleased.prose.json @@ -1,37 +1,47 @@ { - "theme": "Performance and font improvements", - "highlights_headline": "SkiaSharp 4.151.0 delivers targeted performance fixes and adds FreeType-based font support for Windows Nano Server.", - "highlights_body": "String allocation in the text encoding hot path is eliminated, the SKRuntimeEffect uniform map is pre-sized to avoid rehashing, and a community contribution brings FreeType font rendering to environments like Windows Nano Server where the system font stack is unavailable.", + "theme": "Performance fixes and Nano Server fonts", + "highlights_headline": "SkiaSharp 4.151.0 fixes a memory leak, improves managed-code performance, and adds FreeType-backed font support for Nano Server.", + "highlights_body": "A CoTaskMem pixel-buffer leak in the SKImage raster failure path is resolved. GetEncodedText and SKRuntimeEffectUniforms see allocation and lookup optimisations. FreeType font support on Windows Nano Server containers closes a long-standing gap for that platform.", "breaking": [], "categories": [ { - "heading": "API Surface", + "heading": "Bug Fixes", "bullets": [ { - "lead": "FreeType font support on Windows Nano Server", - "detail": "SKFontManager can now use FreeType as the font backend on Windows environments that lack the GDI font stack, such as Windows Nano Server containers, fixing font loading failures on those targets.", - "prs": [4280] + "lead": "Memory leak fixed in SKImage raster failure path", + "detail": "When SKImage.Create failed to create a raster image, a CoTaskMem pixel buffer was not freed. The allocation is now correctly released on all failure paths.", + "prs": [4455] } ] }, { - "heading": "Bug Fixes", + "heading": "Lifecycle & Internals", "bullets": [ { - "lead": "Eliminated intermediate string allocation in GetEncodedText", - "detail": "The null-terminated code path in `GetEncodedText` no longer creates an intermediate string; the encoded bytes are written directly, reducing GC pressure in text-heavy workloads.", + "lead": "GetEncodedText avoids an intermediate string allocation", + "detail": "The null-terminated fast path in GetEncodedText no longer allocates a temporary string, reducing per-call overhead on hot text rendering paths.", "prs": [4498] }, { - "lead": "SKRuntimeEffectUniforms lookup map pre-sized", - "detail": "The internal uniform-name lookup dictionary is now initialised with the known uniform count, avoiding repeated resize allocations when populating effect uniforms.", + "lead": "SKRuntimeEffectUniforms lookup map pre-sized at construction", + "detail": "The uniform name-to-index dictionary is now initialised with the known count, eliminating rehash allocations when effects define many uniforms.", "prs": [4512] } ] + }, + { + "heading": "Platform", + "bullets": [ + { + "lead": "FreeType-backed font support for Windows Nano Server", + "detail": "SkiaSharp now uses FreeType for font rendering on Windows Nano Server containers, where GDI is unavailable, resolving text rendering failures in that environment.", + "prs": [4280] + } + ] } ], "contributor_summaries": { - "jeffska": "Added FreeType-based font support for Windows Nano Server, enabling font loading in container environments where the system font stack is absent" + "jeffska": "Added FreeType font support for Windows Nano Server containers, fixing text rendering for GDI-less environments" }, "preview_summaries": {}, "harfbuzz_summary": null diff --git a/documentation/docfx/releases/_sources/pr-authors.json b/documentation/docfx/releases/_sources/pr-authors.json index 4b450074583..0293eb3144e 100644 --- a/documentation/docfx/releases/_sources/pr-authors.json +++ b/documentation/docfx/releases/_sources/pr-authors.json @@ -1027,6 +1027,9 @@ "4505": "mattleibow", "4507": "mattleibow", "4510": "mattleibow", + "4515": "mattleibow", "4517": "mattleibow", - "4519": "mattleibow" + "4519": "mattleibow", + "4522": "mattleibow", + "4528": "mattleibow" } diff --git a/documentation/docfx/releases/_sources/pr-fixed-issues.json b/documentation/docfx/releases/_sources/pr-fixed-issues.json index be42e6d03e9..b06d24913b4 100644 --- a/documentation/docfx/releases/_sources/pr-fixed-issues.json +++ b/documentation/docfx/releases/_sources/pr-fixed-issues.json @@ -842,6 +842,9 @@ "4445": [], "4448": [], "4449": [], + "4455": [ + 4454 + ], "4457": [], "4458": [], "4459": [], @@ -874,6 +877,10 @@ 4511 ], "4514": [], + "4515": [], "4517": [], - "4519": [] + "4519": [], + "4522": [], + "4523": [], + "4528": [] }