CoreRT de Microsoft convierte C # en C ++ multiplataforma

Microsoft está cambiando lentamente la cadena de herramientas .Net para permitir la compilación anticipada de aplicaciones en plataformas donde no hay una cadena de herramientas .Net.

El proyecto CoreRT de código abierto elimina el uso de Command Line Runtime (CLR) estándar de .Net para ejecutar aplicaciones. En su lugar, genera código C ++ a partir del código de una aplicación .Net C # determinada, que luego se puede compilar y vincular en cualquier plataforma de destino que admita C ++.

En una publicación en el blog de desarrollo AlphaGeek de Microsoft, Microsoft presentó brevemente sus planes sobre cómo funcionará CoreRT, junto con su razón fundamental para crearlo.

"Si realmente quiero escribir algo de código C # y que 'simplemente funcione' en un nuevo dispositivo IoT", escribió Microsoft, "no tengo ninguna opción hasta que RyuJIT sea capaz de generar código de máquina que funcione con ese procesador y sistema operativo." Mediante la compilación cruzada de C # a C ++, los desarrolladores de .Net pueden entregar sus aplicaciones sin necesidad de esperar a que .Net se implemente en una plataforma determinada, dice Microsoft.

Microsoft señaló que había realizado un proceso significativo hacia este objetivo a lo largo del año, aunque reconoció que la tarea es más fácil de decir que de hacer. El problema más destacado es común a los proyectos que implican la transpilación de un idioma a otro. C ++ y .Net no tienen una correspondencia uno a uno entre sus características: la sintaxis, las estructuras de datos, la lógica del lenguaje, etc. Por lo tanto, CoreRT tiene que mapear elegantemente ciertas características .Net en C ++.

Otro proyecto importante que transpila un lenguaje a C ++ para acelerar su ejecución es Nuitka, que convierte programas de Python en C ++. Nuitka es un proyecto en curso que enfrenta muchos de los mismos problemas que CoreRT y quizás le resulte aún más difícil reconciliarlos. La naturaleza dinámica de Python hace que sea difícil convertirlo a un lenguaje compilado con anticipación, ya que cada construcción en el lenguaje es potencialmente un objeto con propiedades altamente mutables. C # es menos problemático desde ese punto de vista, ya que usa tipado estático para las variables, pero como se señaló anteriormente, todavía presenta una serie de dificultades.

Hay mucho acerca de CoreRT que desciende directamente de la realineación en curso de Microsoft en torno al código abierto y las tecnologías populares que no son de Microsoft. Pero Microsoft siempre ha sido pragmático acerca de por qué hace esto, y aquí el pragmatismo se trata de ver cómo las aplicaciones .Net pueden ejecutarse en plataformas y ecosistemas que anteriormente no las admitían.

En teoría, CoreRT puede ampliar el alcance del ecosistema .Net sin que Microsoft tenga que hacer un esfuerzo indebido. Es más fácil escribir un sistema de transpilación de una sola vez de C # a C ++ que crear tiempos de ejecución para cualquier cantidad de otras plataformas de destino. Claro, los terceros pueden crear tales tiempos de ejecución gracias a que .Net ahora es una preocupación de código abierto. Pero el plan de Microsoft es encontrar una forma de salvarlos, y a sí mismos, del problema.