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