Skip to content
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

Sfh fix tests #8

Merged
merged 339 commits into from
Jun 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
339 commits
Select commit Hold shift + click to select a range
6418252
Use the signature types when building ABI info (#70635)
SingleAccretion Jun 13, 2022
4277bc5
[wasm] Build WasmAppHost with UseAppHost=false (#70606)
radical Jun 13, 2022
025b763
JIT: Optimize expansion of indir cell addresses for CFG (#70491)
jakobbotsch Jun 13, 2022
15f1e1d
Handle mis-sized structs in XARCH `PUTARG_STK` codegen (#68611)
SingleAccretion Jun 13, 2022
59b2dd9
Improve distribution of CoseHeaderLabel hash codes (#70695)
GrabYourPitchforks Jun 13, 2022
fbae62d
Implement digest one shots for browser implementation
vcsjones Jun 14, 2022
a344441
[wasm] Don't use a fixed listening port for the proxy (#70681)
radical Jun 14, 2022
731c262
Fix SOS tests on 7.0 (#70677)
mikem8361 Jun 14, 2022
367193d
[wasm] Enable some previously failing WBT/AOT tests on windows (#70595)
radical Jun 14, 2022
20e5237
List other architectures and DOTNET_ROOT environment variables in dot…
elinor-fung Jun 14, 2022
e5acd4d
[mono] Remove dead code. (#70671)
rolfbjarne Jun 14, 2022
3bb45af
Avoid throwing Win32Exception from HTTP authentication (#70474)
filipnavara Jun 14, 2022
84f7cad
Fix usage of GSS_KRB5_CRED_NO_CI_FLAGS_X (#70447)
filipnavara Jun 14, 2022
a361f7f
Use IndexOf in WebUtility (#70700)
stephentoub Jun 14, 2022
4fc6287
Hoist the invariants out of multi-level nested loops (#68061)
kunalspathak Jun 14, 2022
b85f6b3
Delete GTF_ASSERTION_PROP_LONG (#70521)
SingleAccretion Jun 14, 2022
021dc5f
Convert exception help context parsing to managed (#70251)
huoyaoyuan Jun 14, 2022
1615e78
Delete tests for .NET Framework Xsltc.exe tool (#70706)
danmoseley Jun 14, 2022
89962a5
Reenable C4244 in repo (#70026)
AaronRobinsonMSFT Jun 14, 2022
8bb880d
Add SlidingWindow and FixedWindow to RateLimitPartition (#68782)
BrennanConroy Jun 14, 2022
20cb077
align GC memory load calculation on Linux with Docker and Kubernetes …
dennis-yemelyanov Jun 14, 2022
3428247
[wasm] Fix Debug configuration builds (#70683)
lambdageek Jun 14, 2022
fb9be0a
[wasm] Make runtime_is_initialized promise callbacks one-shot (#70694)
lambdageek Jun 14, 2022
261574b
Do not use ExecutableMemoryAllocator on 64 bit platforms if default b…
gbalykov Jun 14, 2022
56e58d3
[wasm][debugger] Implement get bytes from loaded_files using debugger…
thaystg Jun 14, 2022
978df67
Add doc on Unix temporary file security practice (#70585)
agocke Jun 14, 2022
0ca092e
ConfigurationBinder.Bind on virtual properties duplicates elements (#…
pedrobsaila Jun 14, 2022
042fdf4
Obsolete AssemblyName.CodeBase, AssemblyName.EscapedCodeBase (#70534)
buyaa-n Jun 14, 2022
c8654e7
JIT: Enable JitConsumeProfileForCasts by default (#69869)
EgorBo Jun 14, 2022
41ce20a
Fix AttributePresence in composite mode (#70737)
trylek Jun 15, 2022
6896e1b
Handle mis-sized structs in ARM/64 `PUTARG_SPLIT` codegen (#70249)
SingleAccretion Jun 15, 2022
42d76d3
Refactor how implicit byrefs are morphed (#70243)
SingleAccretion Jun 15, 2022
4501e39
Do not change `gtRetClsHnd` in `impNormStructVal` (#70699)
SingleAccretion Jun 15, 2022
010eb63
Support `PUTARG_STK(STRUCT LCL_VAR/LCL_FLD)` on ARM/64 (#70256)
SingleAccretion Jun 15, 2022
b9d9b0e
Support `PUTARG_STK(STRUCT LCL_VAR/LCL_FLD)` on x86/Unix x64 (#70702)
SingleAccretion Jun 15, 2022
344c792
Allow `TYP_STRUCT` `LCL_FLD` on the RHS of block copies (#70633)
SingleAccretion Jun 15, 2022
eeb0c15
Revert "Fix usage of GSS_KRB5_CRED_NO_CI_FLAGS_X (#70447)" (#70747)
wfurt Jun 15, 2022
1abd9a1
Add note about backward branch constraints to ECMA-335 augments (#70760)
jkotas Jun 15, 2022
e30570d
[NativeAOT] Enabling return address hijacking on ARM64 Windows (#70740)
VSadov Jun 15, 2022
cd60639
Fix value numbering of HWI loads (#70621)
SingleAccretion Jun 15, 2022
702c1ea
Small MsQuicStream refactorings (#70433)
rzikm Jun 15, 2022
53e52f2
Updating HWIntrinsicInfo::lookupId to not accelerate Vector256 APIs w…
tannergooding Jun 15, 2022
b3e606f
Dsiable CertificateValidationRemoteServer.ConnectWithRevocation_WithC…
rzikm Jun 15, 2022
e242424
NativeAOT Unlock assignability comparison in reflection-free (#70726)
kant2002 Jun 15, 2022
82a7ee4
[Mono] Fix C4018 round I (#70417)
fanyang-mono Jun 15, 2022
63bdb98
Fix race condition in LoaderAllocator::CompareExchangeValueInHandle (…
jkotas Jun 15, 2022
2f0a796
Enable redirection on arm64 (#70769)
VSadov Jun 15, 2022
f19d85b
Handle HW exceptions on Windows without redirection (#70428)
janvorli Jun 15, 2022
6a2727f
Predicate for valid Tracker Reference is inverted (#70709)
AaronRobinsonMSFT Jun 15, 2022
5810b02
JIT: Enable addressing modes for gc types (#70749)
EgorBo Jun 15, 2022
7198edb
JIT: Faster long->int overflow checks (#69865)
EgorBo Jun 15, 2022
06c7957
Update .net version for asp.net spmi collection script (#70778)
AndyAyersMS Jun 15, 2022
10288c9
Enable IlcTrimMetadata by default (#70201)
MichalStrehovsky Jun 15, 2022
4c6b53b
Remove GSS_KRB5_CRED_NO_CI_FLAGS_X code (#70772)
filipnavara Jun 15, 2022
1e97f7c
Make ConnectWithRevocation_StapledOcsp more resilient to being slow
bartonjs Jun 15, 2022
4e844e6
Upgrade SDK to Preview 5 (#70117)
agocke Jun 15, 2022
2ce8130
Find&replace FastInterlock* with Interlocked* (#70784)
jkotas Jun 15, 2022
446e5ad
JIT: rework optCanonicalizeLoop (#70792)
AndyAyersMS Jun 16, 2022
205b7ff
Avoid infinite loop in case of heap corruption (#70759)
cshung Jun 16, 2022
a7052ac
[wasm][debugger] Remove workaround to get pauseOnExceptions setting (…
thaystg Jun 16, 2022
24bbfbf
Add SubstitutionParser that uses XPath Navigator into NativeAOT (#64671)
tlakollo Jun 16, 2022
3c33b42
Add end-to-end test for NTLM/Negotiate authentication against fake se…
filipnavara Jun 16, 2022
3fc61eb
Enable ThreadAbort with CET enabled via the QueueUserAPC2 (#70803)
janvorli Jun 16, 2022
c972517
Test additional NativeAOT Lib testing (#70212)
LakshanF Jun 16, 2022
3b04dc1
Fix emitDispJumpList for Arm64 (#70542)
kunalspathak Jun 16, 2022
8b3be89
Fix regression in runtime-jit-experimental (#70797)
Jun 16, 2022
f25caab
JIT: relax fwd sub restriction on changing class handle (#70587)
AndyAyersMS Jun 16, 2022
9ab00ef
Use LastIndexOf in ZipArchiveEntry.GetFileName_Unix (#70701)
stephentoub Jun 16, 2022
cfeab72
Update dogfooding instructions (#70833)
jkotas Jun 16, 2022
ab998cc
Add icon to dotnet.exe on Windows (#70578)
elinor-fung Jun 16, 2022
6e7001c
Add two new stages to prepare for our new custom type marshalling des…
jkoritzinsky Jun 16, 2022
1b6f76d
Simplify `Environment.IsWindows8OrAbove`. (#70818)
teo-tsirpanis Jun 16, 2022
3874c65
Delete redundant aliases for primitive types (#70805)
jkotas Jun 16, 2022
9a80f1d
Add limited support for LocalCertificateSelectionCallback for QUIC (#…
rzikm Jun 16, 2022
401722b
JIT: Optimize range checks for X >> CNS and for short/byte indices (…
EgorBo Jun 16, 2022
195a0a9
Tighten checks in `areArgumentsContiguous` (#70829)
SingleAccretion Jun 16, 2022
52cced2
Narrow cast fix (#70518)
TIHan Jun 16, 2022
3b09519
[wasm] Disable WBT test failing on windows (#70808)
radical Jun 16, 2022
502f9ac
Enable IDE1005 (Delegate invocation can be simplified) (#70522)
stephentoub Jun 16, 2022
1dbda71
Disable long running test (#70843)
fanyang-mono Jun 16, 2022
ae49f52
[wasm] Enabled WriteToReadOnly tests - emscripten bug got fixed (#70814)
ilonatommy Jun 16, 2022
11d8e26
Use IndexOf{Any} in a few more places (#70176)
stephentoub Jun 16, 2022
5713bea
Fix corerun for assemblies with mismatched filename (#70800)
jkotas Jun 16, 2022
36f2dc2
Fix a few Stream-related issues in System.Net.Http (#70731)
stephentoub Jun 16, 2022
795a0f7
Catch (more) mismatched args in `fgMorphArgs` (#70846)
SingleAccretion Jun 16, 2022
1a02f0d
[coop] fix coop suspend timeout cue card (#70828)
lambdageek Jun 16, 2022
48adb84
Fixing the handling of Positive NaN in Math.Min for float/double (#70…
tannergooding Jun 17, 2022
e3a2097
JIT: break loop canonicalization into two stages (#70809)
AndyAyersMS Jun 17, 2022
6154792
Use `Array.Empty()` in `System.Reflection.Metadata`. (#70862)
teo-tsirpanis Jun 17, 2022
eca86de
Delete StaticallyLinked property from Microsoft.NETCore.Native.Unix.p…
jkotas Jun 17, 2022
b6e2e1c
Restore ArchivingUtils.AttemptSetLastWriteTime (#70617)
carlossanlop Jun 17, 2022
d940a01
Fix GC stress failure in LoaderAllocator::CompareExchangeValueInHandl…
jkotas Jun 17, 2022
3b1a36e
Small performance cleanups in S.S.Cryptography
vcsjones Jun 17, 2022
3b2883b
ARM64 - Optimize `i % 2` (#70599)
TIHan Jun 17, 2022
30379b7
Assign proper VNs to "shared constant" CSE defs (#70852)
SingleAccretion Jun 17, 2022
a796755
Enable IDE0054 (Use compound assignment) (#70564)
stephentoub Jun 17, 2022
10438a5
Use new byte[] span optimization in a few more places (#70665)
stephentoub Jun 17, 2022
8a6672a
Improve TLS1.3 detection in registry for QUIC (#70730)
rzikm Jun 17, 2022
07b5741
Generate method bodies for delegate Invoke methods (#70883)
MichalStrehovsky Jun 17, 2022
c75659b
Avoid crashing on unresolved dependencies (#70871)
MichalStrehovsky Jun 17, 2022
3fdee96
Enable IDE0020 (Use pattern matching) (#70523)
stephentoub Jun 17, 2022
1b87ff9
Fix failure building two libraries tests (#70881)
MichalStrehovsky Jun 17, 2022
5fc5c68
Use hash/hmac one shots in NTLM (#70857)
vcsjones Jun 17, 2022
a78211b
Unpin locals, attempt 2 (#70655)
aromaa Jun 17, 2022
6d6a373
Replace a few instances of PtrToStructure with more efficient marshal…
jkotas Jun 17, 2022
5df4473
Fix for timer scheduling happening on the incorrect thread when wasm …
kg Jun 17, 2022
41d9c1c
Add event to capture min/max threads (#70063)
eduardo-vp Jun 17, 2022
2627ea3
[wasm] Add support for per-project customization of helix work items …
radical Jun 17, 2022
051b482
Fix bug in Tar preventing extraction of hardlinks or entries starting…
carlossanlop Jun 17, 2022
0d0fd75
Remove #define Sleep (#70868)
AaronRobinsonMSFT Jun 17, 2022
0666d9d
Fix ICorDebugFunction2::GetVersionNumber for arm32. (#69901)
viewizard Jun 17, 2022
9dfdfbf
Replace the remaining uses of Marshal.PtrToStructure in core networki…
jkotas Jun 17, 2022
cae8546
Add support for delegate GDV and method-based vtable GDV (#68703)
jakobbotsch Jun 17, 2022
4abfe7c
Use ArgumentNullException.ThrowIfNull in a few more places (#70897)
stephentoub Jun 18, 2022
df822e7
Append the function pointer type (#70923)
AaronRobinsonMSFT Jun 18, 2022
e9175f4
[main] Update dependencies from dotnet/runtime dotnet/icu dotnet/xhar…
dotnet-maestro[bot] Jun 18, 2022
4adb117
Harden for null byrefs (#70317)
AaronRobinsonMSFT Jun 18, 2022
7a2cccd
Use u8 in a few more places (#70894)
stephentoub Jun 18, 2022
6dc9faa
Enable lib tests that used to fail with GC issues (#70831)
LakshanF Jun 18, 2022
9d0fcb5
Remove some dead code / branches (#70146)
stephentoub Jun 18, 2022
e771b5d
superpmi.py: Add `-jitoption` for asmdiffs (#70939)
BruceForstall Jun 18, 2022
c230ba6
EventLogException is missing the original win32 error code (#70629)
pedrobsaila Jun 19, 2022
656f909
Enable IDE0071 (Simplify interpolation) (#70918)
stephentoub Jun 19, 2022
8442a62
Enable IDE0100 (Remove redundant equality) (#70896)
stephentoub Jun 19, 2022
246d9bb
Enable IDE0065 (Misplaced using directive) (#70919)
stephentoub Jun 19, 2022
27182d4
Optimization for full range checks (#70145) (#70222)
SkiFoD Jun 19, 2022
7a039ff
Update C# compiler (#70947)
stephentoub Jun 19, 2022
b8d9a74
Allow ValueListBuilder to work with empty scratch spans (#70917)
stephentoub Jun 19, 2022
566de97
Enable IDE0030 (Use coalesce expression) (#70948)
stephentoub Jun 19, 2022
222d9e9
Do not reuse implicit byrefs for by-value args (#70955)
SingleAccretion Jun 19, 2022
3dc3eba
Enable `TYP_STRUCT` `LCL_VAR/LCL_FLD` call args on Windows x64 (#70777)
SingleAccretion Jun 19, 2022
61b5d61
Make SuperPMI more explicit about JIT in error messages (#70938)
BruceForstall Jun 20, 2022
2b0d0d1
Fix illumos-x64 build (#70956)
am11 Jun 20, 2022
1ec5ba5
Disable W^X on macOS under Rosetta emulation (#70912)
janvorli Jun 20, 2022
f00c8be
Add support for randomized guard stack cookies (#70806)
MichalStrehovsky Jun 20, 2022
12c1ead
Fixes #64159 - JsonSerializerContext source generation fails with key…
SteveDunn Jun 20, 2022
38794de
[main] Update dependencies from dotnet/arcade (#70662)
dotnet-maestro[bot] Jun 20, 2022
de170cc
Enable IDE0031 (Use null propagation) (#70965)
stephentoub Jun 20, 2022
b4df8db
Fix nullable annotations on MailAddress.TryCreate (#70943)
stephentoub Jun 20, 2022
38719c0
[QUIC] Removes abstract providers and mock from S.N.Quic (#70421)
ManickaP Jun 20, 2022
b9f899e
Stop wrapping SIMD nodes in OBJs (#70888)
SingleAccretion Jun 20, 2022
edd3597
Upstream coreclr and pal changes to support powerpc (ppc64le) archite…
vikasgupta8 Jun 20, 2022
6d80379
Collections contain stale object IDs (#70924)
AaronRobinsonMSFT Jun 20, 2022
807d091
Minor refactoring for `UpgradeToRegexGeneratorAnalyzer` (#70767)
Youssef1313 Jun 20, 2022
dc8fd68
Fix arm64 funclet frame type 5 (#70922)
BruceForstall Jun 20, 2022
df53937
Fix default log color behavior when console is redirected (#70504)
maryamariyan Jun 20, 2022
81cf5ad
JIT: Model string literal objects as invariant and non-GLOB_REF (#70986)
jakobbotsch Jun 20, 2022
18ec279
Add support for cross module inlining and cross module generic compil…
davidwrighton Jun 20, 2022
d6d28e4
Implement Vector128 version of System.Buffers.Text.Base64 DecodeFromU…
a74nh Jun 20, 2022
220ac84
Use `gtEffectiveVal` for `GT_ADD` op1 in `optCreateAssertion` (#70228)
TIHan Jun 20, 2022
eba3636
Convert fallback path of GetCommandLineArgs to managed (#70608)
huoyaoyuan Jun 20, 2022
96a7014
[wasm] Enabled WasmTestOnBrowser run on Windows for Browser. (#70890)
ilonatommy Jun 20, 2022
1070187
[wasm][debugger] Fix side effect on Firefox of getting bytes from loa…
thaystg Jun 20, 2022
e2cddab
Add AddSystemd() and AddWindowsService() IServiceCollection extension…
halter73 Jun 20, 2022
9876d8c
[main] Update dependencies from dotnet/runtime dotnet/xharness dotnet…
dotnet-maestro[bot] Jun 20, 2022
6be8d27
Windows/Arm64: Use 8.1 atomic instructions if they are available (#70…
kunalspathak Jun 20, 2022
19fcc31
Add ZipArchiveEntry.IsEncrypted for password-protection detection (#7…
jeffhandley Jun 20, 2022
715c71a
Exposing IRootFunctions.Hypot and IRootFunctions.Root (#71010)
tannergooding Jun 20, 2022
943da70
Add TarEntry conversion constructors (#70325)
carlossanlop Jun 21, 2022
87194f2
[wasm] Wasm.Build.Tests: disable tests failing on CI (#71020)
radical Jun 21, 2022
30bf66a
Remove allocation in ImmutableArray Builder Sort (#70850)
grbell-ms Jun 21, 2022
cb32ed3
[Android] Make sure AdditionalTimeZoneChecks trait is added to xunit-…
steveisok Jun 21, 2022
f1358d0
Use LastIndexOfAny in GetFileName_Windows (#71032)
stephentoub Jun 21, 2022
229502e
Avoid unnecessary allocations in SanitizeEntryFilePath (#71034)
stephentoub Jun 21, 2022
8a7930e
Fix Ordinal Ignore Case string compare (#71022)
tarekgh Jun 21, 2022
7ab7f83
Move allocation of command line argument array to C# (#71021)
jkotas Jun 21, 2022
20baea2
Add markdown readme for System.Reflection.MetadataLoadContext (#70610)
MSDN-WhiteKnight Jun 21, 2022
5889de5
set red zone size 512 for powerpc64. (#70885)
vikasgupta8 Jun 21, 2022
3b8a6f4
Ensure consistent reflectability for generic methods (#70977)
MichalStrehovsky Jun 21, 2022
79f6709
Implement NegotiateAuthentication API (#70720)
filipnavara Jun 21, 2022
ff57575
Fix IPAddress equality comparison in MsQuicListener (#70979)
rzikm Jun 21, 2022
f9999cc
Fix typo in GC_FORBID doc (#71050)
huoyaoyuan Jun 21, 2022
3affc68
[mono] Do not generate impossible instantiations for constrained gene…
ivanpovazan Jun 21, 2022
786ec9d
Switch to PREEMPT mode when calling CoTaskMem* APIs (#71031)
AaronRobinsonMSFT Jun 21, 2022
95138dd
JIT: fix loop alignment issue (#70936)
AndyAyersMS Jun 21, 2022
43be83a
JIT: Fix reordering of call args on x86 (#70931)
jakobbotsch Jun 21, 2022
ddb3c79
Simplify random GDV (#70980)
jakobbotsch Jun 21, 2022
d24bf09
Add missing call to initiate thread abort with CET (#71053)
janvorli Jun 21, 2022
bb17fb5
Enabling console logger queue length and mode to be configurable (#70…
maryamariyan Jun 21, 2022
99e58d5
Fix SIMD data overallocation (#71043)
BruceForstall Jun 21, 2022
ad8b979
fix: [Wasm] Add missing libicudata.a for native layout (#70682)
jeromelaban Jun 21, 2022
3684aa8
JIT: handle case where we are cloning adjacent sibling loops (#70874)
AndyAyersMS Jun 21, 2022
925e26e
JIT: avoid cloning mid-entry loops with multiple non-loop entry preds…
AndyAyersMS Jun 21, 2022
8fb75de
Fixed :scheme header for H/2 with PlaintextStreamFilter (#71057)
ManickaP Jun 21, 2022
c158591
[wasm] Migrate to ref/out param while reading data from typed array (…
maraf Jun 21, 2022
775a7ec
Renaming files because they don't reflect the IL code used in the tes…
thaystg Jun 21, 2022
89dc073
Revert "Add support for cross module inlining and cross module generi…
davidwrighton Jun 21, 2022
eed18af
Use crypto.subtle for HMAC on Browser WASM (#70745)
eerhardt Jun 21, 2022
8558cdc
Add CreateChained rate limiter API (#70739)
BrennanConroy Jun 21, 2022
18d7e39
[Mono] Fix C4018 warnings round II (#70783)
fanyang-mono Jun 21, 2022
ff4ae18
Enabled tests that were reported to fail but now pass. (#71077)
ilonatommy Jun 21, 2022
e40236a
[wasm][aot] Enable `DataContractSerializerTests.DCS_DerivedTypeWithDi…
ilonatommy Jun 21, 2022
058f83b
Align arm64 data section as requested (#71044)
BruceForstall Jun 21, 2022
46f53e3
[mono] Extend MonoAOTCompiler Task (#70851)
mdh1418 Jun 22, 2022
11b746a
Remove SString::UIndex and SString::UIterator as they are never used.…
jkoritzinsky Jun 22, 2022
ead19a3
Add idIsBound() check in emitDispJumpList() (#71086)
kunalspathak Jun 22, 2022
fdc3b51
Include all dlerror messages to DllNotFoundException (#70964)
HJLeee Jun 22, 2022
0f149b7
[HTTP/3] Try catch for unreachable host in AltSvc H/3 upgrade test (#…
ManickaP Jun 22, 2022
3282677
[main] Update dependencies from dotnet/linker (#70614)
dotnet-maestro[bot] Jun 22, 2022
2a680c1
[mono] Fix SpanHelpers.Reverse regression (#70650)
BrzVlad Jun 22, 2022
93f46d2
Mark simple.il and nested.il ilasm/ildasm roundtrip incompatible (#71…
jakobbotsch Jun 22, 2022
305144e
Make GC Stress 4/8 work with CET (#71085)
janvorli Jun 22, 2022
250e1b0
Base64 library tests: use full encoding map (#71006)
a74nh Jun 22, 2022
c78fffd
[main] Update dependencies from dotnet/xharness (#71051)
dotnet-maestro[bot] Jun 22, 2022
1de38da
Delete duplicate helper in HttpConnection.cs (#71091)
stephentoub Jun 22, 2022
dbc7d8c
Use SequenceEqual in SslCredKey.Equals (#71097)
stephentoub Jun 22, 2022
9b4f152
Simplify and improve SocketAddress.Equals (#71090)
stephentoub Jun 22, 2022
604681a
Enable `TYP_STRUCT` `LCL_VAR/LCL_FLD` call args on x86 (#70779)
SingleAccretion Jun 22, 2022
4dc676f
Delete SegmentCommandLine from utilcode (#71111)
jkotas Jun 22, 2022
51b904b
Delete the Unix x64 implicit byref quirk (#70961)
SingleAccretion Jun 22, 2022
202f0af
Sort ConstrainedDirectCall cells (#71121)
MichalStrehovsky Jun 22, 2022
fc813dd
Allow guessing canonical owning type instantiations (#71120)
MichalStrehovsky Jun 22, 2022
7e46936
Fix test failure in Apple OSs due to paths too long and using Ustar w…
carlossanlop Jun 22, 2022
b1839d3
Reduce allocations parsing X.509 certificates on Windows
vcsjones Jun 22, 2022
d3f7e01
Implement Tar Global Extended Attributes API changes (#70869)
carlossanlop Jun 22, 2022
1ef5515
Normalize Watson crash buckets between .NET Core/.NET Framework (#71107)
mikem8361 Jun 22, 2022
6212eab
[mono][debugger] Support new hot reload features from runtime (#70697)
thaystg Jun 22, 2022
c9007c8
Bump Newtonsoft.Json in /src/installer/tests/TestUtils (#71142)
dependabot[bot] Jun 22, 2022
c1d4494
Print LARGEJMP instruction on ARM64 (#71094)
Jun 22, 2022
de078d1
Avoid delegate allocation in TraceSourceLoggerProvider.GetOrAddTraceS…
stephentoub Jun 22, 2022
897b2a3
JSON contract customization (#70435)
krwq Jun 22, 2022
6258ee5
JIT: Stop reordering arguments throwing distinct exceptions (#70893)
jakobbotsch Jun 22, 2022
4388cc5
VM: Better strategy for TryReserveInitialMemory on arm64 (jump stubs)…
EgorBo Jun 22, 2022
f20a046
Add exception interop test for validating native exception interop on…
jkoritzinsky Jun 22, 2022
f310367
Fix ILGenerator maxstack computation (#70388)
panguye Jun 22, 2022
bc1a872
Enable fake hot/cold splitting on ARM64 (#70708)
Jun 22, 2022
9d3f060
Simplify NtProcessInfoHelper.GetProcessShortName (#71136)
stephentoub Jun 22, 2022
0855da7
Exposing AcosPi, AsinPi, Atan2Pi, AtanPi, CosPi, SinPi, and TanPi for…
tannergooding Jun 22, 2022
b02729b
Add tests for `IMallocSpy` (#71106)
AaronRobinsonMSFT Jun 22, 2022
78a2627
Work around for UriFormatException caused by \\?\ prefix in the path …
buyaa-n Jun 22, 2022
9bb393c
Make RateLimitPartition.Factory public (#71145)
wtgodbe Jun 22, 2022
53cfcf3
Bump Newtonsoft.Json from 9.0.1 to 13.0.1 in /src/tests/ilverify (#71…
dependabot[bot] Jun 22, 2022
9b6ce5c
[iOS][Android] Fix crash in Exception.CaptureDispatchState (#70970)
steveisok Jun 22, 2022
08c0ea1
Fix the heuristics for L3 cache size for Arm64 (#71029)
kunalspathak Jun 22, 2022
ccf1257
Fix the handling of UInt128.DivideSlow on big endian platforms (#71162)
tannergooding Jun 22, 2022
315e931
Fix Native Digits Support (#71045)
tarekgh Jun 22, 2022
f4cf69e
[LibraryImportGenerator] Basic stateless value marshaller support (#7…
elinor-fung Jun 22, 2022
9616b57
NextObj fix (#71113)
Maoni0 Jun 22, 2022
df3bd55
Fix for issue 70385 (stack overflow in the CoreCLR runtime during SVM…
trylek Jun 22, 2022
70e9ca0
Fix Tar timestamp conversion from/to string and DateTimeOffset (#71038)
carlossanlop Jun 23, 2022
982946a
Use IndexOfAny in HttpListener.HandleAuthentication (#71137)
stephentoub Jun 23, 2022
d17741d
Change SString::GetUTF8NoConvert to GetUTF8 that converts the SString…
jkoritzinsky Jun 23, 2022
95d64e8
JIT: arm64 osr funclet frame probing (#70916)
AndyAyersMS Jun 23, 2022
70df1f5
Mirror Microsoft.Diagnostics.NETCore.Client (#71139)
hoyosjs Jun 23, 2022
9e8c7a8
Update design docs to reflect our new marshaller design from partner …
jkoritzinsky Jun 23, 2022
ddc4f95
Implement UnixFileMode APIs (#69980)
tmds Jun 23, 2022
a73c582
Update apphost error dialog text to put question last (#71165)
elinor-fung Jun 23, 2022
05ae801
[NativeAOT] Enable dynamic linking of ucrt for release runtime (#71182)
jkotas Jun 23, 2022
af9b7e7
Merge remote-tracking branch 'origin/main' into issue-20234
tmds Jun 23, 2022
edf948e
Fix Unix test failures.
tmds Jun 23, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
]
},
"microsoft.dotnet.xharness.cli": {
"version": "1.0.0-prerelease.22305.1",
"version": "1.0.0-prerelease.22320.3",
"commands": [
"xharness"
]
Expand Down
1 change: 1 addition & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 'arm64'">arm64</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 'loongarch64'">loongarch64</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 's390x'">s390x</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 'ppc64le'">ppc64le</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and ('$(TargetOS)' == 'Browser' or '$(RuntimeIdentifier)' == 'browser-wasm')">wasm</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(TargetsMobile)' == 'true'">x64</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == ''">x64</TargetArchitecture>
Expand Down
37 changes: 37 additions & 0 deletions THIRD-PARTY-NOTICES.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -1099,3 +1099,40 @@ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

License notice for code from The Practice of Programming
-------------------------------

Copyright (C) 1999 Lucent Technologies

Excerpted from 'The Practice of Programming
by Brian W. Kernighan and Rob Pike

You may use this code for any purpose, as long as you leave the copyright notice and book citation attached.

License notice for amd/aocl-libm-ose
-------------------------------

Copyright (C) 2008-2020 Advanced Micro Devices, Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
2 changes: 1 addition & 1 deletion docs/coding-guidelines/clr-code-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ A GC_NOTRIGGER function cannot:

[1] With one exception: GCX_COOP (which effects a preemp->coop->preemp roundtrip) is permitted. The rationale is that GCX_COOP becomes a NOP if the thread was cooperative to begin with so it's safe to allow this (and necessary to avoid some awkward code in our product.)

**Note that for GC to be truly prevented, the caller must also ensure that the thread is in cooperative mode.** Otherwise, all the precautions above are in vain since any other thread can start a GC at any time. Given that, you might be wondering why cooperative mode is not part of the definition of GC_NOTRIGGER. In fact, there is a third thread state called GC_FORBID which is exactly that: GC_TRIGGERS plus forced cooperative mode. As its name implies, GC_FORBID _guarantees_ that no GC will occur on any thread.
**Note that for GC to be truly prevented, the caller must also ensure that the thread is in cooperative mode.** Otherwise, all the precautions above are in vain since any other thread can start a GC at any time. Given that, you might be wondering why cooperative mode is not part of the definition of GC_NOTRIGGER. In fact, there is a third thread state called GC_FORBID which is exactly that: GC_NOTRIGGER plus forced cooperative mode. As its name implies, GC_FORBID _guarantees_ that no GC will occur on any thread.

Why do we use GC_NOTRIGGERS rather than GC_FORBID? Because forcing every function to choose between GC_TRIGGERS and GC_FORBID is too inflexible given that some callers don't actually care about GC. Consider a simple class member function that returns the value of a field. How should it be declared? If you choose GC_TRIGGERS, then the function cannot be legally called from a GC_NOTRIGGER function even though this is perfectly safe. If you choose GC_FORBID, then every caller must switch to cooperative mode to invoke the function just to prevent an assert. Thus, GC_NOTRIGGER was created as a middle ground and has become far more pervasive and useful than GC_FORBID. Callers who actually need GC stopped will have put themselves in cooperative mode anyway and in those cases, GC_NOTRIGGER actually becomes GC_FORBID. Callers who don't care can just call the function and not worry about modes.

Expand Down
253 changes: 253 additions & 0 deletions docs/coding-guidelines/mono-code-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
# Mono code guidelines

This document is meant to capture guidelines for contributing code to
the [src/mono/mono/](../../src/mono/mono),
[src/native/public/mono](../../src/native/public/mono) areas of the
dotnet/runtime repo.

In general this guide does not apply to:

1. Shared native code in [src/native](../../src/native)
2. The Mono-specific C# code in [src/mono](../../src/mono) in System.Private.CoreLib or elsewhere

## Code style

Mono is written in C.

We follow the [Mono Coding guidelines](https://www.mono-project.com/community/contributing/coding-guidelines/) for the C code - in particular:

* tabs, not spaces
* space between a function name and the open parenthesis
* braces on the same line as `if`, `for`, `while` etc

## Naming

Mono reserves the following prefixes for symbols: `mono_`, `monovm_`, `m_`, `monoeg_` (used to remap [`eglib`](../../src/mono/mono/eglib)
functions which in source code have a `g_` prefix).

All non-`static` symbols should use one of these prefixes. We generally use `mono_` for most
functions. `m_` is used for some inline accessor functions and macros. `g_` (`mono_eg_`) is used
for `eglib` functions.

Types in a single C file can use any name. Types in a header should use a `Mono` (or sometimes
`mono_`) prefix.

Public API symbols and types *must* be prefixed.

For types Mono generally uses `typedef struct _MonoWhatever { ... } MonoWhatever`. Opaque types may
define `typedef struct _MonoWhatever MonoWhatever` in a client header and define `struct
_MonoWhatever {...}` in an implementation header. Occasionally we break `#include` cycles by adding
forward declarations for some types.

## Macros

Mono derives from an autotools-style project so we generally write `HOST_XYZ` for the machine on
which the runtime is executing (as opposed to the machine on which the runtime was compiled), and
`TARGET_XYZ` for the machine that will be targeted by the JIT and AOT compilers. In the case of AOT
compilation host and target might be different: the host might be Windows, and the target might be
Browser WebAssembly, for example.

Macros generally use a `MONO_` prefix. Macros in public API headers *must* use the prefix.

## Types

Prefer the standard C sized types `int32_t`, `intptr_t`, etc over the eglib types `gint32`, `gsize` etc.

One exception is `gboolean` is prefered over C `bool`.

There are actually three boolean types to keep in mind:

* `gboolean` used internally in the runtime
* `MonoBoolean` used as an interop type with C# bool in internal calls
* `mono_bool` used by the public C API - generally new code shouldn't use it except when adding a new public API function.

## Utility and platform abstraction functions

Mono generally tries to fill in POSIX-like abstractions on platforms that lack them (for example, Windows).
This is in contrast to the CoreCLR PAL which generally tries to add Windows API abstractions on top
of POSIX.

If an existing `eglib` utility function is available, it should be used. New ones can be added.

Other platform specific code is in `src/mono/utils`

## Directory dependencies

For the code in `src/mono/mono`:

* `eglib` should not depend on other code from `src/mono`

* `utils` can depend on `eglib` and 3rd party code from `src/native/external`

* `sgen` depends on `eglib` and `utils`

* `metadata` depends on all of the above (but note that some Boehm-GC files in this directory should not depend on `sgen`)

* `mini` depends on all of the above

* `mini/interp` depends on all of the above

* `components` can use functions from all of the above provided they're marked with
`MONO_COMPONENT_API`, see [../design/mono/components.md](../design/mono/components.md)

The main distinction between `metadata` and `utils` is that utils code should not assume that it is
part of an executing .NET runtime - anything that loads types, creates objects, etc does not belong
in utils but in metadata.

The `mini` directory contains execution engines. If the execution engine has to provide some
functionality to `metadata` it generally does so by installing some callback that is invoked by
`metadata`. For example, `mini` knows how to unwind exceptions and perform stack walks - while
`metadata` decides *when* to unwind or perform a stackwalk. To coordinate, `metadata` exposes an
API to install hooks and `mini` provides the implementations.

## Error handling

New code should prefer to use the `MonoError` functions.

* A non-public-API function should take a `MonoError *` argument.
* In case of an error the function should call one of the `mono_error_set_` functions from [../../src/mono/mono/utils/mono-error-internals.h](../../src/mono/mono/utils/mono-error-internals.h)
* Inside the runtime check whether there was an error by calling `is_ok (error)`, `mono_error_assert_ok (error)`, `goto_if_nok` or `return_if_nok`/`return_val_if_nok`
* If there is an error and you're handling it, call `mono_error_cleanup (error)` to dispose of the resources.
* `MonoError*` is generally one-shot: after it's been cleaned up it needs to be re-inited with `mono_error_init_reuse`, but this is discouraged.
* Instead if you intend to deal with an error, use `ERROR_DECL (local_error)` then call the
possibly-failing function and pass it `local_error`, then call `mono_error_assert_ok
(local_error)` if it "can't fail" or `mono_error_cleanup (local_error)` if you want to ignore the
failure.

## Managed Exceptions

New code should generally not deal with `MonoException*`, use `MonoError*` instead.

New code should avoid using `mono_error_set_pending_exception` - it affects a thread-local flag in
a way that is not obvious to the caller of your function and may trample existing in-flight
exceptions and make your code fail in unexpected ways.

There are two circumstances when you might need to call `mono_error_set_pending_exception`:

1. You're working with a public Mono API that sets a pending exception
2. You're implementing an icall, but can't use `HANDLES()` (see the [internal calls](#internal-calls) section below)

## Internal calls

Prefer P/Invokes or QCalls over internal calls. That is, if your function only takes arguments that
are not managed objects, and does not need to interact with the runtime, it is better to define it
outside the runtime.

Internal calls generally have at least one argument that is a managed object, or may throw a managed exception.

Internal calls are declared in [`icall-def.h`](../../src/mono/mono/metadata/icall-def.h) See the comment in the header for details.

There are two styles of internal calls: `NOHANDLES` and `HANDLES`. (This is a simplification as there
are also JIT internal calls added by the execution engines)

The difference is that `HANDLES` icalls receive references to managed objects wrapped in a handle
that attempts to keep the object alive for the duration of the internal call even if the thread
blocks or is suspended, while `NOHANDLES` functions don't. Additionally `HANDLES` functions get a
`MonoError*` argument from the managed-to-native interop layer that will be converted to a managed
exception when the function returns. `NOHANDLES` functions generally have to call
`mono_error_set_pending_exception` themselves.

## Suspend Safety

See [Cooperative Suspend at mono-project.com](https://www.mono-project.com/docs/advanced/runtime/docs/coop-suspend/) and the [mono thread state machine design document](../design/mono/mono-thread-state-machine.md)

In general runtime functions that may be called from the public Mono API should call
`MONO_ENTER_GC_UNSAFE`/`MONO_EXIT_GC_UNSAFE` if they call any other runtime API. Internal calls are
already in GC Unsafe on entry, but QCalls and P/Invokes aren't.

When calling a blocking native API, wrap the call in `MONO_ENTER_GC_SAFE`/`MONO_EXIT_GC_SAFE`.

Prefer `mono_coop_` synchronization primitives (`MonoCoopMutex`, `MonoCoopCond`,
`MonoCoopSemaphore`, etc) over `mono_os_` primitives (`mono_mutex_t`, `mono_cond_t`). The former
will automatically go into GC Safe mode before doing operations that may block. The latter should
only be used for low-level leaf locks that may need to be shared with non-runtime code. You're
responsible for switching to GC Safe mode when doing blocking operations in that case.

## GC Memory Safety

We have explored many different policies on how to safely access managed memory from the runtime. The existing code is not uniform.

This is the current policy (but check with a team member as this document may need to be updated):

1. It is never ok to access a managed object from GC Safe code.
2. Mono's GC scans the managed heap precisely. Mono does not allow heap objects to contain pointers into the interior of other managed obejcts.
3. Mono's GC scans the native stack conservatively: any value that looks like a pointer into the GC
heap, will cause the target object to be pinned and not collected. Interior pointers from the
stack into the middle of a managed object are allowed and will pin the object.

In general one of the following should be used to ensure that an object is kept alive, particularly
across a call back into managed from native, or across a call that may trigger a GC (effectively
nearly any runtime internal API, due to assembly loading potentially triggering managed callbacks):

* The object is pinned in managed code using `fixed` (common with strings) and the native code gets a `gunichar2*`
* a `ref` local is passed into native code and the native code gets a `MonoObject * volatile *` (the `volatile` is important)
* a `Span<T>` is passed into native code and the native code gets a `MonoSpanOfObjects*`
* an icall is declared with `HANDLES()` and a `MonoObjectHandle` (or a more specific type such as `MonoReflectionTypeHandle` is passed in).
* a GCHandle is passed in

Generally only functions on the boundary between managed and native should use one of the above
mechanisms (that is, it's enough that an object is pinned once). Callees can take a `MonoObject*`
argument and assume that it was pinned by the caller.

In cases where an object is created in native code, it should be kept alive:

1. By assigning into a `MonoObject * volatile *` (ie: use `out` or `ref` arguments in C#)
2. By creating a local handle using `MONO_HANDLE_NEW` or `MONO_HANDLE_PIN` (the function should then use `HANDLE_FUNCTION_ENTER`/`HANDLE_FUNCTION_RETURN` to set up and tear down a handle frame)
3. By creating a GCHandle
4. By assigning to a field of another managed object

In all cases, if there is any intervening internal API call or a call to managed code, the object
must be kept alive before the call using one of the above methods.

### Write barriers

When writing a managed object to a field of another managed object, use one of the
`mono_gc_wbarrier_` functions (for example, `mono_gc_wbarrier_generic_store`). It is ok to call the write
barrier functions if the destination is not in the managed heap (in which case they will just do a normal write)

## Assertions

Mono code should use `g_assert`, `mono_error_assert_ok`, `g_assertf`, `g_assert_not_reached` etc.

Unlike CoreCLR, Mono assertions are always included in the runtime - both in Debug and in Release builds.

New code should try not to rely on the side-effects of assert conditions. (That is, one day we may want
to turn off assertions in Release builds.)

## Mono Public API

Mono maintains a public API for projects that embed the Mono runtime in order to provide the ability
to execute .NET code in the context of another application or framework. The current Mono API is
`mono-2.0`. We strive to maintain binary ABI and API stability for our embedders.

The public API headers are defined in
[`../../src/native/public/mono`](../../src/native/public/mono). Great care should be taken when
modifying any of the functions declared in these headers. In particular breaking the ABI by
removing these functions or changing their arguments is not allowed. Semantic changes should be
avoided, or implemented in a way that is least disruptive to embedders (for example the runtime does
not support multiple appdomains anymore, but `mono_domain_get` continues to work).

### Hidden API functions

In practice certain functions have been tagged with `MONO_API` even if they are not declared in the
public headers. These symbols have been used by projects that embed Mono despite not being in the
public headers. They should be treated with the same care as the real public API.

### Unstable API functions

Functions declared in `mono-private-unstable.h` headers do not need to maintain API/ABI stability.
They are generally new APIs that have been added since .NET 5 but that have not been stabilized yet.

As a matter of courtesy, notify the .NET macios and .NET Android teams if changing the behavior of these functions.

### WASM

The WASM and WASI runtimes in [`src/mono/wasm/runtime`](../../src/mono/wasm/runtime) and
`src/mono/wasi` are effectively external API clients. When possible they should use existing `MONO_API` functions.

As a matter of expedience, the wasm project has sometimes taken advantage of static linking by
adding declarations of internal Mono functions in `src/mono/wasm/runtime/driver.c` and directly
calling Mono internals.

In general new code should not do this. When modifying existing code, mysterious WASM failures may
be attributed to symbol signature mismatches between WASM and the Mono runtime.
Loading