forked from dotnet/fsharp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreact.fsx
30 lines (24 loc) · 1.41 KB
/
react.fsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(**
---
title: Incrementality
category: Language Service Internals
categoryindex: 300
index: 1400
---
*)
(*** hide ***)
#I "../../artifacts/bin/FSharp.Compiler.Service/Debug/netstandard2.0"
(**
Snapshots, incrementality and reacting to changes
============================================
FCS is an incremental execution engine. The aim is to make it Roslyn-like. We're not quite there.
There are two dimensions of incrementality:
* The inputs change, e.g. the source files are edited or a referenced assembly changes, appears or disappears
* The results of analysis on the inputs (e.g. a parse tree) are further enriched with information (e.g. symbol uses are requested) and this information is held, i.e. not re-computed, perhaps by a returned object.
The logical results of all "Check" routines (``ParseAndCheckFileInProject``, ``GetBackgroundCheckResultsForFileInProject``,
``TryGetRecentTypeCheckResultsForFile``, ``ParseAndCheckProject``) depend on results reported by the file system,
especially the ``IFileSystem`` implementation described in the tutorial on [project wide analysis](project.html).
Logically speaking, these results would be different if file system changes occur. For example,
referenced DLLs may change on disk, or referenced files may change.
There is [work-in-progress](https://github.com/dotnet/fsharp/issues/11976) to make all parsing and checking deliver results based on immutable snapshots of inputs.
*)