Common Language Runtime (CLR) on Microsoftin .NET-ympäristön ajonaikainen komponentti, joka vastaa hallitun koodin (managed code) suorittamisesta. CLR kääntää Common Intermediate Language (CIL) -tavukoodin ajonaikaisesti konekielelle just-in-time-kääntämisen (JIT) avulla ja tarjoaa palveluja kuten automaattisen muistinhallinnan, poikkeustenkäsittelyn, roskienkeruun, tietoturvan ja säikeiden hallinnan.
Yleiskuvaus CLR on .NET-sovellusten ajonaikainen ympäristö, joka suorittaa hallittua koodia ja valvoo sen resurssien käyttöä ja käyttöoikeuksia. Lähdekoodi käännetään ensin CIL-tavukoodiksi ja metatiedoiksi, minkä jälkeen CLR:n JIT-kääntäjä muuntaa tavukoodin natiiviksi konekieleksi menetelmän ensimmäisellä suorituskerralla. Seuraavilla kerroilla käytetään käännettyä natiivikoodia. Nykyisissä .NET-versioissa tuetaan myös ennakkokääntämistä (Native AOT), jolloin koko sovellus käännetään valmiiksi natiivikoodiksi ennen suoritusta.
CLR tarjoaa hallitulle koodille muun muassa seuraavat palvelut:
automaattinen muistinhallinta ja roskienkeruu tyyppiturvallisuuden tarkistaminen poikkeustenkäsittely säikeiden hallinta koodin käyttöoikeuksien valvonta ja tietoturvatoiminnot kieliriippumaton yhteentoimivuus.
CLR mahdollistaa sen, että useilla CLI-yhteensopivilla ohjelmointikielillä – kuten C#:llä ja Visual Basic .NET:llä – kirjoitetut ohjelmat voivat käyttää samoja kirjastoja ja ajonaikaisia palveluja.
Suhde Common Language Infrastructureen CLR on Microsoftin toteutus Common Language Infrastructure (CLI) -standardin Virtual Execution System (VES) -komponentista. CLI määrittelee yhteisen tietotyyppijärjestelmän (CTS), CIL-tavukoodin, metatiedot ja ajonaikaisen ympäristön peruspalvelut. CLR toteuttaa nämä vaatimukset ja laajentaa niitä .NET-ekosysteemin kirjastoilla ja työkaluilla.
Versiot ja toteutukset CLR oli alun perin osa Windowsille suunniteltua .NET Framework -ympäristöä, jossa jokainen Framework-versio sisälsi oman CLR-versionsa.
Monialustaisessa .NET-ympäristössä (alkaen .NET Core) ajonaikainen komponentti tunnetaan nimellä CoreCLR (nykyisin osa yhtenäistä .NET runtimea), joka tukee Windowsia, Linuxia ja macOS:ää. CLR:tä voidaan isännöidä myös muissa Microsoft-tuotteissa, kuten Microsoft SQL Serverissä, jossa se mahdollistaa hallitun koodin suorittamisen tietokantamoottorin sisällä.
Lähteet
Aiheesta muualla ECMA-335 – Common Language Infrastructure (CLI)
Luokka:Virtuaalikoneet