Skip to content

Commit 2b6a4cd

Browse files
authored
Merge branch 'main' into BumpVersioningTo10
2 parents 3972bad + c47fc5f commit 2b6a4cd

File tree

524 files changed

+7591
-17027
lines changed

Some content is hidden

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

524 files changed

+7591
-17027
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
name: Inter-branch merge workflow
2+
on:
3+
push:
4+
branches:
5+
- release/**
6+
7+
permissions:
8+
contents: write
9+
pull-requests: write
10+
11+
jobs:
12+
Merge:
13+
uses: dotnet/arcade/.github/workflows/inter-branch-merge-base.yml@main

docs/design/coreclr/botr/clr-abi.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ ARM64: See [Overview of ARM64 ABI conventions](https://learn.microsoft.com/cpp/b
2323
## Non-Windows ABI documentation
2424

2525
Arm corporation ABI documentation (for ARM32 and ARM64) is [here](https://developer.arm.com/architectures/system-architectures/software-standards/abi) and [here](https://github.com/ARM-software/abi-aa).
26+
Apple's ARM64 calling convention differences can be found [here](https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms).
2627

2728
The Linux System V x86_64 ABI is documented in [System V Application Binary Interface / AMD64 Architecture Processor Supplement](https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-1.0.pdf), with document source material [here](https://gitlab.com/x86-psABIs/x86-64-ABI).
2829

@@ -117,6 +118,10 @@ ARM64-only: When a method returns a structure that is larger than 16 bytes the c
117118

118119
Primitive value types smaller than 32-bits are widened to 32-bits: signed small types are sign extended and unsigned small types are zero extended. This can be different from the standard calling conventions that may leave the state of unused bits in the return register undefined.
119120

121+
## Small primitive arguments
122+
123+
Small primitive arguments have undefined upper bits. This can be different from the standard calling conventions that may require normalization (e.g. on ARM32 and Apple ARM64).
124+
120125
# PInvokes
121126

122127
The convention is that any method with an InlinedCallFrame (either an IL stub or a normal method with an inlined PInvoke) saves/restores all non-volatile integer registers in its prolog/epilog respectively. This is done so that the InlinedCallFrame can just contain a return address, a stack pointer and a frame pointer. Then using just those three it can start a full stack walk using the normal RtlVirtualUnwind.

docs/design/datacontracts/RuntimeTypeSystem.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ partial interface IRuntimeTypeSystem : IContract
125125
// generated by the runtime, or a MethodDesc that describes a method represented by the System.Reflection.Emit.DynamicMethod class
126126
// Or something else similar.
127127
// A no metadata method is also a StoredSigMethodDesc
128-
public virtual bool IsNoMetadataMethod(MethodDescHandle methodDesc, out ReadOnlySpan<byte> methodName);
128+
public virtual bool IsNoMetadataMethod(MethodDescHandle methodDesc, out string methodName);
129129

130130
// A StoredSigMethodDesc is a MethodDesc for which the signature isn't found in metadata.
131131
public virtual bool IsStoredSigMethodDesc(MethodDescHandle methodDesc, out ReadOnlySpan<byte> signature);
@@ -708,9 +708,9 @@ And the various apis are implemented with the following algorithms
708708
public uint GetMethodToken(MethodDescHandle methodDescHandle)
709709
{
710710
MethodDesc methodDesc = _methodDescs[methodDescHandle.Address];
711-
711+
712712
TargetPointer methodDescChunk = // Using ChunkIndex from methodDesc, compute the wrapping MethodDescChunk
713-
713+
714714
ushort Flags3AndTokenRemainder = // Read Flags3AndTokenRemainder field from MethodDesc contract using address methodDescHandle.Address
715715
716716
ushort FlagsAndTokenRange = // Read FlagsAndTokenRange field from MethodDescChunk contract using address methodDescChunk

docs/design/features/globalization-hybrid-mode.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,13 +270,12 @@ Dependencies:
270270

271271
Web API does not expose locale-sensitive endsWith/startsWith function. As a workaround, both strings get normalized and weightless characters are removed. Resulting strings are cut to the same length and comparison is performed. This approach, beyond having the same compare option limitations as described under **String comparison**, has additional limitations connected with the workaround used. Because we are normalizing strings to be able to cut them, we cannot calculate the match length on the original strings. Methods that calculate this information throw PlatformNotSupported exception:
272272

273-
- [CompareInfo.IsPrefix](https://learn.microsoft.com/dotnet/api/system.globalization.compareinfo.isprefix?view=net-8.0#system-globalization-compareinfo-isprefix(system-readonlyspan((system-char))-system-readonlyspan((system-char))-system-globalization-compareoptions-system-int32@))
274-
- [CompareInfo.IsSuffix](https://learn.microsoft.com/dotnet/api/system.globalization.compareinfo.issuffix?view=net-8.0#system-globalization-compareinfo-issuffix(system-readonlyspan((system-char))-system-readonlyspan((system-char))-system-globalization-compareoptions-system-int32@))
273+
- [CompareInfo.IsPrefix](https://learn.microsoft.com/dotnet/api/system.globalization.compareinfo.isprefix?view=#system-globalization-compareinfo-isprefix(system-readonlyspan((system-char))-system-readonlyspan((system-char))-system-globalization-compareoptions-system-int32@))
274+
- [CompareInfo.IsSuffix](https://learn.microsoft.com/dotnet/api/system.globalization.compareinfo.issuffix?view=system-globalization-compareinfo-issuffix(system-readonlyspan((system-char))-system-readonlyspan((system-char))-system-globalization-compareoptions-system-int32@))
275275

276276
- `IgnoreSymbols`
277277
Only comparisons that do not skip character types are allowed. E.g. `IgnoreSymbols` skips symbol-chars in comparison/indexing. All `CompareOptions` combinations that include `IgnoreSymbols` throw `PlatformNotSupportedException`.
278278

279-
280279
**String indexing**
281280

282281
Affected public APIs:
@@ -287,6 +286,15 @@ Affected public APIs:
287286

288287
Web API does not expose locale-sensitive indexing function. There is a discussion on adding it: https://github.com/tc39/ecma402/issues/506. In the current state, as a workaround, locale-sensitive string segmenter combined with locale-sensitive comparison is used. This approach, beyond having the same compare option limitations as described under **String comparison**, has additional limitations connected with the workaround used. Information about additional limitations:
289288

289+
- Methods that calculate `matchLength` always return throw PlatformNotSupported exception:
290+
291+
[CompareInfo.IndexOf](https://learn.microsoft.com/en-us/dotnet/api/system.globalization.compareinfo.indexof?view=system-globalization-compareinfo-indexof(system-readonlyspan((system-char))-system-readonlyspan((system-char))-system-globalization-compareoptions-system-int32@))
292+
293+
[CompareInfo.LastIndexOf](https://learn.microsoft.com/en-us/dotnet/api/system.globalization.compareinfo.lastindexof?view=system-globalization-compareinfo-lastindexof(system-readonlyspan((system-char))-system-readonlyspan((system-char))-system-globalization-compareoptions-system-int32@))
294+
295+
- String.Replace that uses `StringComparison` argument relies internally on IndexOf with `matchLength` argument. From this reason, it throws PlatformNotSupportedException:
296+
[String.Replace](https://learn.microsoft.com/en-us/dotnet/api/system.string.replace?view=system-string-replace(system-string-system-string-system-stringcomparison))
297+
290298
- Support depends on [`Intl.segmenter's support`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter#browser_compatibility).
291299

292300
- `IgnoreSymbols`
@@ -463,6 +471,11 @@ Affected public APIs:
463471
- String.IndexOf
464472
- String.LastIndexOf
465473

474+
Methods that calculate `matchLength` throw PlatformNotSupported exception:
475+
[CompareInfo.IndexOf](https://learn.microsoft.com/en-us/dotnet/api/system.globalization.compareinfo.indexof?view=system-globalization-compareinfo-indexof(system-readonlyspan((system-char))-system-readonlyspan((system-char))-system-globalization-compareoptions-system-int32@))
476+
477+
[CompareInfo.LastIndexOf](https://learn.microsoft.com/en-us/dotnet/api/system.globalization.compareinfo.lastindexof?view=system-globalization-compareinfo-lastindexof(system-readonlyspan((system-char))-system-readonlyspan((system-char))-system-globalization-compareoptions-system-int32@))
478+
466479
Mapped to Apple Native API `rangeOfString:options:range:locale:`(https://developer.apple.com/documentation/foundation/nsstring/1417348-rangeofstring?language=objc)
467480

468481
In `rangeOfString:options:range:locale:` objects are compared by checking the Unicode canonical equivalence of their code point sequences.

docs/workflow/debugging/coreclr/debugging-runtime.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -223,15 +223,19 @@ Native C++ code is not everything in our runtime. Nowadays, there are lots of st
223223

224224
#### Resolving Signature Validation Errors in Visual Studio
225225

226-
Starting with Visual Studio 2022 version 17.5, Visual Studio will validate that the debugging libraries that shipped with the .NET Runtime are correctly signed before loading them. If they are unsigned, Visual Studio will show an error like:
226+
Visual Studio 2022 version 17.5 and later validates that the debugging libraries shipped with the .NET Runtime are signed before loading them. If they are unsigned, Visual Studio shows an error similar to the following:
227227

228228
> Unable to attach to CoreCLR. Signature validation failed for a .NET Runtime Debugger library because the file is unsigned.
229229
>
230230
> This error is expected if you are working with non-official releases of .NET (example: daily builds from https://github.com/dotnet/sdk). See https://aka.ms/vs/unsigned-dotnet-debugger-lib for more information.
231231
232-
If the target process is using a .NET Runtime that is either from a daily build, or one that you built on your own computer, this error will show up. **NOTE**: This error should never happen for official builds of the .NET Runtime from Microsoft. So don’t disable the validation if you expect to be using a .NET Runtime supported by Microsoft.
232+
This error occurs if the target process is using a daily build .NET Runtime or one that you built. **NOTE**: This error never happens with [released builds of the .NET Runtime from Microsoft](https://dotnet.microsoft.com/en-us/download/dotnet). ***Don’t*** disable the validation if you are using an official release of the .NET Runtime.
233233

234-
There are three ways to configure Visual Studio to disable signature validation:
235-
1. The [`DOTNET_ROOT` environment variable](https://learn.microsoft.com/dotnet/core/tools/dotnet-environment-variables#dotnet_root-dotnet_rootx86): if Visual Studio is started from a command prompt where `DOTNET_ROOT` is set, it will ignore unsigned .NET runtime debugger libraries which are under the `DOTNET_ROOT` directory.
236-
2. The `VSDebugger_ValidateDotnetDebugLibSignatures` environment variable: If you want to temporarily disable signature validation, run `set VSDebugger_ValidateDotnetDebugLibSignatures=0` in a command prompt, and start Visual Studio (devenv.exe) from this command prompt.
237-
3. Set the `ValidateDotnetDebugLibSignatures` registry key: To disable signature validation on a more permanent basis, you can set the VS registry key to turn it off. To do so, open a Developer Command Prompt, and run `Common7\IDE\VsRegEdit.exe set local HKCU Debugger\EngineSwitches ValidateDotnetDebugLibSignatures dword 0`
234+
The following approaches configure Visual Studio to disable signature validation:
235+
236+
1. The `VSDebugger_ValidateDotnetDebugLibSignatures` environment variable:
237+
* This is the easiest and recommended approach to temporarily disable signature validation.
238+
* At the command line, run `set VSDebugger_ValidateDotnetDebugLibSignatures=0` and then start Visual Studio (`devenv.exe`) from the same command prompt.
239+
* This setting is only valid for the Visual Studio instance that is started from the command prompt where the environment variable is set.
240+
1. The [`DOTNET_ROOT` environment variable](https://learn.microsoft.com/dotnet/core/tools/dotnet-environment-variables#dotnet_root-dotnet_rootx86): if Visual Studio is started from a command prompt where `DOTNET_ROOT` is set, it ignores unsigned .NET runtime debugger libraries which are under the `DOTNET_ROOT` directory.
241+
1. ***NOT RECOMMENDED*** Set the `ValidateDotnetDebugLibSignatures` registry key: To disable signature validation on a more permanent basis, set the `Common7\IDE\VsRegEdit.exe set local HKCU Debugger\EngineSwitches ValidateDotnetDebugLibSignatures dword 0` VS registry key. For example, open a Developer Command Prompt and run `Common7\IDE\VsRegEdit.exe set local HKCU Debugger\EngineSwitches ValidateDotnetDebugLibSignatures dword 0`

eng/Subsets.props

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,6 @@
196196
<SubsetName Include="Libs.Native" Description="The native libraries used in the shared framework." />
197197
<SubsetName Include="Libs.Sfx" Description="The managed shared framework libraries." />
198198
<SubsetName Include="Libs.Oob" Description="The managed out-of-band libraries." />
199-
<SubsetName Include="Libs.Ref" OnDemand="true" Description="The managed reference libraries." />
200-
<SubsetName Include="Libs.Src" OnDemand="true" Description="The managed implementation libraries." />
201199
<SubsetName Include="Libs.PreTest" Description="Test assets which are necessary to run tests." />
202200
<SubsetName Include="Libs.Tests" OnDemand="true" Description="The test projects. Note that building this doesn't execute tests: you must also pass the '-test' argument." />
203201

@@ -481,20 +479,16 @@
481479
<ProjectToBuild Include="$(SharedNativeRoot)libs\build-native.proj" Category="libs" />
482480
</ItemGroup>
483481

484-
<ItemGroup Condition="$(_subset.Contains('+libs.ref+')) or $(_subset.Contains('+libs.src+')) or $(_subset.Contains('+libs.sfx+'))">
482+
<ItemGroup Condition="$(_subset.Contains('+libs.sfx+'))">
485483
<ProjectToBuild Include="$(LibrariesProjectRoot)sfx.proj"
486484
Category="libs"
487485
Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or
488486
'$(BuildTargetFramework)' == '' or
489-
'$(BuildAllConfigurations)' == 'true'">
490-
<AdditionalProperties Condition="$(_subset.Contains('+libs.ref+'))">%(AdditionalProperties);RefOnly=true</AdditionalProperties>
491-
</ProjectToBuild>
487+
'$(BuildAllConfigurations)' == 'true'" />
492488
</ItemGroup>
493489

494-
<ItemGroup Condition="$(_subset.Contains('+libs.ref+')) or $(_subset.Contains('+libs.src+')) or $(_subset.Contains('+libs.oob+'))">
495-
<ProjectToBuild Include="$(LibrariesProjectRoot)oob.proj" Category="libs">
496-
<AdditionalProperties Condition="$(_subset.Contains('+libs.ref+'))">%(AdditionalProperties);RefOnly=true</AdditionalProperties>
497-
</ProjectToBuild>
490+
<ItemGroup Condition="$(_subset.Contains('+libs.oob+'))">
491+
<ProjectToBuild Include="$(LibrariesProjectRoot)oob.proj" Category="libs" />
498492
</ItemGroup>
499493

500494
<ItemGroup Condition="$(_subset.Contains('+mono.wasmruntime+'))">

0 commit comments

Comments
 (0)