Skip to content

🤖 Merge 'main' => 'xcode27' - #26353

Closed
github-actions[bot] wants to merge 12 commits into
xcode27from
merge/main-to-xcode27-20260729-9a08dcb0ed369064
Closed

🤖 Merge 'main' => 'xcode27'#26353
github-actions[bot] wants to merge 12 commits into
xcode27from
merge/main-to-xcode27-20260729-9a08dcb0ed369064

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Caution

Protected files were modified in this change.
This pull request is in request_review mode and requires explicit human scrutiny before merge.

Protected files: .github/workflows/apply-gist.yml

Automated merge of main into xcode27.

Created by the code-radiator workflow.

Generated by Code Radiator · 107.3 AIC · ⌖ 11 AIC · ⊞ 9.1K ·

dotnet-maestro Bot and others added 12 commits July 29, 2026 12:58
This pull request updates the following dependencies

## From https://github.com/dotnet/dotnet

- **Subscription**: [da09b56a-0fb1-439a-b894-def14d2ec0a4](https://maestro.dot.net/subscriptions?search=da09b56a-0fb1-439a-b894-def14d2ec0a4)
- **Build**: [20260728.15](https://dev.azure.com/dnceng/internal/_build/results?buildId=3033574) ([324787](https://maestro.dot.net/channel/10307/github:dotnet:dotnet/build/324787))
- **Date Produced**: July 28, 2026 9:01:03 PM UTC
- **Commit**: [c9eaf6d2f7b11c935ce6025093278843c89873d9](dotnet/dotnet@c9eaf6d)
- **Branch**: [release/10.0.4xx](https://github.com/dotnet/dotnet/tree/release/10.0.4xx)

- **Dependency Updates**:
  - From [10.0.0-beta.26374.115 to 10.0.0-beta.26378.115][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.Build.Tasks.Feed
     - Microsoft.DotNet.SharedFramework.Sdk
  - From [10.0.400-preview.0.26374.115 to 10.0.400-preview.0.26378.115][1]
     - Microsoft.NET.Sdk
  - From [10.0.400 to 10.0.400][1]
     - Microsoft.TemplateEngine.Authoring.Tasks

[1]: dotnet/dotnet@dfdd32e...c9eaf6d
#26258)

Generate Xamarin.MacDev.Tasks' strongly typed resource source in each target framework's intermediate output directory.

This prevents parallel builds from writing to the same source-tree Errors.designer.cs file and intermittently corrupting it.

Fixes #26246

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…#26244)

Resolve framework identities and source directories during the existing remote FilterStaticFrameworks task execution.

This removes the redundant GetFullPaths remote round trip from _ComputeFrameworkFilesToPublish.

Fixes #19602

🤖 Pull request created by Copilot
Remove Headers, PrivateHeaders, and Modules directories from bundled frameworks before code signing, with `StripFrameworkHeaders=false` as an opt-out.

Invalidate framework copy outputs when the property changes, and preserve Windows remoting long-path coverage by keeping the long fixture in framework resources.

Tests:
- `dotnet test tests/msbuild/Xamarin.MacDev.Tasks.Tests/Xamarin.MacDev.Tasks.Tests.csproj --no-restore --filter FullyQualifiedName~StripFrameworkHeadersTaskTests`
- `dotnet build tests/dotnet/UnitTests/DotNetUnitTests.csproj --no-restore`

Fixes #15724

🤖 Pull request created by Copilot
…iscovery (#26296)

Addresses a code review comment from #26292.

## Problem

The `_ComputeXCFrameworkDSyms` target in `msbuild/Xamarin.Shared/Xamarin.Shared.targets` filtered xcframework dSYM candidates using the MSBuild `Exists(...)` function:

```xml
<_XCFrameworkDSymToCopy
    Include="@(_XCFrameworkDSymCandidate->'%(DSymSourceDir)/%(DSymName)')"
    Condition="Exists('%(DSymSourceDir)/%(DSymName)')">
    <DSymName>%(DSymName)</DSymName>
</_XCFrameworkDSymToCopy>
```

`Exists(...)` evaluates on the MSBuild host using host path semantics. For remote builds (Windows → macOS, e.g. Hot Restart / remote Mac builds) this is wrong: the files live on the Mac, not the Windows host, so the check never finds them and the xcframework dSYMs are not copied into the archive. The old comment even claimed the target "only runs on macOS", which is misleading.

## Fix

Use the existing remote-capable `GetFileSystemEntries` task (already used elsewhere in the same file) to discover which `*.dSYM` directories actually exist under the computed `dSYMs` directory on the build machine (the Mac), and copy only those — instead of relying on the host-side `Exists(...)` function.

- The discovered directory name equals the `DSymName` metadata used for the copy destination, so the `_XCFrameworkDSymToCopy` item shape (Identity = source dSYM path, `DSymName` metadata) is preserved and `_CopyXCFrameworkDSyms` keeps working unchanged.
- `GetFileSystemEntries` now skips non-existent directories, since a framework's `dSYMs` directory may not exist.
- Updated the misleading "only runs on macOS" comment.

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Mirrors `dotnet/android#12255`, adding the upstream `gh-stack` v0.0.8
agent skill to macios.

## Changes

- Added `.github/skills/gh-stack/SKILL.md`.
- Documented stack creation, navigation, synchronization, rebasing, and
recovery.
- Captured non-interactive agent requirements, including explicit branch
arguments, `submit --auto`, and `view --json`.

## Example

```bash
gh stack submit --auto
gh stack view --json
```

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dalexsoto <204671+dalexsoto@users.noreply.github.com>
Move eligible AddressBook, CoreFoundation, and OpenGLES constants from handwritten `Dlfcn.Get*Constant` initialization into bgen `[Field]` definitions.

### What changed

- Generate native constant accessors for AddressBook, CoreFoundation, and OpenGLES bindings.
- Remove the corresponding strict static constructors, AddressBook's shared `InitConstants` coordinator, handwritten loaders, and the now-unused OpenGLES library handle.
- Preserve the existing public properties, readonly fields, platform availability, obsoletion metadata, and nullable signatures.
- Keep the 22 shipped readonly fields and their internal underscored bindings under `!XAMCORE_5_0`, while exposing public generated properties under `XAMCORE_5_0`.
- Teach bgen to honor `[NullAllowed]` on `[Field]` properties, with focused regression coverage.
- Remove resolved CoreFoundation xtro exclusions and update the iOS and Mac Catalyst NativeAOT app-size baselines to reflect the smaller binaries.

This is a focused follow-up for #16672.

🤖 Pull request created by Copilot

---------

Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
Improve XML documentation for the following types:

- **NSLayoutManager** — Fix tag ordering (summary before param), improve method documentation
- **MLMultiArray** — Fix tag ordering, normalize indentation in Strides remarks, remove placeholder docs

Changes include:
- Reorder XML doc tags (summary before param)
- Normalize indentation (single space after `///`)
- Remove empty/placeholder elements

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…26075 (#26081)

## Why

`InlineDlfcnMethodsStep` rewrites `Dlfcn.GetXxx` call sites into generated P/Invokes (and adds helper methods/fields) in **any** assembly that references `ObjCRuntime.Dlfcn`, including copied user/binding assemblies. Unlike the other inline/optimize steps, it had no `AssemblyAction.Link` gate, so it modified user/reloadable assemblies. Modifying a reloadable assembly breaks Hot Reload.

## What

Gate the modification on a new `$(HotReloadCompatibleBuild)` property. When it's enabled, the step skips reloadable assemblies (those not being trimmed, i.e. `AssemblyAction != Link`). The `Dlfcn` calls then remain ordinary calls into the platform assembly - still correct, just not optimized into direct native references. Release builds don't set the property, so they keep inlining everywhere (even non-trimmed assemblies) and preserve today's app size.

This is part of #26069 and depends on #26072 (the `$(HotReloadCompatibleBuild)` property). Since #26072 isn't merged yet, this PR includes the **minimal** plumbing for the property so the change is self-contained:

- `LinkerConfiguration`: new `HotReloadCompatibleBuild` bool with load/save handlers.
- `Xamarin.Shared.Sdk.targets`: default the property to `$(_BundlerDebug)` (true for Debug, false otherwise, since Hot Reload is debug-only) and flow it into `_CustomLinkerOptions` (which reaches both the trimmer and the assembly-preparer).

## Notes on correctness

The concern about native linking is that we collect information so the app native-links correctly. That collection happens post-trim by scanning the generated `xamarin_Dlfcn_*_Native` P/Invokes in the **trimmed** assemblies; reloadable assemblies aren't trimmed, and Hot Reload is debug-only (no native symbol stripping), so skipping them loses nothing that's consumed. The `InlinedDlfcnFields` dictionary is write-only. NativeAOT is not compatible with Hot Reload, so the post-NativeAOT path is not a concern here.

## Testing

Added `HotReloadCompatibleBuildLeavesReloadableAssemblyUnmodified` to the assembly-preparer tests: it prepares a user (`Copy`) assembly that calls `Dlfcn` under a Hot-Reload-compatible build and asserts the assembly is left byte-unmodified (the preparer reports no modification, the original `Dlfcn.GetIntPtr` call is preserved, and no generated `Dlfcn` helper type is added). `BaseClass` gained options to build the test assembly as a reloadable (`Copy`) assembly and to enable `HotReloadCompatibleBuild`.

Fixes #26075

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ings (#26350)

The `/apply-gist <gist-url>` PR command downloads unified `*.txt.diff` files from a gist and applies them to `tests/dotnet/UnitTests/expected/*.txt` with `git apply -p1`.

GitHub can serve gist file content with CRLF line endings. The workflow wrote the downloaded content to disk verbatim, so on the Linux runner the diffs retained embedded `\r` characters. Because the expected files in the repo use LF, `git apply` failed with `patch does not apply` — see [run 30468376709](https://github.com/dotnet/macios/actions/runs/30468376709).

This normalizes the downloaded gist content to LF before writing it, so the diffs apply cleanly regardless of how the gist stored its line endings. Verified manually: stripping `\r` from the same gist's diffs let all of them apply cleanly.

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…deoWorkflow, NEVpnManager, INSetCarLockStatusIntent, CMCustomBlockAllocator (#26342)

Improve XML documentation for 6 types:

| Type | Changes |
|------|---------|
| NSCell | Fix tag ordering, replace placeholder descriptions with meaningful docs |
| CTBaselineClass | Remove empty remarks, add summaries for CTBaselineFont members |
| MTProfessionalVideoWorkflow | Replace placeholder docs with meaningful summaries |
| NEVpnManager | Fix tag ordering, replace placeholders, fix indentation |
| INSetCarLockStatusIntent | Fix tag ordering, replace placeholder param descriptions |
| CMCustomBlockAllocator | Replace placeholders, fix indentation, clean up remarks |

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Protected files were modified in this pull request and require manual scrutiny before merge.

Please verify that each protected-file change is intentional, policy-compliant, and safe:

  • Protected files: .github/workflows/apply-gist.yml

@rolfbjarne
rolfbjarne temporarily deployed to gh-aw-environment July 29, 2026 20:16 — with GitHub Actions Inactive
@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

✅ API diff for current PR / commit

NET (empty diffs)

✅ API diff vs stable

NET (empty diffs)

ℹ️ Generator diff

Generator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes)

Pipeline on Agent
Hash: c44b15e690f573f900aebc33686cd2f3ecf76a8d [PR build]

@vs-mobiletools-engineering-service2

This comment has been minimized.

@rolfbjarne
rolfbjarne temporarily deployed to gh-aw-environment July 30, 2026 03:23 — with GitHub Actions Inactive
@dalexsoto
dalexsoto enabled auto-merge July 30, 2026 04:39
@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

🔥 [CI Build #c44b15e] Test results 🔥

Test results

❌ Tests failed on VSTS: test results

0 tests crashed, 1 tests failed, 202 tests passed.

Failures

❌ monotouch tests (iOS) [attempt 2]

1 tests failed, 18 tests passed.

Failed tests

  • monotouch-test/iOS - simulator/Debug: Failed

Html Report (VSDrops) Download

Successes

✅ assembly-processing: All 1 tests passed. Html Report (VSDrops) Download
✅ cecil: All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (iOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (MacCatalyst): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (macOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (Multiple platforms): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (tvOS): All 1 tests passed. Html Report (VSDrops) Download
✅ framework: All 2 tests passed. Html Report (VSDrops) Download
✅ fsharp: All 4 tests passed. Html Report (VSDrops) Download
✅ generator: All 5 tests passed. Html Report (VSDrops) Download
✅ interdependent-binding-projects: All 4 tests passed. Html Report (VSDrops) Download
✅ introspection: All 4 tests passed. Html Report (VSDrops) Download
✅ linker (iOS): All 15 tests passed. Html Report (VSDrops) Download
✅ linker (MacCatalyst): All 15 tests passed. Html Report (VSDrops) Download
✅ linker (macOS): All 21 tests passed. Html Report (VSDrops) Download
✅ linker (tvOS): All 15 tests passed. Html Report (VSDrops) Download
✅ monotouch (MacCatalyst): All 18 tests passed. Html Report (VSDrops) Download
✅ monotouch (macOS): All 19 tests passed. [attempt 2] Html Report (VSDrops) Download
✅ monotouch (tvOS): All 19 tests passed. [attempt 2] Html Report (VSDrops) Download
✅ msbuild: All 2 tests passed. Html Report (VSDrops) Download
✅ sharpie: All 1 tests passed. Html Report (VSDrops) Download
✅ windows: All 3 tests passed. Html Report (VSDrops) Download
✅ xcframework: All 4 tests passed. Html Report (VSDrops) Download
✅ xtro: All 1 tests passed. Html Report (VSDrops) Download

macOS tests

✅ Tests on macOS Monterey (12): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Ventura (13): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Sonoma (14): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Sequoia (15): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Tahoe (26): All 5 tests passed. Html Report (VSDrops) Download

Linux Build Verification

Linux build succeeded

Pipeline on Agent
Hash: c44b15e690f573f900aebc33686cd2f3ecf76a8d [PR build]

@dalexsoto
dalexsoto deleted the branch xcode27 July 30, 2026 13:48
@dalexsoto dalexsoto closed this Jul 30, 2026
auto-merge was automatically disabled July 30, 2026 13:48

Pull request was closed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants