微软将编译器通用基础结构开源了

  • Abel Avram
  • 赵劼

2009 年 4 月 17 日

话题:.NET开源DevOps语言 & 开发架构

微软研究院已经将“Common Compiler Infrastructure: Metadata (CCI)”和“CCI: Code and AST”两个项目开源了,其中包含了一套让编译器或编程工具操作 CLR 程序集元数据和调试文件的类库。CCI: Metadata 组件扩展了 System.Reflection,而 CCI: Code and AST 扩展了 System.CodeDom。

CCI 并不会加载它访问的程序集,而是读写它们的元数据,同时它也只会在必要时才会打开依赖的程序集。在操作 CLR PE 文件时,CCI 可以写入任何实现了元数据模型接口(Microsoft.Cci.MetadataModel)的对象。

CCI: Metadata 的 API 包括:

  • 一个元数据模型
  • 一个 CLR PE 读取器
  • 一个 CLR PE 写入器
  • 一个元数据辅助类(Microsoft.Cci.MetadataHelper.dll 中的静态方法)
  • 元数据模型接口的实现类
  • 一个用于操作源文件的源代码模型
  • 一个 PDB 读取器
  • 一个 PDB 写入器

CCI: Code and AST 项目包括:

  • 一个用于读取语句和表达式的代码模型
  • 一个可变的代码模型,可表示经过修改的代码模型,因为普通的代码模型只是提供了代码的只读视图
  • 一个用于提取 AST 节点的 AST 模型。“AST 节点负责一些例如,绑定定义与名称,分辨重载,错误检查这样的事情。AST 组件的设计目的是为了支持增量型编译,同时允许对不可变的代码模型进行高效的修订(projection)”

这个项目由微软研究院的RiSE团队支持。

查看英文原文:Microsoft Has Open Sourced the Common Compiler Infrastructure

.NET开源DevOps语言 & 开发架构