Roslyn è una piattaforma di compilazione che consente di creare strumenti di analisi statici e dinamici e estensioni e trasformazioni del linguaggio personalizzate per i linguaggi di programmazione C# e VB. Consente inoltre di incorporare queste lingue in altre lingue o applicazioni. Roslyn include i compilatori C# e VB e altri strumenti. Questi compilatori emettono il codice Common Intermediate Language (CIL).
Per eseguire questo codice, CIL deve essere compilato in codice binario che l'architettura del computer di destinazione può eseguire. .NET attualmente fornisce tre modi per farlo:
- Compilare il codice CIL in codice binario utilizzando un compilatore JIT mentre l'app è in esecuzione. Questo modello è implementato da CoreCLR. CoreCLR è iniziato come una copia di CLR. È stato modificato per supportare diversi sistemi operativi. Sono mantenuti separatamente e in parallelo.
- Compilare il codice CIL in codice binario e integrare tutti i componenti di framework .NET richiesti per produrre un eseguibile autonomo a file singolo le cui prestazioni siano più vicine al linguaggio scritto in codice. Questa tecnologia è denominata .NET Native. CoreRT è un'implementazione open-source di questa tecnologia. La principale differenza tra .NET Native e CoreRT è che il compilatore AOT utilizzato dal primo è il compilatore UTC (il backend del compilatore MSVC) mentre il successivo utilizza attualmente RyuJIT. UTC è molto più aggressivo nell'ottimizzare il codice rispetto a RyuJIT. Anche in CoreRT, alcuni componenti del runtime sono stati reimplementati in modo pulito in C#. CoreCLR utilizza ancora l'implementazione C++.
- NGEN che è simile a .NET Native eccetto che gli eseguibili prodotti non sono autonomi e richiedono un runtime installato esternamente.
LLILC è un compilatore CIL basato sul framework del compilatore portatile LLVM. Può essere utilizzato per compilare compilatori JIT (correnti) e AOT (futuri). Il vantaggio di questo compilatore è che sfrutta le ottimizzazioni del compilatore Cl ++ C++ e porta il modello di estensibilità LLVM (passaggi di analisi e ottimizzazione) a .NET.
CoreRT e LLILC sono nuovi progetti e sono ancora in fase di sviluppo e richiedono molto più lavoro per supportare le applicazioni di produzione. Quindi se sei un utente e non un contributore, CoreCLR e Roslyn sono per te. Ancora una volta, CoreCLR è il runtime mentre Roslyn è il C# e compilatori VB.
fonte
2016-01-27 17:47:50
Roslyn è interamente open-source, non c'è nulla di proprietario per quanto ne so. –
CoreRT è un runtime. Roslyn è il compilatore C# e VB, che compila il codice sorgente in IL. Sono cose completamente diverse. –
@JonSkeet - dovresti pubblicare il tuo commento come risposta. –