Skip to content

Commit b13e577

Browse files
committed
Merge branch 'main' into zbs (resolve conflicts)
2 parents a7b88bf + 3871ff9 commit b13e577

File tree

421 files changed

+9165
-8279
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

421 files changed

+9165
-8279
lines changed

.config/CredScanSuppressions.json

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,12 @@
77
"src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/DSA/DSAKeyPemTests.cs",
88
"src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/EC/ECKeyPemTests.cs",
99
"src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/RSAKeyPemTests.cs",
10-
"src/libraries/Common/tests/System/Security/Cryptography/X509Certificates/TestData.cs",
11-
"src/tests/FunctionalTests/Android/Device_Emulator/gRPC/grpc-dotnet/testassets/Certs/InteropTests/server1.key"
10+
"src/libraries/Common/tests/System/Security/Cryptography/X509Certificates/TestData.cs"
1211
],
1312
"placeholder": [
1413
"-----BEGIN PRIVATE KEY-----",
1514
"-----BEGIN * PRIVATE KEY-----"
1615
]
17-
},
18-
{
19-
"_justification": "Suppression approved. Private key for testing purpose.",
20-
"file": [
21-
"src/tests/FunctionalTests/Android/Device_Emulator/gRPC/grpc-dotnet/testassets/Certs/InteropTests/server1.pfx"
22-
]
2316
}
2417
]
2518
}

.config/dotnet-tools.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
]
1616
},
1717
"microsoft.dotnet.xharness.cli": {
18-
"version": "10.0.0-prerelease.25506.2",
18+
"version": "11.0.0-prerelease.25578.2",
1919
"commands": [
2020
"xharness"
2121
]
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# This workflow generates breaking change documentation for merged pull requests.
2+
# It runs automatically when a PR with the 'needs-breaking-change-doc-created' label is merged,
3+
# or when that label is added to an already merged PR.
4+
# It can be manually triggered to generate documentation for any specific PR.
5+
#
6+
# The workflow uses GitHub Models AI to analyze the PR changes and create appropriate
7+
# breaking change documentation that gets posted as a PR comment as a clickable link
8+
# to open an issue in the dotnet/docs repository.
9+
name: Breaking Change Documentation
10+
11+
on:
12+
pull_request_target:
13+
types: [closed, labeled]
14+
workflow_dispatch:
15+
inputs:
16+
pr_number:
17+
description: "Pull Request Number"
18+
required: true
19+
type: number
20+
21+
permissions:
22+
contents: read
23+
pull-requests: write
24+
models: read
25+
26+
jobs:
27+
generate-breaking-change-doc:
28+
if: |
29+
github.repository_owner == 'dotnet' && (
30+
(github.event_name == 'pull_request_target' && github.event.action == 'closed' && github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'needs-breaking-change-doc-created')) ||
31+
(github.event_name == 'pull_request_target' && github.event.action == 'labeled' && github.event.pull_request.merged == true && github.event.label.name == 'needs-breaking-change-doc-created') ||
32+
github.event_name == 'workflow_dispatch'
33+
)
34+
runs-on: ubuntu-latest
35+
36+
steps:
37+
- name: Checkout repository
38+
uses: actions/checkout@v4
39+
with:
40+
fetch-depth: 0 # Need full history for version detection
41+
42+
- name: Verify PowerShell
43+
run: |
44+
pwsh --version
45+
46+
- name: Verify GitHub CLI
47+
run: |
48+
gh --version
49+
50+
- name: Install GitHub Models extension
51+
run: |
52+
gh extension install github/gh-models --force
53+
env:
54+
GH_TOKEN: ${{ github.token }}
55+
56+
- name: Fetch latest tags
57+
run: |
58+
git fetch --tags --force
59+
60+
- name: Run breaking change documentation script
61+
shell: pwsh
62+
working-directory: eng/breakingChanges
63+
run: ./breaking-change-doc.ps1 -PrNumber ${{ inputs.pr_number || github.event.pull_request.number }} -Comment
64+
env:
65+
GH_TOKEN: ${{ github.token }}
66+
GITHUB_MODELS_API_KEY: ${{ secrets.MODELS_TOKEN }}
67+
68+
- name: Upload artifacts
69+
uses: actions/upload-artifact@v4
70+
with:
71+
name: breaking-change-doc-artifacts-${{ inputs.pr_number || github.event.pull_request.number }}
72+
path: artifacts/docs/breakingChanges/
73+
retention-days: 7

SECURITY.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
## Supported Versions
44

