Microsoft Has Open Sourced the Common Compiler Infrastructure

简介:

Microsoft Research has open sourced the Common Compiler Infrastructure: Metadata (CCI) and CCI: Code and AST projects containing a set of libraries used by compilers and other programming tools to manipulate metadata in CLR assemblies and debug files. The CCI: Metadata components subsume System.Reflection while CCI: Code and AST subsumes System.CodeDom.

CCI does not actually load the assemblies it accesses, but it reads/writes their metadata, and it does not open a dependency assembly until it is needed. When working with CLR PE files, CCI can write to them any object that implements the metadata model interfaces (Microsoft.Cci.MetadataModel).

The CCI: Metadata API contains:

  • a Metadata Model
  • a CLR PE Reader
  • a CLR PE Writer
  • a metadata helper class (static methods in Microsoft.Cci.MetadataHelper.dll)
  • implementation classes for the Metadata Model interfaces
  • a Source Model to work with source files
  • a PDB reader
  • a PDB writer

The CCI: Code and AST project contains:

  • a Code Model used to read statements and expressions
  • a Mutable Code Model which represents a modified code model since the Code Model offers a read-only view of the code
  • an AST Model to extract AST nodes. “AST nodes take care of things such as binding names to definitions, overload resolution and error checking. The AST components are designed to support incremental compilation, while allowing for efficient projection onto the immutable code model.”

The project is supported by RiSE, a Microsoft Research team.

 from:http://www.infoq.com/news/2009/04/Open-Source-CCI;jsessionid=B169C7533F915EF866B37F43FEC7434C

 

本文转自Justin博客园博客,原文链接:http://www.cnblogs.com/justinw/archive/2009/04/22/1441587.html,如需转载请自行联系原作者

相关文章
|
API 数据库 数据安全/隐私保护
利用Django框架构建高效后端API服务
本文将介绍如何利用Django框架构建高效的后端API服务。通过深入分析Django框架的特性和优势,结合实际案例,探讨了如何利用Django提供的强大功能来构建高性能、可扩展的后端服务。同时,还对Django框架在后端开发中的一些常见问题进行了解决方案的探讨,并提出了一些建设性的建议。
484 30
|
JavaScript 开发者
Vue组件生命周期钩子函数有哪些?它们分别在什么时候触发?
Vue组件生命周期钩子函数有哪些?它们分别在什么时候触发?
634 0
|
数据格式
宜搭自定义页面组件 TablePc 渲染错误
宜搭自定义页面组件 TablePc 渲染错误
530 4
|
数据采集 消息中间件 并行计算
进程、线程与协程:并发执行的三种重要概念与应用
进程、线程与协程:并发执行的三种重要概念与应用
454 0
|
算法 安全 数据处理
【C++ 编程范式】理解C++ 中编程范式,选择合适的方式
【C++ 编程范式】理解C++ 中编程范式,选择合适的方式
585 2
|
运维 数据中心
|
存储 机器人
使用阿里云RPA变量的一些基本步
【2月更文挑战第8天】使用阿里云RPA变量的一些基本步
792 2
|
XML NoSQL JavaScript
sprinboot+vue集成neo4j图数据库
sprinboot+vue集成neo4j图数据库
|
SQL 运维 数据库
DataphinV3.14全新升级:数据研发突破全域覆盖,资产治理更加灵活可控
DataphinV3.14支持传统数据库调用,带来全新高效研发体验,及时全面的数据保护、自定义监控和审批让数据治理更灵活自由。
118999 1
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
647 0