Relooking en vue pour le Common Language Runtime (CLR), le composant de machine virtuelle du framework .Net de Microsoft, avec un effort particulier sur la rapidité et l’évolutivité. « Cette modernisation du CLR passe impérativement par l'amélioration du langage intermédiaire sous-jacent, le MSIL ou Microsoft Intermediate Language, jamais mis à jour depuis dix ans », a déclaré Mads Torgersen, concepteur en chef en C# chez Microsoft. L’éditeur veut améliorer le MSIL et faire du CLR une cible plus riche pour les langages de programmation. Mais pour cela, le CLR doit être capable d'exécuter efficacement les programmes .Net. « Or, actuellement, le plus gros problème rencontré par .Net concerne les limites inhérentes à l'évolutivité du runtime lui-même », a déclaré Ben Watson, ingénieur logiciel principal de Microsoft. Sauf que cela revient à pousser le CLR bien au-delà de ce à quoi le destinait son design initial. Comme l’a expliqué Ben Watson, quand plusieurs gigaoctets de code sont chargés, les algorithmes intégrés dans le CLR n’arrivent pas à suivre.

L’une des premières améliorations, attendue de manière imminente, concerne le Span <T> (prononcer « span of tee »). Ce nouveau type doit apporter des fonctions de langage et de framework qui permettront une exécution de code de bas niveau plus sûre et plus performante. Le « t » de Span <T> est là pour signifier un paramètre de type. « Le Span <T> sera utilisé par le langage C# et d'autres langages pour créer un code plus efficace. Notamment, il évitera la copie de grandes quantités de données et permettra de faire une pause pour collecter les ordures », a expliqué Mads Torgersen. Les nouvelles versions du CLR seront capables d’interpréter le Span <T> pour améliorer la vitesse. Le type Span <T> sera déployé sur les prochaines versions du framework .Net.

Un concurrent de Java 

Contrepartie à la machine virtuelle Java (JVM) du monde Java, le CLR de Microsoft fournit un environnement managé de gestion de code des langages .Net, notamment pour le C#, Visual Basic et F#. Le code source est compilé par les compilateurs de langage en code IL et le CLR fait tourner le programme en exécutant l'IL et en traduisant la sortie en code machine pendant l'exécution du programme. Le CLR offre d'autres services comme la gestion de mémoire automatique et la sureté du typage, ce qui signifie que le programmeur n’a plus besoin de les fournir.