5-
The .NET Core and ASP.NET Core support policy, including supported versions can be found at the [.NET Core Support Policy Page](https://dotnet.microsoft.com/platform/support/policy/dotnet-core).
5+
The .NET, .NET Core and ASP.NET Core support policy, including supported versions can be found at the [.NET and .NET Core Support Policy Page](https://dotnet.microsoft.com/platform/support/policy/dotnet-core).
66

77
## Reporting a Vulnerability
88

9+
**Please do not open issues on GitHub for anything you think might have a security implication.**
10+
911
Security issues and bugs should be reported privately to the Microsoft Security Response Center (MSRC), via the [MSRC Researcher Portal](https://msrc.microsoft.com/report/vulnerability/new).
10-
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your
11-
original message. Further information can be found in the [MSRC Report an Issue FAQ](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue).
1212

13-
Reports via MSRC may qualify for the .NET Core Bug Bounty. Details of the .NET Core Bug Bounty including terms and conditions are at [https://aka.ms/corebounty](https://aka.ms/corebounty).
13+
You should receive a response within 24 hours. If for some reason you do not, please follow up via the [MSRC Researcher Portal](https://msrc.microsoft.com/report/vulnerability/), using the Message functionality found at the bottom of the Activity tab on your vulnerability report.
14+
15+
Further information can be found in the MSRC [Report an issue and submission guidelines](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue).
16+
17+
Reports via MSRC may qualify for the Microsoft .NET Bug Bounty. Details of the Microsoft .NET Bounty Program including terms and conditions are at [https://aka.ms/corebounty](https://aka.ms/corebounty).
1418

15-
Please do not open issues for anything you think might have a security implication.

docs/design/datacontracts/DebugInfo.md

Lines changed: 82 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ This contract is for fetching information related to DebugInfo associated with n
88
[Flags]
99
public enum SourceTypes : uint
1010
{
11-
SourceTypeInvalid = 0x00, // To indicate that nothing else applies
11+
Default = 0x00, // To indicate that nothing else applies
1212
StackEmpty = 0x01, // The stack is empty here
13-
CallInstruction = 0x02 // The actual instruction of a call.
13+
CallInstruction = 0x02 // The actual instruction of a call
14+
Async = 0x04 // (Version 2+) Indicates suspension/resumption for an async call
1415
}
1516
```
1617

@@ -40,7 +41,6 @@ Data descriptors used:
4041
Contracts used:
4142
| Contract Name |
4243
| --- |
43-
| `CodeVersions` |
4444
| `ExecutionManager` |
4545

4646
Constants:
@@ -50,6 +50,7 @@ Constants:
5050
| DEBUG_INFO_BOUNDS_HAS_INSTRUMENTED_BOUNDS | Indicates bounds data contains instrumented bounds | `0xFFFFFFFF` |
5151
| EXTRA_DEBUG_INFO_PATCHPOINT | Indicates debug info contains patchpoint information | 0x1 |
5252
| EXTRA_DEBUG_INFO_RICH | Indicates debug info contains rich information | 0x2 |
53+
| SOURCE_TYPE_BITS | Number of bits per bounds entry used to encode source type flags | 2 |
5354

5455
### DebugInfo Stream Encoding
5556

@@ -169,7 +170,7 @@ private static IEnumerable<OffsetMapping> DoBounds(NativeReader nativeReader)
169170
uint bitsForNativeDelta = reader.ReadUInt() + 1; // Number of bits needed for native deltas
170171
uint bitsForILOffsets = reader.ReadUInt() + 1; // Number of bits needed for IL offsets
171172
172-
uint bitsPerEntry = bitsForNativeDelta + bitsForILOffsets + 2; // 2 bits for source type
173+
uint bitsPerEntry = bitsForNativeDelta + bitsForILOffsets + SOURCE_TYPE_BITS; // 2 bits for source type
173174
ulong bitsMeaningfulMask = (1UL << ((int)bitsPerEntry)) - 1;
174175
int offsetOfActualBoundsData = reader.GetNextByteOffset();
175176

@@ -198,7 +199,7 @@ private static IEnumerable<OffsetMapping> DoBounds(NativeReader nativeReader)
198199
_ => throw new InvalidOperationException($"Unknown source type encoding: {mappingDataEncoded & 0x3}")
199200
};
200201

201-
mappingDataEncoded >>= 2;
202+
mappingDataEncoded >>= (int)SOURCE_TYPE_BITS;
202203
uint nativeOffsetDelta = (uint)(mappingDataEncoded & ((1UL << (int)bitsForNativeDelta) - 1));
203204
previousNativeOffset += nativeOffsetDelta;
204205
uint nativeOffset = previousNativeOffset;
@@ -217,3 +218,79 @@ private static IEnumerable<OffsetMapping> DoBounds(NativeReader nativeReader)
217218
}
218219
}
219220
```
221+
222+
## Version 2
223+
224+
Version 2 introduces two distinct changes:
225+
226+
1. A unified header format ("fat" vs "slim") replacing the Version 1 flag byte and implicit layout.
227+
2. An additional `SourceTypes.Async` flag, expanding the per-entry source type encoding from 2 bits to a 3-bit bitfield.
228+
229+
The nibble-encoded variable-length integer mechanism is unchanged; only the header and bounds entry source-type packing differ.
230+
231+
Data descriptors used:
232+
| Data Descriptor Name | Field | Meaning |
233+
| --- | --- | --- |
234+
| _(none)_ | | |
235+
236+
Contracts used:
237+
| Contract Name |
238+
| --- |
239+
| `ExecutionManager` |
240+
241+
Constants:
242+
| Constant Name | Meaning | Value |
243+
| --- | --- | --- |
244+
| IL_OFFSET_BIAS | IL offsets bias (unchanged from Version 1) | `0xfffffffd` (-3) |
245+
| DEBUG_INFO_FAT | Marker value in first nibble-coded integer indicating a fat header follows | `0x0` |
246+
| SOURCE_TYPE_BITS | Number of bits per bounds entry used for source type flags | 3 |
247+
248+
### Header Encoding
249+
250+
The first nibble-decoded unsigned integer (`countBoundsOrFatMarker`):
251+
252+
* If `countBoundsOrFatMarker == DEBUG_INFO_FAT` (0), the header is FAT and the next 6 nibble-decoded unsigned integers are, in order:
253+
1. `BoundsSize`
254+
2. `VarsSize`
255+
3. `UninstrumentedBoundsSize`
256+
4. `PatchpointInfoSize`
257+
5. `RichDebugInfoSize`
258+
6. `AsyncInfoSize`
259+
* Otherwise (SLIM header), the value is `BoundsSize` and the next nibble-decoded unsigned integer is `VarsSize`; all other sizes are implicitly 0.
260+
261+
After decoding sizes, chunk start addresses are computed by linear accumulation beginning at the first byte after the header stream:
262+
263+
```
264+
BoundsStart = debugInfo + headerBytesConsumed
265+
VarsStart = BoundsStart + BoundsSize
266+
UninstrumentedBoundsStart = VarsStart + VarsSize
267+
PatchpointInfoStart = UninstrumentedBoundsStart + UninstrumentedBoundsSize
268+
RichDebugInfoStart = PatchpointInfoStart + PatchpointInfoSize
269+
AsyncInfoStart = RichDebugInfoStart + RichDebugInfoSize
270+
DebugInfoEnd = AsyncInfoStart + AsyncInfoSize
271+
```
272+
273+
### Bounds Entry Encoding Differences from Version 1
274+
275+
Version 1 packs each bounds entry using: `[2 bits sourceType][nativeDeltaBits][ilOffsetBits]`.
276+
277+
Version 2 extends this to three independent flag bits for source type and so uses: `[3 bits sourceFlags][nativeDeltaBits][ilOffsetBits]`.
278+
279+
Source type bits (low → high):
280+
| Bit | Mask | Meaning |
281+
| --- | --- | --- |
282+
| 0 | 0x1 | `CallInstruction` |
283+
| 1 | 0x2 | `StackEmpty` |
284+
| 2 | 0x4 | `Async` (new in Version 2) |
285+
286+
`SourceTypeInvalid` is represented by all three bits clear (0). Combinations are produced by OR-ing masks (e.g., `StackEmpty | CallInstruction`).
287+
288+
Pseudo-code for Version 2 source type extraction:
289+
```csharp
290+
SourceTypes sourceType = 0;
291+
if ((encoded & 0x1) != 0) sourceType |= SourceTypes.CallInstruction;
292+
if ((encoded & 0x2) != 0) sourceType |= SourceTypes.StackEmpty;
293+
if ((encoded & 0x4) != 0) sourceType |= SourceTypes.Async; // New bit
294+
```
295+
296+
After masking the 3 bits, shift them out before reading native delta and IL offset fields as before.

dotnet.cmd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ set Platform=
1616
:: Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism
1717
set DOTNET_MULTILEVEL_LOOKUP=0
1818

19-
:: Disable first run since we want to control all package sources
20-
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
19+
:: Suppress the .NET startup banner
20+
set DOTNET_NOLOGO=1
2121

2222
call "%dotnetPath%\dotnet.exe" %*

dotnet.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
1515
# Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism
1616
export DOTNET_MULTILEVEL_LOOKUP=0
1717

18-
# Disable first run since we want to control all package sources
19-
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
18+
# Suppress the .NET startup banner
19+
export DOTNET_NOLOGO=1
2020

2121
source $scriptroot/eng/common/tools.sh
2222

eng/Version.Details.props

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ This file should be imported by eng/Versions.props
8181
<SystemTextJsonPackageVersion>10.0.0-rc.1.25528.108</SystemTextJsonPackageVersion>
8282
<!-- dotnet/runtime-assets dependencies -->
8383
<MicrosoftDotNetCilStripSourcesPackageVersion>11.0.0-beta.25553.1</MicrosoftDotNetCilStripSourcesPackageVersion>
84+
<MicrosoftDotnetFuzzingTestDataPackageVersion>11.0.0-beta.25574.4</MicrosoftDotnetFuzzingTestDataPackageVersion>
8485
<MicrosoftNETHostModelTestDataPackageVersion>11.0.0-beta.25553.1</MicrosoftNETHostModelTestDataPackageVersion>
8586
<SystemComponentModelTypeConverterTestDataPackageVersion>11.0.0-beta.25553.1</SystemComponentModelTypeConverterTestDataPackageVersion>
8687
<SystemDataCommonTestDataPackageVersion>11.0.0-beta.25553.1</SystemDataCommonTestDataPackageVersion>
@@ -96,9 +97,9 @@ This file should be imported by eng/Versions.props
9697
<SystemTextRegularExpressionsTestDataPackageVersion>11.0.0-beta.25553.1</SystemTextRegularExpressionsTestDataPackageVersion>
9798
<SystemWindowsExtensionsTestDataPackageVersion>11.0.0-beta.25553.1</SystemWindowsExtensionsTestDataPackageVersion>
9899
<!-- dotnet/xharness dependencies -->
99-
<MicrosoftDotNetXHarnessCLIPackageVersion>10.0.0-prerelease.25506.2</MicrosoftDotNetXHarnessCLIPackageVersion>
100-
<MicrosoftDotNetXHarnessTestRunnersCommonPackageVersion>10.0.0-prerelease.25506.2</MicrosoftDotNetXHarnessTestRunnersCommonPackageVersion>
101-
<MicrosoftDotNetXHarnessTestRunnersXunitPackageVersion>10.0.0-prerelease.25506.2</MicrosoftDotNetXHarnessTestRunnersXunitPackageVersion>
100+
<MicrosoftDotNetXHarnessCLIPackageVersion>11.0.0-prerelease.25578.2</MicrosoftDotNetXHarnessCLIPackageVersion>
101+
<MicrosoftDotNetXHarnessTestRunnersCommonPackageVersion>11.0.0-prerelease.25578.2</MicrosoftDotNetXHarnessTestRunnersCommonPackageVersion>
102+
<MicrosoftDotNetXHarnessTestRunnersXunitPackageVersion>11.0.0-prerelease.25578.2</MicrosoftDotNetXHarnessTestRunnersXunitPackageVersion>
102103
<!-- _git/dotnet-optimization dependencies -->
103104
<optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25502.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
104105
<optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25502.1</optimizationlinuxx64MIBCRuntimePackageVersion>
@@ -196,6 +197,7 @@ This file should be imported by eng/Versions.props
196197
<SystemTextJsonVersion>$(SystemTextJsonPackageVersion)</SystemTextJsonVersion>
197198
<!-- dotnet/runtime-assets dependencies -->
198199
<MicrosoftDotNetCilStripSourcesVersion>$(MicrosoftDotNetCilStripSourcesPackageVersion)</MicrosoftDotNetCilStripSourcesVersion>
200+
<MicrosoftDotnetFuzzingTestDataVersion>$(MicrosoftDotnetFuzzingTestDataPackageVersion)</MicrosoftDotnetFuzzingTestDataVersion>
199201
<MicrosoftNETHostModelTestDataVersion>$(MicrosoftNETHostModelTestDataPackageVersion)</MicrosoftNETHostModelTestDataVersion>
200202
<SystemComponentModelTypeConverterTestDataVersion>$(SystemComponentModelTypeConverterTestDataPackageVersion)</SystemComponentModelTypeConverterTestDataVersion>
201203
<SystemDataCommonTestDataVersion>$(SystemDataCommonTestDataPackageVersion)</SystemDataCommonTestDataVersion>

eng/Version.Details.xml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -291,17 +291,17 @@
291291
<Uri>https://github.com/dotnet/dotnet</Uri>
292292
<Sha>e545239117919cda700be149a2e9a032374fc284</Sha>
293293
</Dependency>
294-
<Dependency Name="Microsoft.DotNet.XHarness.TestRunners.Common" Version="10.0.0-prerelease.25506.2">
294+
<Dependency Name="Microsoft.DotNet.XHarness.TestRunners.Common" Version="11.0.0-prerelease.25578.2">
295295
<Uri>https://github.com/dotnet/xharness</Uri>
296-
<Sha>5b5722171c6c28f6c9f6b6148f148199b9dd0f5b</Sha>
296+
<Sha>e26a7b2ad453b6739b033b18d9f896ab2f112e36</Sha>
297297
</Dependency>
298-
<Dependency Name="Microsoft.DotNet.XHarness.TestRunners.Xunit" Version="10.0.0-prerelease.25506.2">
298+
<Dependency Name="Microsoft.DotNet.XHarness.TestRunners.Xunit" Version="11.0.0-prerelease.25578.2">
299299
<Uri>https://github.com/dotnet/xharness</Uri>
300-
<Sha>5b5722171c6c28f6c9f6b6148f148199b9dd0f5b</Sha>
300+
<Sha>e26a7b2ad453b6739b033b18d9f896ab2f112e36</Sha>
301301
</Dependency>
302-
<Dependency Name="Microsoft.DotNet.XHarness.CLI" Version="10.0.0-prerelease.25506.2">
302+
<Dependency Name="Microsoft.DotNet.XHarness.CLI" Version="11.0.0-prerelease.25578.2">
303303
<Uri>https://github.com/dotnet/xharness</Uri>
304-
<Sha>5b5722171c6c28f6c9f6b6148f148199b9dd0f5b</Sha>
304+
<Sha>e26a7b2ad453b6739b033b18d9f896ab2f112e36</Sha>
305305
</Dependency>
306306
<Dependency Name="Microsoft.DotNet.PackageTesting" Version="11.0.0-beta.25528.108">
307307
<Uri>https://github.com/dotnet/dotnet</Uri>
@@ -417,5 +417,9 @@
417417
<Uri>https://github.com/dotnet/runtime-assets</Uri>
418418
<Sha>b5d67650a6a37772770a9df6ca762eebd0c21617</Sha>
419419
</Dependency>
420+
<Dependency Name="Microsoft.DotnetFuzzing.TestData" Version="11.0.0-beta.25553.1">
421+
<Uri>https://github.com/dotnet/runtime-assets</Uri>
422+
<Sha />
423+
</Dependency>
420424
</ToolsetDependencies>
421425
</Dependencies>

eng/Versions.props

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,14 +135,6 @@
135135
<AwesomeAssertionsVersion>8.0.2</AwesomeAssertionsVersion>
136136
<FsCheckVersion>2.14.3</FsCheckVersion>
137137
<CommandLineParserVersion>2.9.1</CommandLineParserVersion>
138-
<!-- Android gRPC client tests -->
139-
<GoogleProtobufVersion>3.19.4</GoogleProtobufVersion>
140-
<GrpcAspNetCoreVersion>2.46.0</GrpcAspNetCoreVersion>
141-
<GrpcAspNetCoreWebVersion>2.46.0</GrpcAspNetCoreWebVersion>
142-
<GrpcAuthVersion>2.46.3</GrpcAuthVersion>
143-
<GrpcCoreVersion>2.46.3</GrpcCoreVersion>
144-
<GrpcDotnetClientVersion>2.45.0</GrpcDotnetClientVersion>
145-
<GrpcToolsVersion>2.45.0</GrpcToolsVersion>
146138
<CompilerPlatformTestingVersion>1.1.3-beta1.24423.1</CompilerPlatformTestingVersion>
147139
<CompilerPlatformTestingDiffPlexVersion>1.7.2</CompilerPlatformTestingDiffPlexVersion>
148140
<CompilerPlatformTestingMicrosoftVisualBasicVersion>10.2.0</CompilerPlatformTestingMicrosoftVisualBasicVersion>

0 commit comments

Comments
 (0)