[skia-sync] Merge upstream chrome/m148 bug fixes#4262
Merged
Conversation
Pulls 2 upstream bug fixes onto release/4.148.x: - 46f2e16555 [m148] Resolved a Data Race on fStream in SkTypeface_Mac - 3a90f6662a [graphite] Use stable collection for static bindings Submodule bump only. No version/milestone changes (release-line sync, current == target == m148), no C API changes, no binding regeneration delta, no behavioural changes for non-macOS/non-Graphite users. cgmanifest.json updated: - mono/skia commitHash: 1a155bae3a -> 6d45d9aed1 - upstream_merge_commit: 54851b68b7 -> 46f2e16555 (chrome/m148 HEAD) - chrome_milestone: 148 (unchanged) Build / test results (Linux x64): - Native build: libSkiaSharp.so.148.0.0 produced successfully - C# build: 0 errors, 0 warnings - Smoke tests: 32/32 passed - Full tests: 5544 passed, 0 failed, 172 skipped (HW-dependent) Companion mono/skia PR on branch skia-sync/release-4.148.x. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
📦 Try the packages from this PRWarning Do not run these scripts without first reviewing the code in this PR. Step 1 — Download the packages bash / macOS / Linux: curl -fsSL https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.sh | bash -s -- 4262PowerShell / Windows: iex "& { $(irm https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.ps1) } 4262"Step 2 — Add the local NuGet source dotnet nuget add source ~/.skiasharp/hives/pr-4262/packages --name skiasharp-pr-4262More options
Or download manually from Azure Pipelines — look for the Remove the source when you're done: dotnet nuget remove source skiasharp-pr-4262 |
Point externals/skia at 9bf10f9f, the merge of the skia-sync/release-4.148.x upstream chrome/m148 bug fixes into the release/4.148.x branch (mono/skia#268), instead of the interim skia-sync branch commit (6d45d9aed). cgmanifest.json is updated to match. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
mattleibow
marked this pull request as ready for review
June 29, 2026 15:05
mattleibow
added a commit
that referenced
this pull request
Jul 12, 2026
#4410) Fix release-notes classifier that mis-tagged skia-sync PRs as internal (#4410) The release-notes generator (scripts/infra/docs/release-notes-data.py) tags every merged PR product / mixed / internal by the files it touched, so the Polish phase can focus on product changes. Automated [skia-sync] submodule bumps — which change the shipped native Skia — kept coming out `internal` and being dropped from the notes (e.g. #4382 in 4.151.0-unreleased and #4262 in 4.148.1-unreleased were tagged internal despite both bumping externals/skia). ~~ Root cause ~~ _files_by_commit() runs `git log --format=%x1e%H --name-only` and parsed each record by matching a leading \x1e per line. But run() returns stdout.strip(), and \x1e (the record separator) is whitespace to Python's str.strip(), so the leading \x1e on the first record was stripped off. git log lists commits newest-first, so that first, separator-less record is the newest commit in the range — very often the latest [skia-sync] bump. The startswith("\x1e") check then missed it, its file list was dropped, and an empty file set falls through to `internal`. Parse by splitting on \x1e instead, which recovers every record regardless of the stripped leading separator. ~~ Sharpen the path tiers ~~ While auditing which paths count as what: * product stays the strong signal — binding/ + source/ (managed API & Views) and externals/skia (the native Skia submodule, with its vendored HarfBuzz). The prefix is exact `externals/skia`, not `externals/`, so it no longer sweeps in the sibling externals/depot_tools build toolchain or externals/.gitignore. * native/ (per-platform build config) shapes the shipped binaries, so it is not internal, but a native/-only PR is usually infra rather than an API/behaviour change — so it is `mixed` (Polish judges from the title). Covers the shipped WinUI native subtree under native/winui/ too. * docs (the mono/SkiaSharp-API-docs submodule, mdoc XML that ships as IntelliSense docs) moves up from internal to `mixed`. A bump appears in the parent as the bare `docs` gitlink, so the prefix is slash-less and does not collide with documentation/ (the docs site, which stays internal). ~~ Make the mapping data-driven ~~ The path→tag mapping is no longer hardcoded in the script. It lives in the committed scripts/infra/docs/release-notes-paths.json — ordered tiers (tag + patterns) plus a default — the single deterministic place to edit it. _pr_category loads the tiers (cached) and returns the first tier with a matching file, else the default. Patterns match by prefix (str.startswith, unchanged behaviour) or, when they contain a glob metacharacter (* ? [), by fnmatch.fnmatchcase — so paths, prefixes, and wildcards are all supported. A missing/malformed config is a hard error, never a silent fallback to a guessed mapping. Behaviour is identical to the previous hardcoded tuples, verified across the prefix cases and the real sync/docs/depot_tools PRs. Committed data.json files self-correct as pages regenerate on the next prepare run; no data.json format bump. The behaviour spec (documentation/dev/release-notes-and-api-diffs.md) and the release-notes SKILL.md are updated to match, including the new config file in the inventory. Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated upstream bug-fix sync for m148. Targeting release branch
release/4.148.x(mono/skiarelease/4.148.x).Companion skia PR: mono/skia#268
Summary
Release-line bug-fix sync onto
release/4.148.x. Bumps theexternals/skiasubmodule pointer to pick up 2 new upstreamchrome/m148bug fixes and updates the matchingcgmanifest.jsonSHAs.This is not a milestone bump —
CURRENT == TARGET == 148. No version files change:scripts/VERSIONS.txt,scripts/azure-templates-variables.yml,SkMilestone.h,SK_C_INCREMENTare all left exactly as they are onrelease/4.148.x. The only file changes in this PR are:externals/skiasubmodule pointer:1a155bae3a→6d45d9aed1cgmanifest.jsonmono/skiacommitHash:1a155bae3ac86db6d3efbd996f00e774b6a7b722→6d45d9aed12bacb599261ccebcf4a9764b0467eacgmanifest.jsonSkia-coreupstream_merge_commit:54851b68b7a1d49bc4b4361f12786a7d7ad91fff→46f2e16555cac1211f4087cf24728fd741ac6495chrome_milestonestays at148.Companion mono/skia PR
mono/skiaPR on branchskia-sync/release-4.148.xtargetingrelease/4.148.x. That PR carries the actual upstream merge commit6d45d9aed1. Per the skill's merge sequence, the mono/skia PR must be merged first; then the parent repo's submodule pointer must be re-pointed at the squashedrelease/4.148.xSHA before merging this PR.Upstream commits pulled in (via submodule bump)
46f2e16555[m148] Resolved a Data Race on fStream in SkTypeface_Macsrc/ports/SkTypeface_mac_ct.{cpp,h}3a90f6662a[graphite] Use stable collection for static bindingssrc/gpu/graphite/dawn/DawnGraphicsPipeline.cppBoth are upstream cherry-picks already on
chrome/m148. The macOS typeface fix is the user-visible one (eliminates agTFCache/fStreamdata race inSkTypeface_Mac); the Graphite change is benign for SkiaSharp because we ship Ganesh, not Graphite/Dawn.Breaking change analysis
None. Because this is a release-line bug-fix sync (
current == target == 148):externals/skia/src/c/**,include/c/**) files changed.No changes to bindings (C API signatures unchanged)andNo new functions found.binding/SkiaSharp/SkiaApi.generated.csand the other*Api.generated.csfiles are byte-identical toorigin/release/4.148.x.[Obsolete]markers to add — no deprecations.libSkiaSharp.so.148.0.0.Version / binding updates
scripts/VERSIONS.txtscripts/azure-templates-variables.ymlexternals/skia/include/core/SkMilestone.hSK_MILESTONE 148)externals/skia/include/c/sk_types.h(SK_C_INCREMENT)0)binding/SkiaSharp/SkiaApi.generated.csbinding/SkiaSharp.Skottie/SkottieApi.generated.csbinding/SkiaSharp.SceneGraph/SceneGraphApi.generated.csbinding/SkiaSharp.Resources/ResourcesApi.generated.csbinding/HarfBuzzSharp/HarfBuzzApi.generated.cscgmanifest.jsoncommitHash+ Skia-coreupstream_merge_commitbumpedexternals/skia(submodule pointer)6d45d9aed1C# changes
None required. No managed code was modified, no test code was modified.
Build / test results (Linux x64)
The agent used
dotnet cake --target=externals-linux --arch=x64(NOTexternals-download, per the skill's hard rule for milestone-touching work). Other platforms (macOS, Windows, iOS, Android, WASM) will rebuild on the release-line CI pipelines once both PRs land.dotnet tool restoregit submodule statusgit diff --checkemptycgmanifest.jsoneditdotnet cake --target=externals-linux --arch=x64output/native/linux/x64/libSkiaSharp.so.148.0.0(11.3 MB) andlibHarfBuzzSharp.so.0.61420.0(3.0 MB) — total native build ≈ 16 minregenerate-bindings.ps1No changes to bindings,No new functions found, HarfBuzz revert applieddotnet build binding/SkiaSharp/SkiaSharp.csprojCategory=Smoke)The full suite was first attempted with xUnit's default parallel test execution and crashed in test discovery with
PAL_SEHException: Out of memoryon the 16 GB CI runner. Re-running withxUnit.MaxParallelThreads=1 xUnit.ParallelizeTestCollections=false(serial execution) completed cleanly with 0 failures. This is an environmental constraint of this CI runner, not a regression introduced by the merge.Items needing human attention
SkTypeface_mac_ct.cppmutex correctly on therelease/4.148.xmacOS / iOS / Mac Catalyst pipelines. The change is upstream-mainline and small (8 line diff), so risk is low, but the agent only built Linux x64 here.skia-sync/release-4.148.x→release/4.148.xPR first (squash).git -C externals/skia fetch origin && git -C externals/skia checkout <new-squashed-sha-on-release/4.148.x>, commit, push to this PR branch.Skipping step 2 would orphan the submodule onto the unsquashed branch commit.
gnarg changes, no compiler/linker flag changes were required for this sync.Created by skia-upstream-sync.