Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: dotnet/runtime
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: c1cb9098
Choose a base ref
...
head repository: dotnet/runtime
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: fbf6be54
Choose a head ref
  • 7 commits
  • 80 files changed
  • 11 contributors

Commits on Feb 14, 2026

  1. Configuration menu
    Copy the full SHA
    1be8120 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    50e7fbb View commit details
    Browse the repository at this point in the history
  3. [Wasm RyuJit] More codegen and fixes for crossgen replay (#124362)

    Implement codegen for
    * GT_INDEX_ADDR (no bounds check case)
    * GT_LEA
    * GT_MEMORYBARRIER (no-op)
    * GT_RETFILT
    
    Add an SPMI workaround for type symbol lookup.
    
    Relax some checks that assume try regions remain contiguous.
    AndyAyersMS authored Feb 14, 2026
    Configuration menu
    Copy the full SHA
    1969a31 View commit details
    Browse the repository at this point in the history
  4. [Wasm RyuJit] Wasm abi classifier (#123515)

    Add host (vm, crossgen) logic to classify structs per the Wasm Basic C
    ABI.
    
    Add calls in the JIT when targeting Wasm; also add extra calls under
    SPMI when not targeting Wasm, so we can continue to use cross-jitting to
    help test Wasm bring-up.
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    AndyAyersMS and Copilot authored Feb 14, 2026
    Configuration menu
    Copy the full SHA
    be15f85 View commit details
    Browse the repository at this point in the history

Commits on Feb 15, 2026

  1. Support ISO 8601 24:00 (end-of-day) in DateTime/DateTimeOffset/TimeOn…

    …ly parsing (#124142)
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: jeffhandley <1031940+jeffhandley@users.noreply.github.com>
    Co-authored-by: tarekgh <10833894+tarekgh@users.noreply.github.com>
    Co-authored-by: Stephen Toub <stoub@microsoft.com>
    Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    6 people authored Feb 15, 2026
    Configuration menu
    Copy the full SHA
    cde2bcd View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    67eb8c0 View commit details
    Browse the repository at this point in the history
  3. A few fixes in the threadpool semaphore. Unify Windows/Unix implement…

    …ation of LIFO policy. (#123921)
    
    Re: #123159
    
    Changes:
    - Correctly handle `Backoff.Exponential(0)`. 
    
    Embarrassing bug.  
    To get exponentially growing random spin count for an iteration we
    generate pseudorandom `uint` and do `>> (32 - attempt)`. Since C# masks
    the shift operand with 31, when `attempt==0` we end up not shifting at
    all, and the first iteration gets a large random spin count.
    That caused many noisy results and interestingly some improvements (in
    scenarios that benefit from very long spins).
    
    - Unified implementation of LIFO policy with lightweight minimal
    implementation of LIFO waiting.
    
    Once we are done spinning, we block threads and when workers are needed
    again wake them in LIFO order.
    
    Unix WaitSubsystem is pretty heavy for these needs. It supports
    Interruptible waits, waiting on multiple objects, etc... None of that is
    interesting here. Most calls into the subsystem take a global
    process-wide lock which can contend under load with other uses, or a
    worker-waking threads may contend with the workers going to sleep,
    etc...
    
    Windows used an opaque `GetQueuedCompletionStatus` for the side effect
    of releasing threads in LIFO order when completion is posted, with
    unknown overheads and interactions, even though typically it is more
    efficient than Unix WaitSubsystem.
    
    The portable implementation seems to be faster than either of the
    platform-specific ones.
    (measured by disabling spinning and running a few latency-sensitive
    benchmarks).
    
    The portable implementation is also easier to reason about and to debug
    anomalies.
    
    - Adaptive spinning in the threadpool based on estimates of CPU core
    availability.
    
    Spinning in threadpool is very tricky and spinning benefits differ
    greatly between scenarios. For some scenarios the longer the spin the
    better. But there are scenarios that benefit when the threadpool
    releases cores quickly once it sees no work. No preset fixed spin count
    is going to be good for everything.
    
    Adaptive approach appears to be necessary to improve some scenarios
    without regressing many others.
    We can further improve the heuristic, if there are more ideas.
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Jan Kotas <jkotas@microsoft.com>
    3 people authored Feb 15, 2026
    Configuration menu
    Copy the full SHA
    fbf6be5 View commit details
    Browse the repository at this point in the history
Loading