Search code examples
f#compiler-construction

What is difference between two f# compiler projects


I want to learn f# compiler's internals. It turns out that there is two repositories on github. Here are links to these repos:

  1. https://github.com/Microsoft/visualfsharp

  2. https://github.com/fsharp/fsharp

What is difference between these projects? Which should I use to learn compiler's design? I really cannot understand difference.


Solution

  • The main difference is ownership.

    The Microsoft repository is owned by Microsoft, and they're responsible for packaging F# with Visual Studio (hence "Visual F#").

    The FSharp repository is owned by the F# Software Foundation, and is responsible for packaging F# for use on Linux, Android, iOS etc.

    The compiler and tools are largely mirrored between the two repositories, but they aren't necessarily exactly the same at any point in time - see the F# Core Engineering Group for details. New contributions go to the Microsoft repository, from which they are later replicated to the F#SF repository (so there's no divergence between the platforms - only a slight lag for the cross-platform stuff).

    If you want more information about how the development of F# works, https://fsharp.github.io/2014/06/18/fsharp-contributions.html is a good place to start.

    To answer more directly: use the Microsoft repository. You only need to care about the F#SF repository if you want to look at the specifics of the cross-platform implementations.