Zajednička jezična infrastruktura (CLI) skup je međunarodnih tehničkih standarda koji promiču interoperabilnost računalnih programskih jezika. CLI također omogućuje mnogim jezicima visoke razine razvoj aplikacija koje su neovisne o platformama i arhitekturi. Postoji više od 30 programskih jezika grupiranih u tu svrhu i koriste četiri podjele zajedničkih jezičnih programskih specifikacija kako bi postali usklađeni s CLI.
Korištenje onoga što se zove zajednički tipski sustav (CTS), korištenje skupa tipova podataka i operacija i informacija o metapodacima o programskim strukturama omogućuje pisanje koda na više jezika. CLI prevodi jezike u zajednički međujezik (CIL), a iz CIL-a komunicira aspekte aplikacije u jezik asemblerskog stroja, koji se odnosi na hardver. Osim toga, postoje zajedničke jezične specifikacije (CLS), koje su osnovna pravila postavljena za korištenje od strane bilo kojeg jezika koji traži međuoperaciju, i virtualni izvršni sustav (VES) za učitavanje, izvršavanje i generiranje kodova za sve programe kompatibilne s CLI .
Većina jezika kompatibilnih s CLI-om kompilira se izravno u CIL korištenjem zajedničkog jezika izvođenja (CLR). Nakon što je preveden i keširan, kompajler za pravo vrijeme prisvaja strojni kod iz postojeće arhitekture. Konstrukcija strojnog koda za montažu također se može konstruirati ispred CLR-a s kompajlerom unaprijed.
Da bi jezici kompatibilni s CLI iskoristili specifičnost objekta, infrastruktura zajedničkog jezika navodi da objekti samo trebaju otkriti značajke koje imaju zajedničke s drugim CLI-kompatibilnim jezicima kada se pozivaju. Za komponente koda razvijene za korištenje samo tipova podataka prihvaćenih u CTS-u se kaže da su kompatibilne s CLI-jem i dostupne svim ostalim jezicima kompatibilnim s CLI-jem. Dodatno, svaka konstrukcija jezika koja se ne može brzo provjeriti sigurnošću tipa koda isključena je iz CLS-a, tako da se može reći da su samo provjerljivi kodovi usklađeni s CLS-om.
Neke programske značajke zajedničke su i prevoditeljima i programerima, a druge su dostupne samo prevoditeljima. Popis je podugačak i pun korisnih značajki. Značajka dostupna samo kompajlerima je: ključne riječi koje daju referentne identifikatore i koje mogu nadjačati virtualne metode s imenima koja su ključne riječi. Značajka dostupna i kompajlerima i programerima uključuje: značajke modifikatora koje govore da svojstvo kao i njegovi procjenitelji moraju biti “statični”, svi moraju biti “virtualni”, svi moraju biti “instanca”.
Programi za implementaciju su za stolna računala, poslužitelje, mobilne uređaje i igraće konzole. Programi za poboljšanje računalnog vida i skupovi virtualnih strojnih alata niske razine također su razvijeni iz jezika usklađenih sa zajedničkom jezičnom infrastrukturom. Izvršna vremena infrastrukture zajedničkog jezika dodjeljuju resurse sustava i učinkovito pozivaju periferne uređaje, iako su neovisni o platformi.