我想学习f#编译器的内部结构。事实证明,github上有两个存储库。以下是这些回购的链接:
这些项目有什么区别?我应该用什么来学习编译器的设计?我真的无法理解差异。
答案 0 :(得分:6)
主要区别在于所有权。
Microsoft存储库由Microsoft拥有,他们负责使用Visual Studio打包F#(因此“Visual F#”)。
FSharp存储库归F#Software Foundation所有,负责打包F#以在Linux,Android,iOS等上使用。
编译器和工具主要在两个存储库之间进行镜像,但它们在任何时间点都不一定完全相同 - 有关详细信息,请参阅F#Core Engineering Group。新的贡献将转移到Microsoft存储库,之后它们会被复制到F#SF存储库(因此平台之间没有差异 - 跨平台的东西只有轻微的延迟)。
如果您想了解有关F#开发的更多信息,https://fsharp.github.io/2014/06/18/fsharp-contributions.html是一个很好的起点。
要直接回答:使用Microsoft存储库。如果要查看跨平台实现的细节,您只需要关心F#SF存储库。