Lorsque vous écrivez un programme qui ne s’exécute pas nativement, vous aurez besoin d’installer des outils pour exécuter ce programme. Cela peut être une machine virtuelle, une chaîne de compilation et bien d’autres encore.
Microsoft qui mise beaucoup sur son langage de développement C# souhaite porter ce langage au-delà des limites qu’on lui connaît actuellement. Lorsque vous développez une application .Net, un des avantages liés à ce langage est qu’il bénéficie d’une prise en charge sur les plateformes Linux, Windows, OS X, Android, iOS. Pour que ces programmes puissent s’exécuter sur ces plateformes, ils s’appuient sur un ensemble d’outils .Net disponibles pour ces plateformes.
Dans les faits, cela signifie que le code ne s’exécute pas nativement directement, mais s’appuie sur la machine virtuelle CLR (Common Language Runtime) du framework .Net afin d’exécuter le code intermédiaire généré.
Cela constitue déjà un grand avantage, mais si l’envie vous prenait d’écrire une application en C# pour une plateforme sur laquelle il n'existe pas d'implémentation .Net, vous serez simplement bien obligé de vous tourner vers d’autres langages ou d’autres solutions.
Microsoft souhaite donc lever cette limite afin d’utiliser son langage C# là où les outils .Net ne sont pas disponibles. Pour cela, la firme a annoncé récemment qu’elle travaille ardemment sur son environnement d’exécution CoreRT afin d’offrir une compilation native à 100 % pour les programmes écrits en C#.
Actuellement, CoreRT intègre en son sein le compilateur à la volée RyuJIT qui permet de compiler le bytecode en code natif spécifique à chaque système d’exploitation (Linux, Windows, OS X). C’est sur ce principe que sont basées les applications universelles Windows.
Pour porter C# encore plus loin, c’est-à-dire dans des environnements non équipés d’outils .Net, Microsoft envisage de transpiler le code .Net en code C++ qui pourrait être compilé par la suite avec un compilateur approprié pour cibler une plateforme quelconque. Comme Microsoft le souligne, « ;cette stratégie ouvre des portes pour le développement matériel parce que l’on n’aura plus besoin d’attendre qu’un ingénieur Microsoft étende nos compilateurs pour soutenir un nouveau matériel ou un nouveau système d’exploitation afin de permettre aux développeurs .NET de travailler avec votre produit ;». Ce projet promet donc de grandes choses une fois sorti du laboratoire.
Toutefois, l’on est encore loin du compte, car C++ n’offre pas de correspondance directe pour les outils .Net. Les ingénieurs Microsoft ainsi que la communauté open source devront trouver le moyen de faire correspondre les fonctionnalités .Net à C++.
De même, plusieurs classes .Net peuvent implémenter la même interface, ce qui peut être déroutant pour le transpileur. À ce niveau-là également, les mainteneurs du projet CoreRT doivent permettre au transpileur d’être assez intelligent pour savoir quelle classe doit être instanciée et passée comme interface. Enfin, une classe .Net peut implémenter des méthodes virtuelles qui appartiennent à une autre classe ou superclasse. Il va falloir également trouver le moyen de conserver ces interactions en C++.
Tout comme CoreRT, plusieurs autres projets dont Nuitka (transpileur Python vers C++) ont vu le jour afin d’offrir aux langages de programmation une passerelle vers C++ pour améliorer les performances et aussi pouvoir porter ces langage vers d’autres plateformes. Mais à l'instar de CoreRT, plusieurs difficultés parsèment le chemin menant à la réussite de ces projets.
Source : Blog Microsoft
Et vous ?
Que pensez-vous de ce projet ;?
Voir aussi
Microsoft dévoile la feuille de route de .NET Core, l'entreprise compte apporter des concepts de programmation fonctionnelle aux langages .NET
Microsoft annonce la disponibilité générale de .NET Core 1.0 et ASP.NET Core 1.0 pour Windows, OS X et Linux
ASP.NET 5 devient ASP.NET Core 1 et .Net Core 5 est maintenant appelé .NET Core 1.0 pour mieux se démarquer des anciens frameworks
La Rubrique Dotnet, Forum Dotnet, Cours et tutoriels Dotnet, FAQ Dotnet
Microsoft souhaite transpiler le code C# en code C++
Afin d'exécuter les programmes .Net nativement sur les plateformes dépourvues du framework .Net
Microsoft souhaite transpiler le code C# en code C++
Afin d'exécuter les programmes .Net nativement sur les plateformes dépourvues du framework .Net
Le , par Olivier Famien
Une erreur dans cette actualité ? Signalez-nous-la !