Quali sono le prospettive per .Net CLR di Microsoft

Il Common Language Runtime di Microsoft, la macchina virtuale che è alla base di .Net Framework, è destinato a un restyling, con la società che annuncia i piani per rendere il CLR più efficiente e scalabile.

La chiave di questa modernizzazione saranno i miglioramenti al linguaggio intermedio alla base del CLR, chiamato IL, che non è stato aggiornato da dieci anni, ha affermato Mads Torgersen, lead designer per C # presso Microsoft. L'azienda vuole migliorare l'IL e rendere il CLR un target più ricco per i linguaggi di programmazione. 

L'obiettivo del CLR è eseguire i programmi .Net in modo efficiente. Attualmente il problema più grande con .Net sono i limiti intrinseci di scalabilità del runtime stesso, ha affermato Ben Watson, il principale ingegnere software di Microsoft. Il CLR viene spinto oltre la sua intenzione e il suo design originali. Watson ha spiegato che quando vengono caricati più gigabyte di codice, gli algoritmi incorporati nel CLR iniziano a rompersi. 

Un miglioramento imminente riguarda Span, pronunciato "span of tee", un nuovo tipo che offrirà funzionalità di linguaggio e framework per ottenere codice più sicuro, più performante e di basso livello. La "t" in Span significa parametro di tipo. Span verrà utilizzato da C # e altri linguaggi per creare codice più efficiente che non ha bisogno di copiare grandi quantità di dati o di mettere in pausa per la garbage collection, ha detto Torgersen. Le nuove versioni del CLR avranno una "conoscenza approfondita" di Span per migliorare la velocità. Span verrà implementato nelle prossime versioni di .Net Framework. 

Fungendo da controparte di Microsoft alla JVM del mondo Java, il CLR fornisce la gestione del codice dei linguaggi .Net, inclusi C #, Visual Basic e F #. Il codice sorgente viene compilato dai compilatori del linguaggio nel codice IL; il CLR esegue il programma eseguendo l'IL e traducendo l'output in codice macchina mentre il programma è in esecuzione. Altri servizi sono forniti dal CLR tra cui la gestione automatica della memoria e la protezione dai tipi, evitando al programmatore di dover provvedere a questi servizi.