.NET Compiler Platform , también conocida por su nombre clave Roslyn , [2] es un conjunto de compiladores de código abierto y API de análisis de código para los lenguajes C# y Visual Basic (VB.NET) de Microsoft . [3]
En particular, el proyecto incluye versiones autohospedadas de los compiladores C# y VB.NET, compiladores escritos en los propios lenguajes. Los compiladores están disponibles a través de los programas tradicionales de línea de comandos, pero también como API disponibles de forma nativa desde el código .NET. Roslyn expone módulos para análisis sintáctico ( léxico ) de código, análisis semántico, compilación dinámica para CIL y emisión de código. [4]
Las características de Roslyn incluyen:
El nombre clave "Roslyn" fue escrito por primera vez por Eric Lippert (un ex ingeniero de Microsoft [5] ) en una publicación [6] que publicó en 2010 para contratar desarrolladores para un nuevo proyecto. Primero dijo que el origen del nombre se debía a Roslyn, Washington , pero más adelante en el post habla irónicamente sobre la "exposición al norte" de su oficina; La ciudad de Roslyn fue uno de los lugares donde se rodó la serie de televisión Northern Exposure . [7]
Microsoft puso a disposición del público una vista previa de tecnología comunitaria (CTP) para su descarga pública en octubre de 2011. Se instaló como una extensión de Visual Studio 2010 SP1. [8]
El CTP se actualizó en septiembre de 2012 [9] para incluir muchas actualizaciones de las API de Roslyn introducidas en los CTP de junio de 2012 y octubre de 2011, incluidos cambios importantes. [10] Si bien la API CTP de junio de 2012 está completa para los compiladores, no todas las funciones se implementaron para los lenguajes C# y VB.NET. [11]
En la conferencia Build 2014 celebrada en San Francisco en abril de 2014, Microsoft hizo que el proyecto "Roslyn" fuera de código abierto y lanzó una vista previa de la integración del lenguaje para Visual Studio 2013 . A partir del 3 de abril de 2014 [actualizar], Roslyn está bajo la licencia Apache 2.0. [3] El proyecto fue transferido efectivamente bajo la dirección de la recién fundada Fundación .NET. [12] En la misma conferencia, Xamarin anunció que están trabajando en la integración de los nuevos compiladores y herramientas en Xamarin Studio . [13]
Los compiladores no tenían todas las funciones en esta versión. Cada uno de los compiladores contiene características planificadas para las próximas versiones de lenguaje (C# 6 y Visual Basic.NET 14). Las API también están disponibles a través del administrador de paquetes NuGet . [ cita necesaria ]
A partir de 2013 [actualizar], Roslyn admite VB y C#, y los compiladores están escritos en sus respectivos idiomas. [14] El primer lanzamiento de fabricación (RTM) de Roslyn fue con Visual Studio 2015 . [15]
En enero de 2015, Microsoft trasladó el código fuente de Roslyn de CodePlex a GitHub . [dieciséis]
Tradicionalmente, los compiladores .NET han sido una caja negra para los desarrolladores de aplicaciones. [17] Sin embargo, con la creciente complejidad y demandas de análisis de código fuente en entornos de desarrollo integrados modernos, los compiladores necesitan exponer interfaces de programación de aplicaciones (API) que ayudarán a los desarrolladores a realizar directamente fases de compilación, como el análisis de la estructura léxica y sintáctica del código fuente. . Roslyn fue diseñada con esa intención desde el principio. Esto reduce la barrera en el desarrollo de herramientas diseñadas específicamente para el análisis del código fuente. Las API de Roslyn son de tres tipos: API de funciones, API de espacio de trabajo y API de compilador. Las API de funciones permiten a los desarrolladores de herramientas de código fuente realizar correcciones y refactorizaciones de código. Las API del espacio de trabajo permiten a los desarrolladores de complementos realizar acciones específicamente requeridas en entornos de desarrollo integrados (IDE) como Visual Studio , como buscar referencias de una variable o formato de código. Las API del compilador permiten un análisis aún más sofisticado del código fuente, al exponer llamadas directas para realizar análisis de flujo de enlace y árbol de sintaxis. [18] Utilizando una implementación de código abierto de Common Language Infrastructure (CLI) como .NET Core , Roslyn podrá compilar de una manera independiente de la plataforma capaz de ejecutar código CLI en Linux , OS X y Windows . [ cita necesaria ]