BT

New Early adopter or innovator? InfoQ has been working on some new features for you. Learn more

Microsoft Has Open Sourced the Common Compiler Infrastructure

| by Abel Avram Follow 3 Followers on Apr 16, 2009. Estimated reading time: 1 minute |

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.

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and don't miss out on content that matters to you

BT