.NET Compiler Platform , también conocida por su nombre en código 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]
El proyecto incluye versiones alojadas en servidores propios de los compiladores C# y VB.NET, compiladores escritos en los propios lenguajes. Los compiladores están disponibles a través de los programas de línea de comandos tradicionales, pero también como API disponibles de forma nativa desde el código .NET. Roslyn expone módulos para el análisis sintáctico ( léxico ) del código, el análisis semántico, la compilación dinámica a CIL y la emisión de código. [4]
Las características de Roslyn incluyen:
El nombre en clave "Roslyn" fue escrito por primera vez por Eric Lippert (un ex ingeniero de Microsoft [5] ) en un post [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 norteña" de su oficina; la ciudad de Roslyn fue uno de los lugares donde se filmó la serie de televisión Northern Exposure . [7]
En octubre de 2011, Microsoft puso a disposición del público una versión preliminar de tecnología comunitaria (CTP). 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 a las API de Roslyn introducidas en los CTP de junio de 2012 y octubre de 2011, incluidos cambios importantes. [10] Si bien la API del CTP de junio de 2012 está completa para los compiladores, no se implementaron todas las funciones para los lenguajes C# y VB.NET. [11]
En la conferencia Build 2014 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 efectivamente transferido bajo la administración de la recién fundada .NET Foundation. [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 estaban completos en esta versión. Cada uno de ellos contiene características que están previstas 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 requerida ]
A partir de 2013 [actualizar], Roslyn admite VB y C#, y los compiladores están escritos en sus respectivos lenguajes. [14] El primer lanzamiento de Roslyn para fabricación (RTM) fue con Visual Studio 2015. [ 15]
En enero de 2015, Microsoft trasladó el código fuente de Roslyn de CodePlex a GitHub . [16]
Tradicionalmente, los compiladores .NET han sido una caja negra para los desarrolladores de aplicaciones. [17] Sin embargo, con la creciente complejidad y las demandas de análisis de código fuente en los 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ñado con esa intención desde el principio. Esto reduce la barrera en el desarrollo de herramientas diseñadas específicamente para el análisis de código fuente. Las API de Roslyn son de tres tipos: API de características, API de espacio de trabajo y API de compilador. Las API de características permiten a los desarrolladores de herramientas de código fuente realizar refactorizaciones y correcciones de código. Las API de espacio de trabajo permiten a los desarrolladores de complementos realizar acciones específicamente requeridas en entornos de desarrollo integrados (IDE) como Visual Studio , como encontrar referencias de una variable o formatear el código. Las API de 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 enlaces y árboles de sintaxis. [18] Al utilizar una implementación de código abierto de Common Language Infrastructure (CLI), como .NET Core , Roslyn podrá compilar de manera independiente de la plataforma y ejecutar código CLI en Linux , OS X y Windows . [ cita requerida ]