.NET Compiler Platform, also known by its codename Roslyn, is a set of
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
s and
code analysis APIs for
C# and
Visual Basic Visual Basic is a name for a family of programming languages from Microsoft. It may refer to:
* Visual Basic .NET (now simply referred to as "Visual Basic"), the current version of Visual Basic launched in 2002 which runs on .NET
* Visual Basic ( ...
(VB.NET) languages from
Microsoft.
[.NET Compiler Platform ("Roslyn")]
on GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuo ...
The project notably includes
self-hosting versions of the C# and VB.NET compilers – compilers written in the languages themselves. The compilers are available via the traditional command-line programs but also as APIs available natively from within .NET code. Roslyn exposes modules for syntactic (
lexical) analysis of code, semantic analysis, dynamic compilation to
CIL, and code emission.
Features
Features of Roslyn include:
* Compilers for the
C# and
Visual Basic Visual Basic is a name for a family of programming languages from Microsoft. It may refer to:
* Visual Basic .NET (now simply referred to as "Visual Basic"), the current version of Visual Basic launched in 2002 which runs on .NET
* Visual Basic ( ...
languages exposed as services via APIs.
* APIs for
code analysis and
refactoring
In computer programming and software design, code refactoring is the process of restructuring existing computer code—changing the '' factoring''—without changing its external behavior. Refactoring is intended to improve the design, structu ...
.
History
The code name "Roslyn" was first written by
Eric Lippert (a former
Microsoft engineer) in a post that he published in 2010 to hire developers for a new project. He first said that the origin of the name was because of
Roslyn, Washington, but later in the post he speaks ironically about the "northern exposure" of its office; the city of Roslyn was one of the places where the television series ''
Northern Exposure'' was filmed.
Microsoft made a
community technology preview
A software release life cycle is the sum of the stages of development and maturity for a piece of computer software ranging from its initial development to its eventual release, and including updated versions of the released version to help impro ...
(CTP) available for public download in October 2011. It installed as an extension to
Visual Studio 2010 SP1.
The CTP was updated in September 2012 to include many updates to the Roslyn APIs introduced in the June 2012 and October 2011 CTPs, including
breaking changes. While the June 2012 CTP API is complete for the compilers, not all features were implemented for the C# and VB.NET languages.
At the
Build 2014 conference in San Francisco April 2014, Microsoft made the "Roslyn" project open-source and released a preview of the language integration for
Visual Studio 2013. As of April 3, 2014, Roslyn is under the
Apache License 2.0.
The project was effectively transferred under the stewardship of the newly founded .NET Foundation. At the same conference,
Xamarin
Xamarin is a Microsoft-owned San Francisco-based software company founded in May 2011 by the engineers that created Mono, Xamarin.Android (formerly Mono for Android) and Xamarin.iOS (formerly MonoTouch), which are cross-platform implementatio ...
announced that they are working on integrating the new compilers and tools in
Xamarin Studio.
The compilers were not feature-complete in this release. Each of the compilers contains features that are planned for the coming language versions (C# 6 and Visual Basic.NET 14). The APIs are also available through the
NuGet
NuGet (pronounced "New Get")[And The Winner Is, NuGet](_blank)
haacke ...
package manager.
Roslyn's first
release to manufacturing
A software release life cycle is the sum of the stages of development and maturity for a piece of computer software ranging from its initial development to its eventual release, and including updated versions of the released version to help impr ...
(RTM) was with
Visual Studio 2015. Roslyn currently only supports VB and C#, and the compilers were written in their respective languages.
In January 2015, Microsoft moved the Roslyn source code from
CodePlex to
GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuo ...
.
Architecture
Traditionally compilers have been a black box for application developers. With increasing complexity and demands for source code analysis in modern integrated development environments, however, compilers need to expose
application programming interface
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
s (APIs) that will help developers to directly perform phases of compilation such as lexical and syntactic structure analysis of source code. Roslyn was designed with that intent from the beginning. This reduces the barrier in developing tools specifically designed for source code analysis. APIs of Roslyn are of three types: feature APIs, work-space APIs and compiler APIs. Feature APIs allow source code tool developers to do code refactoring and fixes. Work-space APIs allow plugin developers to perform actions specifically required in
integrated development environment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools an ...
s (IDEs) like
Visual Studio
Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such ...
such as finding references of a variable or code formatting. Compiler APIs allow even more sophisticated analysis of source code, by exposing direct calls to perform syntax tree and binding flow analysis.
Overview of Roslyn
from GitHub documentation Using an open-source implementation of Common Language Infrastructure
The Common Language Infrastructure (CLI) is an open specification and technical standard originally developed by Microsoft and standardized by ISO/ IEC (ISO/IEC 23271) and Ecma International (ECMA 335) that describes executable code and a r ...
(CLI) such as .NET Core, Roslyn will be able to compile in a platform-agnostic manner capable of running CLI code in Linux, OS X
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lap ...
, and Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
.
See also
* List of compilers
This page is intended to list all current compilers, compiler generators, interpreters, translators, tool foundations, assemblers, automatable command line interfaces ( shells), etc.
Ada Compilers
ALGOL 60 compilers
ALGOL 68 compilers
cf. ...
* Microsoft Phoenix
References
Further reading
*
*
*
External links
*
Introducing the Microsoft “Roslyn” CTP
on the ''C# Frequently Asked Questions'' MSDN blog
Throwing the Big Switch on Roslyn
on the ''C# Frequently Asked Questions'' MSDN blog
{{Microsoft FOSS
Compiler Platform
Compilers
Microsoft free software
Software using the MIT license