-
Notifications
You must be signed in to change notification settings - Fork 215
[NativeAOT-LLVM] Merge nov25 #3206
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feature/NativeAOT-LLVM
Are you sure you want to change the base?
Conversation
Also remove table growth option from browserhost, we don't need it as we don't have jiterpreter
This PR ports functional regex tests from the <a href="https://github.com/google/re2/tree/main/re2/testing">RE2 test suite</a> to improve .NET's regex test coverage, as requested in #120756. ## Changes ### Test Suite Additions - **Added `RegexRe2Tests.cs`**: New test file containing 85 unique test cases ported from RE2's `re2_test.cc` and `search_test.cc` - **Test coverage**: The ported tests execute ~340 times across all available regex engines (Interpreter, Compiled, NonBacktracking, SourceGenerated) - **Removed duplicates**: Analyzed overlap with existing PCRE, Rust, and core regex tests; removed 57 duplicative test cases to avoid redundancy ### Test Categories Covered The ported tests validate: - Complex matching patterns and alternations - Anchors (`^`, `$`) in single-line and multiline modes with non-trivial cases - Word boundaries (`\b`, `\B`) with ASCII and special characters - UTF-8/Unicode character handling - Escape sequences (octal `\141`, hexadecimal `\x61`, unicode `\u0061`) - Case-insensitive matching (`(?i)`) - Non-trivial quantifier combinations (`{n}`, `{n,}`, `{n,m}`) - Backreferences (excluded for NonBacktracking engine) - Edge cases and historical bug patterns from RE2 ### Compatibility Adjustments Several RE2-specific patterns were excluded or adapted for .NET compatibility: - **Removed `\C` patterns**: RE2's byte-matching construct is not supported in .NET - **Removed `\Q...\E` patterns**: Quote meta syntax is not supported in .NET - **Converted `\x{...}` escapes**: Changed to .NET-compatible `\x` (2 digits) or `\u` (4 digits) format - **Excluded backreferences for NonBacktracking**: Uses `RegexHelpers.IsNonBacktracking()` check - **Removed Unicode word boundary test**: .NET treats Unicode letters as word characters (unlike RE2/PCRE which use ASCII-only) - **Removed duplicative tests**: Excluded basic patterns like "a", "a*", "a+", "a?", "^$" that are already well-covered in existing test files ### License Attribution - **Updated `THIRD-PARTY-NOTICES.TXT`**: Added RE2 BSD 3-Clause license to properly attribute the ported tests - **Updated `.csproj`**: Added `RegexRe2Tests.cs` to the compilation ## Testing All 29,621 tests pass successfully, including the newly ported RE2 tests across all regex engines. Fixes #120756 <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>Port re2 regex tests</issue_title> > <issue_description>re2 has lots of regex functional tests we should port over to improve our coverage: > https://github.com/google/re2/blob/d826d9fcb68c62996c1b7c0a45d604e22d814952/re2/testing/</issue_description> > > <agent_instructions>You can see in https://github.com/dotnet/runtime/tree/main/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests we have a file of tests ported from PCRE and a file of tests ported from Rust. Please similarly port the cited RE2 tests (or a newer version if there is one); any that don't pass but should need to be marked as [ActiveIssue(...)]... any that don't pass but that's expected should be removed.</agent_instructions> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > <comment_new><author>@</author><body> > Tagging subscribers to this area: @eerhardt, @dotnet/area-system-text-regularexpressions > See info in [area-owners.md](https://github.com/dotnet/runtime/blob/main/docs/area-owners.md) if you want to be subscribed. > <details> > <summary>Issue Details</summary> > <hr /> > > re2 has lots of regex functional tests we should port over to improve our coverage: > https://github.com/google/re2/blob/d826d9fcb68c62996c1b7c0a45d604e22d814952/re2/testing/ > > <table> > <tr> > <th align="left">Author:</th> > <td>stephentoub</td> > </tr> > <tr> > <th align="left">Assignees:</th> > <td>-</td> > </tr> > <tr> > <th align="left">Labels:</th> > <td> > > `area-System.Text.RegularExpressions` > > </td> > </tr> > <tr> > <th align="left">Milestone:</th> > <td>.NET 7.0</td> > </tr> > </table> > </details></body></comment_new> > <comment_new><author>@joperezr</author><body> > This will likely miss ZBB but will still make it before 7.0. Adjusting the milestone just because this is not technically a blocker for 7.0.</body></comment_new> > </comments> > </details> Fixes dotnet/runtime#61896 <!-- START COPILOT CODING AGENT TIPS --> --- 💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Fixes dotnet/runtime#61895 This PR ports regex functional tests from the [nim-regex](https://github.com/nitely/nim-regex) project to increase .NET's regex test coverage, following the same pattern used for PCRE and Rust test suites. ## Changes - Added `RegexNimTests.cs` with 156 unique test cases focusing on patterns not already covered by existing tests - Updated `System.Text.RegularExpressions.Tests.csproj` to include the new test file - All tests pass across all regex engines (Interpreter, Compiled, NonBacktracking, SourceGenerated) ## Test Coverage The ported tests provide additional coverage for unique patterns including: - **Escaped quantifiers**: `\*+`, `\??`, `\++?` - testing literal `*`, `+`, `?` characters with quantifiers - **Nested repetitions**: `(a*)*`, `(a*)*b`, `((a)*(a)*)*` - edge case patterns - **Complex patterns**: `a(b|c)*d`, `((a(b)*)*(b)*)`, alternations with grouping - **Unicode character classes**: `\d` matching `۲`, `\D` matching `⅕` - **Lookahead/lookbehind**: Positive/negative assertions (filtered for NonBacktracking engine) - **Named groups**: `(?<name>...)` syntax - **Word boundary edge cases**: `\b\b\b` patterns - **Empty patterns and special cases** ## Deduplication After analysis, 25 duplicate and trivial test cases were removed that were already covered by existing tests in `Regex.Match.Tests.cs`, `Regex.Groups.Tests.cs`, and other test files. The remaining tests focus on unique patterns and edge cases. ## Compatibility Notes Some NIM-specific patterns were excluded or adapted for .NET compatibility: - **Removed** `\y` escape sequence (not recognized in .NET) - **Removed** `(?U)` ungreedy flag (not supported in .NET) - **Removed** Unicode case folding tests (ß ↔ ss) due to different behavior - **Converted** named group syntax from `(?P<name>)` to .NET's `(?<name>)` format - **Filtered** lookahead/lookbehind tests for NonBacktracking engine (throws NotSupportedException) ## Test Results - Total tests: 29,899 (added ~600+ test executions across all engines) - Failures: 0 - All tests pass successfully The MIT license for nim-regex was already present in `THIRD-PARTY-NOTICES.TXT`. <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>Port nim regex tests</issue_title> > <issue_description>Nim has lots of regex functional tests we should port over to improve our coverage: > https://github.com/nitely/nim-regex/blob/eeefb4f51264ff3bc3b36caf55672a74f52f5ef5/tests/tests.nim</issue_description> > > <agent_instructions>You can see in https://github.com/dotnet/runtime/tree/main/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests we have a file of tests ported from PCRE and a file of tests ported from Rust. Please similarly port the cited NIM tests (or a newer version if there is one); any that don't pass but should need to be marked as [ActiveIssue(...)]... any that don't pass but that's expected should be removed.</agent_instructions> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > <comment_new><author>@</author><body> > Tagging subscribers to this area: @eerhardt, @dotnet/area-system-text-regularexpressions > See info in [area-owners.md](https://github.com/dotnet/runtime/blob/main/docs/area-owners.md) if you want to be subscribed. > <details> > <summary>Issue Details</summary> > <hr /> > > Nim has lots of regex functional tests we should port over to improve our coverage: > https://github.com/nitely/nim-regex/blob/eeefb4f51264ff3bc3b36caf55672a74f52f5ef5/tests/tests.nim > > <table> > <tr> > <th align="left">Author:</th> > <td>stephentoub</td> > </tr> > <tr> > <th align="left">Assignees:</th> > <td>-</td> > </tr> > <tr> > <th align="left">Labels:</th> > <td> > > `area-System.Text.RegularExpressions` > > </td> > </tr> > <tr> > <th align="left">Milestone:</th> > <td>.NET 7.0</td> > </tr> > </table> > </details></body></comment_new> > <comment_new><author>@joperezr</author><body> > This will likely miss ZBB but will still make it before 7.0. Adjusting the milestone just because this is not technically a blocker for 7.0.</body></comment_new> > </comments> > </details> Fixes dotnet/runtime#61895 <!-- START COPILOT CODING AGENT TIPS --> --- ✨ Let Copilot coding agent [set things up for you](https://github.com/dotnet/runtime/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Adds support for using `IReadOnlyDictionary<string, object>` and `IReadOnlyDictionary<string, JsonElement>` as JsonExtensionData properties, enabling them to work identically to `IDictionary` types. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
…Await cases. (#120810) Fixes: #119617 Since ValueTask is a struct, we need to see through `stloc; ldloca;` sequence when matching `ConfigureAwait` call
… sequences of IL opcodes (#120827)
- This is needed to ensure that some of our SIMD tests finish in a
vaguely reasonable timeframe
- The peeps implemented here make that almost possible, although the
behavior in CI hasn't yet been verified
- Peeps implemented
- stloc/ldloc ... This is a minor improvement, but will be needed to
handle a future optimization around allowing the il stack to have
constant values
- box/unbox.any - Removes unnecessary boxing/unboxing
- typeof(T)==typeof(Y) - This allows us to handle the type testing
specialization behavior that is used heavily in the BCL
- typeof(T).IsValueType - Used in the Unsafe.BitCast function
Not yet implemented is giving the interpreter stack a concept of
constant values, so that we can optimize brtrue/brfalse and friends into
unconditional branches. With this set of changes the if
(typeof(T)==typeof(int)) { ... } else if (typeof(T)==typeof(float))
pattern is *much* faster than before, but the not taken paths are still
fully generated interpreter code, and there are still many branches.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…(#120683) Fixes dotnet/runtime#120340 Adds test with some runtime async methods, and fixes the check for invalid IL when a Task returning async method doesn't have a value on the stack for `ret`. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
… Build ID 2818866 (#120770) This is the pull request automatically created by the OneLocBuild task in the build process to check-in localized files generated based upon translation source files (.lcl files) handed-back from the downstream localization pipeline. If there are issues in translations, visit https://aka.ms/icxLocBug and log bugs for fixes. The OneLocBuild wiki is https://aka.ms/onelocbuild and the localization process in general is documented at https://aka.ms/AllAboutLoc.
…120856)
## Summary
Fixed a bug where balancing groups were incorrectly being removed from
negative lookarounds during regex tree reduction, causing patterns like
`()(?'-1')(?!(?'-1'))` to incorrectly return 0 matches instead of
matching at every position.
## Root Cause
The issue was introduced by an optimization in the `RemoveCaptures`
method within `ReduceLookaround` in `RegexNode.cs`. This method removes
capture groups from negative lookarounds since captures inside negative
lookarounds are undone after the lookaround completes. However, it was
incorrectly removing ALL capture groups, including balancing groups.
Balancing groups (e.g., `(?'-1')`) have semantic meaning that affects
matching behavior - they require a specific capture group to have been
captured before they can succeed. Removing them changes the match
semantics.
## The Fix
Modified the `RemoveCaptures` method to preserve balancing groups by
checking if `N != -1` (where N stores the uncapture group number). The
code now uses pattern matching for cleaner syntax: `if (node is { Kind:
RegexNodeKind.Capture, N: -1 })`. Updated comments to clarify that
captures that don't rely on or impact persisted state can be removed,
which includes backreferences and balancing groups.
## Changes Made
1. **RegexNode.cs**: Modified `RemoveCaptures` to check `node.N == -1`
before removing captures, using pattern matching
2. **Regex.Match.Tests.cs**: Added test case for balancing groups in
negative lookarounds
3. **Regex.Count.Tests.cs**: Added count test to verify correct match
count
## Test Results
- ✅ All functional tests pass: 29,334 tests
- ✅ All unit tests pass: 1,005 tests
- ✅ Pattern `()(?'-1')(?!(?'-1'))` now correctly matches at every
position in the input string
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>Regex `()(?'-1')(?!(?'-1'))` exhibit incorrect matching
behavior in .NET10</issue_title>
> <issue_description>### Description
>
> Such situation occur in `(?!)` and `(?<!)` under Interpreter、Compiled
and source GeneratedCode.
>
> ### Reproduction Steps
>
> ```c#
> using System.Text.RegularExpressions;
>
> var pattern = @"()(?'-1')(?!(?'-1'))";
> var input = "such situation occur in (?!) and (?<!) under
Interpreter、Compiled and source GeneratedCode";
> Regex regex = new Regex(pattern, RegexOptions.Compiled);
> var mhes = regex.Matches(input);
> Console.WriteLine(Regex.Matches(input, pattern).Count);
> Console.WriteLine(mhes.Count);
> Console.WriteLine(RegexTester.regexGenerate().Matches(input).Count);
> internal partial class RegexTester
> {
> [GeneratedRegex(@"()(?'-1')(?!(?'-1'))")]
> internal static partial Regex regexGenerate();
> }
> ```
>
> **Here is part of source Generated Code:**
> ```c#
> partial class RegexTester
> {
> /// <remarks>
> /// Pattern:<br/>
> /// <code>()(?'-1')(?!(?'-1'))</code><br/>
> /// Explanation:<br/>
> /// <code>
> /// ○ Fail to match.<br/>
> /// </code>
> /// </remarks>
>
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Text.RegularExpressions.Generator",
"10.0.13.307")]
> internal static partial global::System.Text.RegularExpressions.Regex
regexGenerate() =>
global::System.Text.RegularExpressions.Generated.regexGenerate_0.Instance;
> }
>
> private sealed class Runner : RegexRunner
> {
> /// <summary>Scan the <paramref name="inputSpan"/> starting from
base.runtextstart for the next match.</summary>
> /// <param name="inputSpan">The text being scanned by the regular
expression.</param>
> protected override void Scan(ReadOnlySpan<char> inputSpan)
> {
> // The pattern never matches anything.
> }
> }
> ```
>
> ### Expected behavior
>
> ```
> 91
> 91
> 91
> ```
>
> ### Actual behavior
>
> ```
> 0
> 0
> 0
> ```
>
> ### Regression?
>
> _No response_
>
> ### Known Workarounds
>
> _No response_
>
> ### Configuration
>
> _No response_
>
> ### Other information
>
> _No response_</issue_description>
>
> <agent_instructions>Please add tests for the problem and fix it. I
expect the problem was introduced in
dotnet/runtime#118084 and that the fix is simply
to ensure that capture groups are only removed from negative lookarounds
if they're not part of a balancing group.</agent_instructions>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> <comment_new><author>@stephentoub</author><body>
> Why do you believe the current behavior is incorrect? It's unclear
from your description as the Regression section is empty... is your
"Expected behavior" from a previous release?</body></comment_new>
> </comments>
>
</details>
Fixes dotnet/runtime#120849
<!-- START COPILOT CODING AGENT TIPS -->
---
✨ Let Copilot coding agent [set things up for
you](https://github.com/dotnet/runtime/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Add ability for the VM to dynamically create continuation layout types and for the JIT to request such types to be created.
…18270) Codegen was not a good place for these transformations, it resulted in contorted logic and complicated register allocation. Every type of comparison benefits: branch, floating, and integer but that was especially true for non-branch integer comparisons -- only less-than is available so any other comparison must be achieved with additional operations which are much easier to insert/transform to at node level. Inserting sign-extensions (and recognizing when it is necessary) for comparands is also easier at node level. This PR introduces only simple local checks, more comprehensive sign-extension elimination will be attempted in subsequent PRs. Part of #84834, cc @dotnet/samsung
…#120731) - [x] Mark DeepEquals_TooDeepJsonDocument_ThrowsInsufficientExecutionStackException test as [OuterLoop] - [x] Add 136 tests systematically targeting uncovered code paths - [x] **Final Coverage: 94.27% line, 90.60% branch, 93.40% method** (baseline: 93.73%, +0.54% improvement) - [x] Fix OutOfMemoryException in validation tests - [x] Convert all JSON string constants to raw string literals (per code review feedback) - [x] Replace wasteful JsonSerializerOptions creation with JsonSerializerOptions.Default (per code review feedback) - [x] Revert incorrect line in JsonValueTests to use options variable (per code review feedback) - [x] Convert additional JSON strings to raw string literals in DomTests.cs (per code review feedback) - [x] All 49,787 tests passing ## Summary Through systematic iterations, this PR improved System.Text.Json coverage from 93.73% to 94.27% (+0.54%) by adding 136 targeted unit tests covering previously untested API surfaces including JsonSerializer methods with JsonTypeInfo/JsonSerializerContext, multi-segment Utf8JsonReader scenarios, JsonWriter formatting options, JsonNode operations, JsonNamingPolicy variants, and collection serialization. Remaining gaps to reach 95% (~215 lines) consist primarily of complex Utf8JsonReader edge cases requiring specialized buffer setups, ThrowHelper exception paths, and F# converter infrastructure. <!-- START COPILOT CODING AGENT TIPS --> --- 💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
…atches (#120872) This has been an issue in the interpreter forever, as far as I can tell. We've had multiple issues over the years all flagging problems with different symptoms that stem from the same core problem. Fixes dotnet/runtime#43314 Fixes dotnet/runtime#58786 Fixes dotnet/runtime#63385 Fixes dotnet/runtime#111051 Fixes dotnet/runtime#114626 The problem came down to how the regex interpreter handled lazy quantifiers over expressions that can match the empty string. When the interpreter reaches one of these lazy loops, it uses an internal instruction called `Lazybranchmark` to manage entering and potentially looping the subexpression. To keep track of loop state and capture boundaries, the interpreter uses two internal stacks, a grouping stack, that tracks positions relevant to capturing groups (e.g. where a group started), and a backtracking stack, that tracks states that are needed if the engine has to go back and try a different match. The bug occurred in the case when the subpattern inside the lazy loop matches nothing. In this case, the interpreter unconditionally pushed a placeholder onto the grouping stack. If the rest of the pattern then succeeded without backtracking through this loop, that extra placeholder remained on the grouping stack. This polluted the capture bookkeeping: later parts of the pattern popped that placeholder, treating it as a real start position, and shifted captures to the wrong place. The fix is to stop pushing onto the grouping stack when the loop matches empty. Instead, the interpreter records two things on the backtracking stack: the old group boundary and a flag indicating whether the grouping stack needs to be popped later. If the interpreter ends up backtracking through this lazy loop, it checks the flag: if a grouping stack entry was added earlier, it pops it; if not, it leaves the grouping stack untouched. This keeps the grouping stack and backtracking stack in sync in both forward and backtracking paths. As a result, empty lazy loops no longer leave stray entries on the grouping stack. This also prevents the unbounded stack growth that previously caused overflows or hangs on some patterns involving nested lazy quantifiers.
…" (#120881) ## Summary Multiple classes across the repository were throwing `IndexOutOfRangeException` with `nameof(index)` as the message parameter, resulting in an unhelpful error message of just "index" instead of the standard .NET exception message. ## Changes This PR updates all occurrences to use the parameterless `IndexOutOfRangeException()` constructor, which provides the default, user-friendly message: "Index was outside the bounds of the array." **Before:** ```csharp throw new IndexOutOfRangeException(nameof(index)); // Exception message: "index" ``` **After:** ```csharp throw new IndexOutOfRangeException(); // Exception message: "Index was outside the bounds of the array." ``` ## Files Modified **Logging-related files:** - **LoggerMessage.cs**: Fixed 7 occurrences across different generic `LogValues<T>` classes - **LoggerMessageGenerator.Emitter.cs**: Fixed 1 occurrence in the source generator template - **LogValuesFormatter.cs**: Fixed 1 occurrence in the logging formatter - **FormattedLogValues.cs**: Fixed 1 occurrence in formatted log values - **LoggerExtensionsTest.cs**: Fixed 1 occurrence in test helper class - **HttpHeadersLogValue.cs**: Fixed 1 occurrence in HTTP logging infrastructure - **Baseline test files**: Updated 3 generated code baseline files to match the new output - **LoggerMessageTest.cs**: Added comprehensive test to verify the exception message is proper **Other components:** - **DesignerOptionService.cs**: Fixed 1 occurrence in System.ComponentModel.TypeConverter ## Testing - All existing tests continue to pass (291 tests in Microsoft.Extensions.Logging.Tests, 184 tests in Microsoft.Extensions.Http.Tests) - Added new test `LogValues_OutOfRangeAccess_ThrowsIndexOutOfRangeExceptionWithDefaultMessage` that validates the exception message for all LogValues variants (0-6 parameters) - Manually verified the fix produces the expected error message This is a minimal change that maintains backward compatibility (still throws `IndexOutOfRangeException`) while significantly improving the developer experience with a clear, descriptive error message across the entire codebase. <!-- START COPILOT CODING AGENT TIPS --> --- 💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Follow-up PR for #120495 Fills in missing return tags
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/setup-node/releases">actions/setup-node's releases</a>.</em></p> <blockquote> <h2>v6.0.0</h2> <h2>What's Changed</h2> <p><strong>Breaking Changes</strong></p> <ul> <li>Limit automatic caching to npm, update workflows and documentation by <a href="https://github.com/priyagupta108"><code>@priyagupta108</code></a> in <a href="https://redirect.github.com/actions/setup-node/pull/1374">actions/setup-node#1374</a></li> </ul> <p><strong>Dependency Upgrades</strong></p> <ul> <li>Upgrade ts-jest from 29.1.2 to 29.4.1 and document breaking changes in v5 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-node/pull/1336">#1336</a></li> <li>Upgrade prettier from 2.8.8 to 3.6.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-node/pull/1334">#1334</a></li> <li>Upgrade actions/publish-action from 0.3.0 to 0.4.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-node/pull/1362">#1362</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-node/compare/v5...v6.0.0">https://github.com/actions/setup-node/compare/v5...v6.0.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/setup-node/commit/2028fbc5c25fe9cf00d9f06a71cc4710d4507903"><code>2028fbc</code></a> Limit automatic caching to npm, update workflows and documentation (<a href="https://redirect.github.com/actions/setup-node/issues/1374">#1374</a>)</li> <li><a href="https://github.com/actions/setup-node/commit/13427813f706a0f6c9b74603b31103c40ab1c35a"><code>1342781</code></a> Bump actions/publish-action from 0.3.0 to 0.4.0 (<a href="https://redirect.github.com/actions/setup-node/issues/1362">#1362</a>)</li> <li><a href="https://github.com/actions/setup-node/commit/89d709d423dc495668cd762a18dd4a070611be3f"><code>89d709d</code></a> Bump prettier from 2.8.8 to 3.6.2 (<a href="https://redirect.github.com/actions/setup-node/issues/1334">#1334</a>)</li> <li><a href="https://github.com/actions/setup-node/commit/cd2651c46231bc0d6f48d6b34433b845331235fe"><code>cd2651c</code></a> Bump ts-jest from 29.1.2 to 29.4.1 (<a href="https://redirect.github.com/actions/setup-node/issues/1336">#1336</a>)</li> <li>See full diff in <a href="https://github.com/actions/setup-node/compare/v5...v6">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
* Publish managed cDAC package for use in other repositories
Adds an AsyncMethodDesc type to represent the runtime-async calling convention methods. The type was modeled after UnboxingMethodDesc, which also has multiple MethodDescs for each method def. These methods override the Signature to add the CallConvAsync flag and change the return type to void (for Task and ValueTask) or T (for Task<T> and ValueTask<T>). --------- Co-authored-by: Jan Kotas <jkotas@microsoft.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Backport of #120721 to main /cc @PranavSenthilnathan Links in the installer have English text instead of localized text. See #120109 for screenshots. Found by CTI. Fixes #120109 Co-authored-by: Pranav Senthilnathan <pranav.senthilnathan@live.com>
[Draft 12](https://datatracker.ietf.org/doc/html/draft-ietf-lamps-pq-composite-sigs-12) of the Composite ML-DSA spec now requires the parameters to be present for `ECPrivateKey`. This PR implements these changes in our managed Composite ML-DSA implementation. --------- Co-authored-by: Kevin Jones <vcsjones@github.com>
These 5 packages had lower versions than we had in pruning data in `net9.0`. Customer impact is that they would have been pruned in 9.0, but not in 10.0. Conflict resolution would still be dropping all of these regardless. No know "broken" beahvior.
…ed (#120272) Make sure we order the control expression after the spill. Also add a range control to selectively enable instrumentation stress. Fixes #120170.
Updates the definition of CORINFO_ASYNC_INFO to match CoreCLRs definition, and adds an implementation for the `getAsyncInfo` jit callback in ReadyToRun. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ly (#120925) Fixes #120918
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Adam Sitnik <adam.sitnik@gmail.com>
…egative JsonPropertyOrder (#121278) Fix STJ source generator producing non-compilable code on some locales This PR addresses an issue where the System.Text.Json source generator produces non-compilable code when using `JsonPropertyOrder` with negative values on certain locales (e.g., fi_FI.UTF-8). The issue was in the source generator where numeric values were being directly interpolated into generated C# code without specifying culture. On locales like fi_FI, negative numbers use the Unicode minus sign (U+2212) instead of the ASCII hyphen-minus, making the generated code invalid. **Fix:** Wrapped the entire source generator execution (both parsing and emitting) with code that sets `CultureInfo.CurrentCulture` to `InvariantCulture` and restores it in a finally block. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> Co-authored-by: Stephen Toub <stoub@microsoft.com>
The same program as in #121295 still works, but we can newly report async helpers as Intrinsic/Async.
This implements things around suspension/resumption. Most of this change is around handling continuation types.
Continuation types are synthetic types (created in the compiler) that derive from `Continuation` in the CoreLib. The JIT requests these based on the shape of locals it needs to preserve. What we get from the JIT in CorInfoImpl is size of the type and a pointer map (1011001 - non-zero means "GC pointer is here"). What we need to generate is a `MethodTable` for a type that derives from `Continuation` and has the specified GC layout after fields inherited from `Continuation`.
We already have a similar thing in the compiler ("`MethodTable`" we use for GC statics), so we're reusing the same approach. The `MethodTable` is pretty restricted and not the whole `MethodTable` API surface on it is available at runtime. However, it implements enough that the GC can operate on it.
The two new types are `AsyncContinuationType`. This is a type system `MetadataType` that represents the continuation pointer map. Then we have `AsyncContinuationEETypeNode` which is the thing that gets emitted into the output file - the `MethodTable` itself.
The resumption stub is just a stubbed out TODO for someone else to look into for now.
…1359) Fixes dotnet/runtime#121006 This provides an entry point, similar to P/Invokes thunks, for generated reverse P/Invoke stubs. A commented out example of the generated code was provided.
## Description The libclrinterpreter is already linked into the coreclr_static library for wasm in: https://github.com/dotnet/runtime/blob/e0837be345978738d0387055e0eb1e2b989dd787/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt#L201 This PR updates the build to avoid shipping libclrinterpreter in the wasm runtime packs as separate static librariy, which resolves the manifest errors: ``` The following files are missing entries in the templated manifest: libclrinterpreter.dylib. ``` Fixes dotnet/runtime#121399
Disable one part of the aliasing_retbuf that uses pinvoke with marshalling, fix disabling of calli_excep test that needs to be disabled on the project level as it is executed as isolated and finally Test_HndIndex_10_Reordered that has the same issue as previously disabled Test_HndIndex_10_Plain.
The test was accepting only 0xc0000005 as an exit code for NullReferenceException. But in the interpreter case, the exception is thrown using COMPlusThrow(kNullReferenceException) and gets the error code of regular managed exception, the 0xE0434352. This change updates the test to accept that one too and adds verification that the exception message contains the System.NullReferenceException to make sure the tested app didn't exit due to some other exception. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…121425)
`timespec_get` is not available on the Android API levels we target,
causing compilation failures in debug builds of
`src/coreclr/utilcode/debug.cpp`.
### Changes
- Added `HOST_ANDROID` to the existing preprocessor conditionals that
select `gettimeofday` over `timespec_get`
- Updated include guards for `<sys/time.h>` to include Android
Android now follows the same codepath as iOS, tvOS, and macCatalyst:
```cpp
#if defined(HOST_IOS) || defined(HOST_TVOS) || defined(HOST_MACCATALYST) || defined(HOST_ANDROID)
// timespec_get is only available on iOS 13.0+ and not supported on Android API levels we target
struct timeval tv;
gettimeofday(&tv, nullptr);
ts.tv_sec = tv.tv_sec;
ts.tv_nsec = tv.tv_usec * 1000;
#else
int ret = timespec_get(&ts, TIME_UTC);
#endif
```
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
> When built for Android in the debug configuration,
src/coreclr/utilcode/debug.cpp fails to compile because timespec_get is
not supported for the API level we target. HOST_ANDROID needs to be
added to #define checks so that it will fall through the gettimeofday
path.
</details>
<!-- START COPILOT CODING AGENT TIPS -->
---
✨ Let Copilot coding agent [set things up for
you](https://github.com/dotnet/runtime/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com>
Calling `EnumAllVirtualSlots` on classes returns all `newslot` methods that exist in the class hierarchy. Calling this on interfaces produced an empty enumeration. For runtime-async, it would be convenient if this returned the logical slots on interfaces. While interfaces don't have physical slots, they still have logical slots, so it's not a big stretch. Doing this now simplifies things in some places, and requires an extra `if` check in other places. But it will be really convenient for runtime-async.
This is an attempt to address #119962 by adding a new range assertion for `x & y` when a range for `x` and `y` can be determined. As part of the change, this PR also adds a non-negative range assertion for GT_CNS_INT when appropriate. --------- Co-authored-by: Adam Perlin <adamperlin@microsoft.com>
This change adds check for thread abort to the INTOP_SAFEPOINT and also to the code resuming after catch. This makes all the libraries controlled execution tests pass.
The `ProcessRead` method used unnecessary unsafe pointer arithmetic
despite accepting a `ReadOnlySpan<byte>` parameter that already provides
safe, efficient indexing.
## Changes
- **Replaced unsafe pointer arithmetic with ReadOnlySpan indexing**
- Removed `unsafe` block and `fixed` statement
- Replaced `byte*` pointers with integer index tracking
- Changed `*ptr++` to `buffer[i++]`, `(int)(ptr - start)` to `i`
- **Fixed pre-existing validation bug** (discovered during refactoring)
- Changed `if (b < '0' && b > '9')` to `if (b < '0' || b > '9')` in
digit validation
- Original condition could never be true (no byte can be both < 48 and >
57)
## Before/After
```csharp
// Before
unsafe {
fixed (byte* pBuffer = buffer) {
byte* ptr = pBuffer;
byte b = *ptr++;
if (b < '0' && b > '9') // Bug: never true
throw new FormatException(...);
}
}
// After
int i = 0;
byte b = buffer[i++];
if (b < '0' || b > '9') // Correct validation
throw new FormatException(...);
```
All existing tests pass. No API or behavior changes.
> [!WARNING]
>
> <details>
> <summary>Firewall rules blocked me from connecting to one or more
addresses (expand for details)</summary>
>
> #### I tried to connect to the following addresses, but was blocked by
firewall rules:
>
> - `1d7b368770e34adf874f9425defe0a54`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `2f1ac5ebdede409c885709296cd79caf`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `3e267405dc55499fbf89ba600b269486`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `4741d8119c5b46deb7b6a3247cf3e987`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `4777e169b2a54bef872d3013b91d119d`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `674cfdb34af049bc80dcbc8c430c56e8`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `83b38af9921845538f0d2b8e91bd4c93`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `8445b7f8594e4fa79d67a5f60e1917e1`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `9c17f6fe624d4688a482d039f62e9376`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `9caf23efb9b44deeaad1f5a4390857ed`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `ad5b1d9a0284470497198faf9964749f`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `dad9f17011b54a2883ca8f7489dde4e8`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `dc00558270b44330978820a282438ebc`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `f13d3b87148d4771ab29f5a3afc20964`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
> - `f4e51707a3454d68a871b21a5edce6f6`
> - Triggering command:
`/home/REDACTED/work/runtime/runtime/artifacts/bin/testhost/net10.0-linux-Debug-x64/dotnet
exec --runtimeconfig System.Net.Mail.Functional.Tests.runtimeconfig.json
--depsfile System.Net.Mail.Functional.Tests.deps.json
/home/REDACTED/.nuget/packages/microsoft.dotnet.xunitconsoleREDACTED/2.9.3-beta.25528.108/build/../tools/net/xunit.console.dll
System.Net.Mail.Functional.Tests.dll -xml testResults.xml -nologo
-notrait category=OuterLoop -notrait category=failing` (dns block)
>
> If you need me to access, download, or install something from one of
these locations, you can either:
>
> - Configure [Actions setup
steps](https://gh.io/copilot/actions-setup-steps) to set up my
environment, which run before the firewall is enabled
> - Add the appropriate URLs or hosts to the custom allowlist in this
repository's [Copilot coding agent
settings](https://github.com/dotnet/runtime/settings/copilot/coding_agent)
(admins only)
>
> </details>
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
> There is absolutely unnecessary unsafe code in
`SmtpReplyReaderFactory.cs` in `ProcessRead` function, please file a PR
to replace with just normal ReadOnlySpan memory access to make it memory
safe.
</details>
<!-- START COPILOT CODING AGENT TIPS -->
---
💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: EgorBo <523221+EgorBo@users.noreply.github.com>
Co-authored-by: Egor Bogatov <egorbo@gmail.com>
Co-authored-by: xtqqczze <45661989+xtqqczze@users.noreply.github.com>
|
This should hopefully address #3204 (comment) and fix the official build. |
|
Hi, yes what i usually do is a commit with the conflicts left as is, to make it clear where the conflicts are that I then resolve in the next commit. This helps the review process.
________________________________
From: Alexander Köplinger ***@***.***>
Sent: Monday, November 10, 2025 1:13:04 AM
To: dotnet/runtimelab ***@***.***>
Cc: Scott Waye ***@***.***>; Author ***@***.***>
Subject: Re: [dotnet/runtimelab] [NativeAOT-LLVM] Merge nov25 (PR #3206)
@akoeplinger commented on this pull request.
________________________________
In eng/liveBuilds.targets<#3206 (comment)>:
@@ -234,19 +244,40 @@
IsNative="true" />
<LibrariesRuntimeFiles Condition="'$(TargetOS)' == 'browser' and '$(RuntimeFlavor)' == 'Mono'"
+=======
+>>>>>>> main
there are a few merge conflicts here
—
Reply to this email directly, view it on GitHub<#3206 (review)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AAUYCKLLNQ33SFZCP6HWHKL34AUHBAVCNFSM6AAAAACLRH6RR6VHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZTINBRGAZTIMJQGI>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
#if out the new arena allocator Remove the .tmp ilc generation for LLVM
add dummy InterpreterGcInfoEncoding update to FEATURE_PORTABLE_HELPERS name Update JS lib names
|
cc @dotnet/nativeaot-llvm |
| endif() | ||
| endif(NOT DEFINED FEATURE_DBGIPC) | ||
|
|
||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| static const bool HAS_FIXED_STACK_PARAMETER_SCRATCH_AREA = false; | ||
| }; | ||
|
|
||
| #else // TODO-LLVM |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| #else // TODO-LLVM | |
| #else // TODO-LLVM: remove once we merge-in the upstream WasmJit |
|
|
||
| // Rename the temporary file to the final output file | ||
| File.Move(tempOutputFilePath, outputFilePath, overwrite: true); | ||
| compilation.RenameTempOutput(tempOutputFilePath, outputFilePath); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we move to the upstream scheme for this, at least for the "main" output file? I don't see why it wouldn't work.
| # Only when Browser for CoreCLR, TODO: NAOT-LLVM but not for NativeAOT, but how to detect that? Remove when it is ready to be used. | ||
| if (CLR_CMAKE_TARGET_BROWSER AND BUILD_LIBS_NATIVE_BROWSER AND false) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does just building this part cause problems?
(We may still want to disable still for build time reasons.)
| "packages": { | ||
| "": { | ||
| "name": "@microsoft/dotnet-runtime", | ||
| "version": "1.0.0", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need such a big diff from upstream here?
| <FeaturePortableEntryPoints>true</FeaturePortableEntryPoints> | ||
| <FeaturePortableHelpers>true</FeaturePortableHelpers> | ||
| <FeatureInterpreter>true</FeatureInterpreter> | ||
| <FeatureInterpreter>false</FeatureInterpreter> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need to disable this for functional reasons, or...?
| >>>>>>> main | ||
| endif() | ||
|
|
||
| if (CLR_CMAKE_TARGET_ARCH_WASM AND DEFINED CMAKE_TZD_DIR) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we also need to adjust our targets slightly to link System.Native.TimeZoneData.Invariant instead of System.Native.TimeZoneData.Disabled (port difference).
This PR merges to commit a67d388.
Remove
newoperator fromalloc.cppas clashes with LLVM.Make the cleanup
RenameTempOutputvirtual and don't implement for now - we have lots of files.Dont include
System.Native.Browserwith a temporary hard codedfalsein the condition.Add rollup dependency.
Align JS function names.
Remove dn-containers for
clrinterpreteras we don't have it.