Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
15fff46
docs
majocha Aug 8, 2026
0cc2108
feature
majocha Aug 8, 2026
719d00f
tests
majocha Aug 8, 2026
f9bb483
surface area
majocha Aug 8, 2026
dfe4109
rns
majocha Aug 8, 2026
b06dd3d
merge main
majocha Aug 8, 2026
e4eb267
translations
majocha Aug 8, 2026
38578d4
add pr numbers
majocha Aug 8, 2026
caaad4d
Restore F# 11.0 feature registrations dropped when adding RuntimeAsyn…
majocha Aug 8, 2026
48d1691
surface area
majocha Aug 8, 2026
eb32d05
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 13, 2026
1961943
test: runtime-async edge-case suite (runtime behavior + emitted IL)
T-Gro Aug 13, 2026
31889ba
Make composed runtime-async exhibits self-prove the async impl flag
T-Gro Aug 13, 2026
d29dc42
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 20, 2026
ca0ca40
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 20, 2026
6f8cadc
restrict to net10, rename to __runtimeAsyncReturn
majocha Aug 20, 2026
d5bd674
ns surfacearea
majocha Aug 21, 2026
19117fe
Merge branch 'runtime-async-edge-tests' of https://github.com/T-Gro/f…
majocha Aug 21, 2026
5154fa9
adjust edge case tests to name change and net10 FSharp.Core
majocha Aug 21, 2026
b645d98
rewrite runtime async exception handling blocks during optimization
majocha Aug 21, 2026
d50c33c
fix surface area
majocha Aug 21, 2026
b9f9ef9
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 21, 2026
27944e7
surf
majocha Aug 22, 2026
1d6f3b8
do not emit .tail in runtime async methods
majocha Aug 22, 2026
7738664
error on AsyncHelpers use outside of async method
majocha Aug 22, 2026
6f2338d
add non-preservable-value diagnostics
majocha Aug 22, 2026
25e87ba
make it work in debug
majocha Aug 22, 2026
34060f9
fix regressed
majocha Aug 23, 2026
a88067d
fix diag codes
majocha Aug 24, 2026
434723c
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 24, 2026
13be6c9
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 24, 2026
f0eb291
refactor and fix non preservables analysis
majocha Aug 24, 2026
4a46435
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 24, 2026
bbdab2b
refactor
majocha Aug 24, 2026
13040a9
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 25, 2026
54e5f81
handle the rest of supported types
majocha Aug 26, 2026
48eb5c3
Merge branch 'runtime-async-intrinsic' of https://github.com/majocha/…
majocha Aug 26, 2026
74f02b6
add to surface area
majocha Aug 26, 2026
096b2c1
use active pattern
majocha Aug 26, 2026
3cd6164
simplify
majocha Aug 26, 2026
cf3187b
simplify
majocha Aug 26, 2026
398ad53
update to supporting ildasm version
majocha Aug 26, 2026
e1a6a5c
handle local mutables
majocha Aug 26, 2026
3a0b2b9
Revert "update to supporting ildasm version"
majocha Aug 26, 2026
31aff2e
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 26, 2026
a9b9311
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 26, 2026
039e88b
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 26, 2026
8ca1f2e
add some IAsyncEnumerable tests
majocha Aug 26, 2026
51705d9
test basic AsyncLocal propagation
majocha Aug 26, 2026
eb3b18c
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 27, 2026
d6f1bad
format fixture and some cleanup
majocha Aug 28, 2026
9f2989c
Merge branch 'main' into runtime-async-intrinsic
majocha Aug 30, 2026
8880d1e
Refactor runtime async optimizer helpers
majocha Aug 30, 2026
a97213c
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 1, 2026
b14385a
Fix runtime async fragment fusion
majocha Sep 1, 2026
3ca8b3d
Synchronize runtime async documentation
majocha Sep 1, 2026
73002de
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 1, 2026
e999079
fix merge
majocha Sep 1, 2026
f32ef09
add sample asyncSeq builder
majocha Sep 1, 2026
5fd7474
Fix runtime async lambda fragment fusion
majocha Sep 1, 2026
925558c
Fix no-opt runtime async recursive inlining
majocha Sep 2, 2026
0584823
Refactor runtime async boundary analysis
majocha Sep 2, 2026
93066e7
Add runtime async module signatures
majocha Sep 2, 2026
2aafc4b
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 2, 2026
bf4fdf9
reenable more ported tests
majocha Sep 2, 2026
ef91fb3
reduce diff
majocha Sep 2, 2026
2ce231a
refactor
majocha Sep 2, 2026
65454ab
format
majocha Sep 2, 2026
bc8e74c
update doc
majocha Sep 2, 2026
6f58b8f
cleanup
majocha Sep 3, 2026
52deaff
improve debug stepping
majocha Sep 3, 2026
e33dabe
merge main
majocha Sep 7, 2026
d2d7555
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 7, 2026
97bfa0e
icrease pool size brcause for debug runs
majocha Sep 8, 2026
24e3f3f
add failing code to test fixture
majocha Sep 8, 2026
c0d0299
disalow runtime async fragments in ComputeSplitToMethodCondition
majocha Sep 8, 2026
9d0fae8
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 9, 2026
b2df986
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 9, 2026
66723c2
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 9, 2026
dac7883
update surface
majocha Sep 9, 2026
866a169
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 9, 2026
382ae42
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 10, 2026
8c9cc48
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 10, 2026
6fa01aa
review: add failing test cases
majocha Sep 11, 2026
004f393
update debug surface area
majocha Sep 11, 2026
0f4e602
address review
majocha Sep 11, 2026
808d9e6
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 11, 2026
d2ab578
cleanup test RuntimeTaskBuilder
majocha Sep 13, 2026
9899f00
update test baselines
majocha Sep 13, 2026
b004333
cleanup
majocha Sep 14, 2026
7ec8207
Synchronize Debug Core surface baseline
Sep 14, 2026
a819910
Prototype direct runtime-async sequences
Sep 14, 2026
ecb965d
Avoid forcing no-inlining on runtime async methods
majocha Sep 14, 2026
d9bec0f
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 14, 2026
45f19a8
Prevent cross-assembly inlining of runtime async methods
majocha Sep 15, 2026
4dd3acc
Remove redundant runtime async compiler attribute
majocha Sep 15, 2026
9aa1db3
Remove avoidable runtime-async sequence overhead
Sep 15, 2026
87fccf8
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 15, 2026
2392cfd
merge built-in asyncSeq
majocha Sep 15, 2026
86d9b9c
add review-based test cases
majocha Sep 15, 2026
8ba10fc
fix reraise in eh rewrite
majocha Sep 15, 2026
4ee7f96
Gate piped runtime async intrinsics
majocha Sep 15, 2026
8315f6e
Fix runtime async gating without optimization
majocha Sep 15, 2026
d843387
Merge remote-tracking branch 'dotnet/main' into runtime-async-intrinsic
majocha Sep 16, 2026
a49a5a8
Update runtime async diagnostic test codes
majocha Sep 16, 2026
93d458a
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 16, 2026
12a54cf
merge main
majocha Sep 16, 2026
9bc229d
Restore runtime feature gating after merge
majocha Sep 16, 2026
79a7af3
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 16, 2026
02f1bb5
fixup isPinning in non-local inline exprs
majocha Sep 17, 2026
7201935
refactor pinning restoration
majocha Sep 17, 2026
9377bfa
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 17, 2026
21d27f2
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 17, 2026
d455dd0
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 17, 2026
d0c25d0
fix ValFlags collision after merge
majocha Sep 17, 2026
13500e3
surface area
majocha Sep 17, 2026
87688ee
fill in missing async sequence pieces
majocha Sep 18, 2026
3d3fd03
reoptimize synthetic debug pipe inputs
majocha Sep 18, 2026
4f3bd9a
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 18, 2026
394a618
add failing test cases
majocha Sep 18, 2026
6568e9d
fix eh rewrite
majocha Sep 18, 2026
2284188
fix object expr issue
majocha Sep 18, 2026
8dc74c4
skip one test
majocha Sep 18, 2026
45c0a40
Merge branch 'main' into runtime-async-intrinsic
majocha Sep 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Welcome to [the F# compiler and tools repository](https://github.com/dotnet/fsha
* [Memory usage](memory-usage.md)
* [Optimizations](optimizations.md)
* [Equality optimizations](optimizations-equality.md)
* [Runtime async](runtime-async.md)
* [Project builds](project-builds.md)
* [Tooling features](tooling-features.md)

Expand Down
2 changes: 2 additions & 0 deletions docs/release-notes/.FSharp.Compiler.Service/11.0.100.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@
* Added warning FS3884 when a function or delegate value is used as an interpolated string argument. ([PR #19289](https://github.com/dotnet/fsharp/pull/19289))
* Symbols: add ObsoleteDiagnosticInfo ([PR #19359](https://github.com/dotnet/fsharp/pull/19359))
* FCS: add FSharpCheckFileResults.HasErrors ([PR #19892](https://github.com/dotnet/fsharp/pull/19892))
* Add preview compiler support for runtime-async `Task<'T>` methods through the `__runtimeAsyncReturn` intrinsic, including carrier validation, target-runtime capability checks, diagnostics for suspension calls outside runtime-async methods, diagnostics for byref, byref-like, or pinned values used after suspension, and recursive specialization of inline suspension fragments when optimization is disabled. ([PR #20235](https://github.com/dotnet/fsharp/pull/20235))
* Add `#version;;` directive to F# Interactive to display version and environment information. ([Issue #13307](https://github.com/dotnet/fsharp/issues/13307), [PR #19332](https://github.com/dotnet/fsharp/pull/19332))
* Add diagnostic FS3889 when a namespace and a type have the same fully-qualified name in the same assembly, replacing the misleading FS0247 "namespace and a module" error. ([Issue #17827](https://github.com/dotnet/fsharp/issues/17827), [PR #19802](https://github.com/dotnet/fsharp/pull/19802))
* Debug: rework for expressions stepping ([PR #19894](https://github.com/dotnet/fsharp/pull/19894))
Expand All @@ -191,6 +192,7 @@
* Add internal hot reload baseline reading for recorded EnC state and synthesized-name snapshot PDB data. ([PR #20026](https://github.com/dotnet/fsharp/pull/20026))
* Support for the `<include>` XML documentation tag: at compile time, documentation is copied from an external XML file selected by an XPath query and emitted into the generated documentation file. `<inheritdoc>` remains unsupported. ([Issue #19175](https://github.com/dotnet/fsharp/issues/19175), [PR #19186](https://github.com/dotnet/fsharp/pull/19186))
* Expand `<inheritdoc/>` at tooling time. In IDE tooltips, completion, and signature help, documentation is inherited from base classes, interfaces, overridden members, and constructors (matched by parameter signature). The FCS Symbols API (`FSharpSymbol.XmlDoc`) additionally resolves explicit `cref` targets, but does not expand constructor inheritance. The compiler emits the tag verbatim into generated XML documentation files, matching C#; `<include>` is not implemented. ([Issue #19175](https://github.com/dotnet/fsharp/issues/19175), [PR #19188](https://github.com/dotnet/fsharp/pull/19188))
* Prototype direct runtime-async sequences from statically known inline recipes, with asynchronous cleanup, direct interface dispatch, and preserved runtime call-await fusion.
* Add symbol and type highlighting to F# diagnostics ([PR #20097](https://github.com/dotnet/fsharp/pull/20097))
* IL: hold custom attributes in fields rather than a union case ([PR #20287](https://github.com/dotnet/fsharp/pull/20287))
* IL: reuse the cached ILTypeRef in ILTypeInfo.FromType ([PR #20255](https://github.com/dotnet/fsharp/pull/20255))
Expand Down
2 changes: 2 additions & 0 deletions docs/release-notes/.FSharp.Core/11.0.100.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

### Added

* Add the compiler-recognized `StateMachineHelpers.__runtimeAsyncReturn` intrinsic to the `net10.0` FSharp.Core target for .NET runtime-async methods. ([PR #20235](https://github.com/dotnet/fsharp/pull/20235))
* Add `Unchecked.withNull`, an interop escape hatch that re-types any `'T` to `'T | null` without the usual `not null`/`not struct` constraints, so unconstrained C# nullable-generic APIs (e.g. `T? M<T>()`) can be implemented and consumed from F#. ([Issue #17734](https://github.com/dotnet/fsharp/issues/17734), [PR #20232](https://github.com/dotnet/fsharp/pull/20232))
* Added generic `print` and `printn` functions (`'T -> unit`) to `ExtraTopLevelOperators` for simple value printing to stdout. ([RFC FS-1125](https://github.com/fsharp/fslang-design/blob/main/RFCs/FS-1125-print-printn-functions.md), [PR #19265](https://github.com/dotnet/fsharp/pull/19265))
* Ship `FSharp.Core` with an additional `net10.0` target framework (next to `netstandard2.0` and `netstandard2.1`). The `net`-TFM assembly is public-surface-identical to the `netstandard2.1` one; the target version is a pinned, deliberately advanced knob. ([PR #20229](https://github.com/dotnet/fsharp/pull/20229))
Expand All @@ -27,6 +28,7 @@
* Add conversion functions `Task.ofValueTask` and `ValueTask.ofTask`. ([LanguageSuggestion #1466](https://github.com/fsharp/fslang-suggestions/issues/1466), [PR #19844](https://github.com/dotnet/fsharp/pull/19844))
* Add `parallelLimit` to `Task` and `Async` modules, for bounded-parallelism execution of async/task computations, flowing cancellation and returning the results as an array. ([LanguageSuggestion #1467](https://github.com/fsharp/fslang-suggestions/issues/1467), [PR #20294](https://github.com/dotnet/fsharp/pull/20294))
* Add `parallelDoLimit` to `Task` and `Async` modules, for bounded-parallelism execution of async/task computations, flowing cancellation. ([LanguageSuggestion #1467](https://github.com/fsharp/fslang-suggestions/issues/1467), [PR #20294](https://github.com/dotnet/fsharp/pull/20294))
* Prototype a compiler-services entry and reference host for direct runtime-async sequences on the `net10.0` target, reusing the first enumerator instance.
* Add `sequentialDo` to `Task` and `Async`, running computations one at a time, flowing cancellation, without yielding an egregious `unit[]`. ([LanguageSuggestion #1467](https://github.com/fsharp/fslang-suggestions/issues/1467), [PR #20294](https://github.com/dotnet/fsharp/pull/20294))
* Add `Task.sequential`, running task computations one at a time, flowing cancellation and returning the results as an array. ([LanguageSuggestion #1467](https://github.com/fsharp/fslang-suggestions/issues/1467), [PR #20294](https://github.com/dotnet/fsharp/pull/20294))
* Add `Task.startAsyncImmediate`, starting an `Async<'T>` on the current thread and returning a `Task<'T>`, flowing cancellation. ([LanguageSuggestion #1467](https://github.com/fsharp/fslang-suggestions/issues/1467), [PR #20294](https://github.com/dotnet/fsharp/pull/20294))
Expand Down
1 change: 1 addition & 0 deletions docs/release-notes/.Language/preview.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
### Added

* Runtime async: `task`/`async`-style computation expressions can be compiled to use the .NET runtime async support (RuntimeAsync preview feature). ([PR #20235](https://github.com/dotnet/fsharp/pull/20235))
* **Extension members for operators and SRTP constraints** ([RFC FS-1043](https://github.com/fsharp/fslang-design/blob/main/RFCs/FS-1043-extension-members-for-operators-and-srtp-constraints.md), [fslang-suggestions#230](https://github.com/fsharp/fslang-suggestions/issues/230), [PR #19602](https://github.com/dotnet/fsharp/pull/19602)): Extension methods now participate in SRTP constraint resolution. This allows defining operators on types you don't own via type extensions:

```fsharp
Expand Down
Loading
Loading