Infraestructura de lenguaje común


Common Language Infrastructure ( CLI ) es una especificación abierta y un estándar técnico desarrollado originalmente por Microsoft y estandarizado por ISO ( ISO/IEC 23271 ) y Ecma International ( ECMA 335 ) [1] [2] que describe el código ejecutable y un entorno de tiempo de ejecución que permite que se utilicen múltiples lenguajes de alto nivel en diferentes plataformas informáticas sin tener que reescribirlos para arquitecturas específicas. Esto implica que es independiente de la plataforma. .NET Framework , .NET yMono son implementaciones de la CLI. El formato de metadatos también se usa para especificar las definiciones de API expuestas por Windows Runtime . [3] [4]

Todos los lenguajes compatibles se compilan en Common Intermediate Language (CIL), que es un lenguaje intermedio que se abstrae del hardware de la plataforma. Cuando se ejecuta el código, el VES específico de la plataforma compilará el CIL en el lenguaje de máquina de acuerdo con el hardware y el sistema operativo específicos.

En agosto de 2000, Microsoft , Hewlett-Packard , Intel y otros trabajaron para estandarizar la CLI. En diciembre de 2001, fue ratificado por la Ecma , y la estandarización ISO siguió en abril de 2003.

Microsoft y sus socios tienen patentes para CLI. Ecma e ISO requieren que todas las patentes esenciales para la implementación estén disponibles bajo " términos razonables y no discriminatorios (RAND) ". Es común que las licencias RAND requieran el pago de regalías, lo que podría ser motivo de preocupación con Mono . Desde enero de 2013, ni Microsoft ni sus socios han identificado ninguna patente esencial para las implementaciones de CLI sujetas a términos RAND.

A partir de julio de 2009, [5] Microsoft agregó C# y CLI a la lista de especificaciones a las que se aplica Microsoft Community Promise , [6]por lo que cualquiera puede implementar con seguridad ediciones específicas de los estándares sin temor a una demanda de patentes de Microsoft. Para implementar el estándar CLI se requiere la conformidad con uno de los perfiles compatibles y definidos del estándar, el mínimo de los cuales es el perfil del kernel. El perfil del núcleo es en realidad un conjunto muy pequeño de tipos compatibles en comparación con la conocida biblioteca central de las instalaciones predeterminadas de .NET. Sin embargo, la cláusula de conformidad de la CLI permite extender el perfil admitido agregando nuevos métodos y tipos a las clases, así como derivando de nuevos espacios de nombres. Pero no permite agregar nuevos miembros a las interfaces. Esto significa que las características de la CLI se pueden usar y ampliar, siempre que la implementación del perfil conforme no cambie el comportamiento de un programa destinado a ejecutarse en ese perfil.

En 2012, Ecma e ISO publicaron la nueva edición del estándar CLI, [1] [2] que no está cubierto por Community Promise. [6]


Resumen visual de la infraestructura de lenguaje común (CLI)