-
Notifications
You must be signed in to change notification settings - Fork 842
Parallel type-checking in compilation (behind a feature flag) #14494
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
Merged
Merged
Changes from all commits
Commits
Show all changes
88 commits
Select commit
Hold shift + click to select a range
0c5c1ff
Squashed commit of the following:
safesparrow 7f69062
Code clean up after initial draft PR.
nojaf 30a0081
Revert fscmain.fs
nojaf 95d8024
Revert more unwanted changes.
nojaf c496359
Surface area for now.
nojaf c57acf2
Mark GraphChecking as internal.
nojaf 9c6b5f1
Mark helper functions in unit tests as private.
nojaf 5666202
Mark Scenarios as internal.
nojaf a4dfa8f
Make Scenario public and use TestFileWithAST.
nojaf 16e5614
Use Graph when FSHARP_EXPERIMENTAL_FEATURES is set.
nojaf f223333
Merge branch 'main' into graph-tc-new
vzarytovskii 244bbaa
Always depend on prim-types-prelude.fsi for F# Core.
nojaf 81fb7d1
Add CI leg for GraphBasedCheckingOn.
nojaf cb1a22f
Merge branch 'graph-tc-new' of https://github.com/safesparrow/fsharp …
nojaf cc0aaba
Remove unused members of TcState.
nojaf 0fabdd3
Trigger CI
nojaf 992b9c0
Scope additional links in F# core to files between prim-types-prelude…
nojaf 8bd8cd4
Merge branch 'main' into graph-tc-new
nojaf 08e5e7e
Workaround for Set.empty.
nojaf af21780
Merge branch 'main' into graph-tc-new
nojaf 2378cf9
Remove --test:ParallelCheckingWithSignatureFilesOn
nojaf 5510383
Wrap lambda's in types.
nojaf 60fe3d1
Update type name and add some more comments.
nojaf 79f487c
Move comment to type definition.
nojaf 649727b
Always depend on prim-types-prelude.fsi in FSharp.Core.
nojaf 53265d0
Remove ParaChecking
nojaf c065a12
Merge branch 'main' into graph-tc-new
nojaf c09a49b
Update surface area
nojaf a74651f
Removed unused setting in VS
nojaf c39c5ac
Merge branch 'main' into graph-tc-new
nojaf b708e4e
Exclude graph mode for interactive compilation.
nojaf fcf8c70
Pipe collections into module functions.
nojaf fd46607
Update SurfaceArea in Release mode 🙃
nojaf 72cdcfd
Add signature files for GraphChecking modules.
nojaf 01a7887
Add warning when AutoOpenAttribute is being aliased.
nojaf 8ad542a
Initial comparison benchmark.
nojaf d23922c
Check if CompiledRepresentation is Named.
nojaf 3efaf23
Remove trailing space.
nojaf 1a78368
Excluded erased types.
nojaf 6900373
Dump graph as mermaid diagram.
nojaf 95a0e9b
Missing files.
nojaf 0692914
Make alias types internal.
nojaf 3cf87c8
SurfaceArea!
nojaf a942941
Merge branch 'main' into graph-tc-new
nojaf 1ddcbc1
Merge branch 'main' into graph-tc-new
vzarytovskii 9f5195b
Merge upstream/main
safesparrow b960811
Fix build - remove unused symbols.
safesparrow b80df24
Auto-disable graph mode in deterministic build
safesparrow aa56edc
Merge branch 'main' into graph-tc-new
nojaf d6ded54
Merge branch 'main' into graph-tc-new
nojaf 6f0aa50
Merge branch 'main' into graph-tc-new
nojaf 479b66a
A few local refactorings + update comments
safesparrow ea16fd7
Use TcGlobals for AutoOpenAttribute reference. Assert exitCode of 0 i…
safesparrow 362b25c
Merge branch 'graph-tc-new' of https://github.com/safesparrow/fsharp …
safesparrow 9b0ed15
Do not match on `TType` directly
safesparrow 72279dd
Merge branch 'main' into graph-tc-new
nojaf e520e2e
Add comment on why we warn when user aliases the AutoOpenAttribute.
nojaf 88e5ee6
Capitalize type parameter names.
nojaf 9abdd77
Prefer array comprehension expression.
nojaf d2e4354
Refactor cryptic abbreviations.
nojaf b103d2b
Refactor List.collect id to List.concat.
nojaf d8c0ee9
Show scrape.fsx in IDE.
nojaf 8a6bb9f
Prefer array comprehension expression.
nojaf 29ae5f2
Prefer list comprehension expression.
nojaf e94d0d0
Refactor cryptic function into a helper module.
nojaf 52eee66
Refactor List.collect with lambda to list comprehension expression.
nojaf e4d69eb
Refactor List.collect id to List.concat.
nojaf 8545b92
Remove with in type.
nojaf c66ea08
Remove unnecessary open.
nojaf aa8adc7
Use `||>`
nojaf a23588f
Don't use pipe-to-fun.
nojaf be2bc12
Remove unused CheckArgs.
nojaf 006f562
Merge branch 'main' into graph-tc-new
nojaf 154614c
Merge branch 'main' into graph-tc-new
nojaf a1a8eb1
Add some basic regression tests for the Graph module.
nojaf 3c9fa6b
Use FileSystemUtils helper instead of direct Path.GetFileName access.
nojaf 6272b5f
Merge branch 'main' into graph-tc-new
nojaf be5a612
Merge branch 'main' into graph-tc-new
nojaf 742c7b0
Merge branch 'main' into graph-tc-new
nojaf 6221c2a
Merge branch 'main' into graph-tc-new
nojaf 20a4f9d
Merge branch 'main' into graph-tc-new
nojaf 1e070b6
Merge branch 'main' into graph-tc-new
nojaf 07c8cb6
Clean up after code review.
nojaf 586b01a
Update algorithm info in Docs.md
nojaf 5256c78
Update Docs.md
safesparrow e69f85b
Add concatenate to Continuation module.
nojaf 27e6916
Use F# set instead of HashSet.
nojaf a03a66a
Merge branch 'graph-tc-new' of https://github.com/safesparrow/fsharp …
nojaf File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| [<RequireQualifiedAccess>] | ||
| module internal Continuation | ||
|
|
||
| let rec sequence<'T, 'TReturn> (recursions: (('T -> 'TReturn) -> 'TReturn) list) (finalContinuation: 'T list -> 'TReturn) : 'TReturn = | ||
| match recursions with | ||
| | [] -> finalContinuation [] | ||
| | andThenInner :: andThenInners -> | ||
| fun (results: 'T list) -> | ||
| fun (result: 'T) -> result :: results |> finalContinuation | ||
| |> andThenInner | ||
| |> sequence andThenInners | ||
|
|
||
| let concatenate<'T, 'TReturn> (recursions: (('T list -> 'TReturn) -> 'TReturn) list) (finalContinuation: 'T list -> 'TReturn) : 'TReturn = | ||
| let ultimateContinuation = List.concat >> finalContinuation | ||
| sequence recursions ultimateContinuation |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| [<RequireQualifiedAccess>] | ||
| module internal Continuation | ||
|
|
||
| /// This function sequences computations that have been expressed in continuation-passing style. | ||
| /// Concretely, when 'T is `int` as an example, can be expressed in continuation-passing style as a function, | ||
| /// taking as its input another function that is "how to proceed with a computation given the value of the integer", | ||
| /// and returning "the result of that computation". | ||
| /// That is, an integer is equivalently represented as a generic function (howToProceed : int -> 'TReturn) -> 'TReturn, | ||
| /// and the effect of the function corresponding to the integer 3 is simply to apply the input `howToProceed` to the value 3. | ||
| /// | ||
| /// The motivation for Continuation.sequence is most easily understood when it is viewed without its second argument: | ||
| /// it is a higher-order function that takes "a list of 'T expressed in continuation-passing style", and returns "a 'T list expressed in continuation-passing style". | ||
| /// The resulting "continuation-passing 'T list" operates by chaining the input 'Ts together, and finally returning the result of continuing the computation after first sequencing the inputs. | ||
| /// | ||
| /// Crucially, this technique can be used to enable unbounded recursion: | ||
| /// it constructs and invokes closures representing intermediate stages of the sequenced computation on the heap, rather than consuming space on the (more constrained) stack. | ||
| val sequence<'T, 'TReturn> : | ||
| recursions: (('T -> 'TReturn) -> 'TReturn) list -> finalContinuation: ('T list -> 'TReturn) -> 'TReturn | ||
|
|
||
| /// Auxiliary function for `Continuation.sequence` that assumes the recursions return a 'T list. | ||
| /// In the final continuation the `'T list list` will first be concatenated into one list, before being passed to the (final) `continuation`. | ||
| val concatenate<'T, 'TReturn> : | ||
| recursions: (('T list -> 'TReturn) -> 'TReturn) list -> finalContinuation: ('T list -> 'TReturn) -> 'TReturn |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.