CLI languages are computer programming languages that are used to produce libraries and programs that conform to theCommon Language Infrastructure (CLI) specifications. With some notable exceptions, most CLI languages compile entirely to theCommon Intermediate Language (CIL), an intermediate language that can be executed using theCommon Language Runtime , implemented by.NET Framework ,.NET Core , andMono . Some of these languages also require theDynamic Language Runtime (DLR).
As the program is being executed, the CIL code isjust-in-time compiled (and cached) to the machine code appropriate for the architecture on which the program is running. This step can be omitted manually by caching at an earlier stage using an"ahead of time" compiler such as Microsoft'sngen.exe and Mono's "-aot" option.
Notable CLI languages [ edit ] Ada for .Net Ada is a multi-paradigm language, that is strongly focused on code safety, maintainability and correctness.[ 1] Boo Astatically typed CLI language, inspired byPython . C# Most widely used CLI language,[ 2] bearing strong similarities toJava , and some similarity toObject Pascal (Delphi ) andC++ . Implementations provided by.NET Framework ,.NET Core , andMono . C++/CLI A version ofC++ including extensions for using Common Language Runtime (CLR) objects. Provides full support for.NET Framework and library only support for.NET Core . Produces mixed-mode code that produces native code for C++ objects. The compiler is provided by Microsoft. ClojureCLR A port ofClojure to the CLI, part of theClojure project.[ 3] Component Pascal A CLI-compliantOberon dialect. It is a strongly typed language in the heritage of Pascal and Modula-2 but with powerful object-oriented extensions. Eiffel Purely object-oriented language, focused on software quality, includes integrateddesign by contract and multiple inheritance. CLI compliant. F# Amulti-paradigm CLI language supportingfunctional programming andimperative object-oriented programming disciplines. Variant ofML and is largely compatible withOCaml . Implementations provided by.NET Framework ,.NET Core , andMono . F* A dependently typed language based on F#. Go via the RemObjects Gold compiler & multi-platform targeting. IronPython An open-source CLI implementation ofPython , built on the Dynamic Language Runtime (DLR). IronScheme AR6RS -compliantScheme implementation built on the DLR Java via the RemObjects Iodine compiler & multi-platform targeting. Oxygene AnObject Pascal -based CLI language. PascalABC.NET AnObject Pascal -based language implemented on the .NET Framework. PeachPie A compiler of PHP to .NET and .NET Core. Successor of Phalanger. PowerBuilder Can target CLI since version 11.1. PowerShell An object-orientedcommand-line shell . PowerShell can dynamically load .NET assemblies that were written in any CLI language. PowerShell itself uses a unique scripting syntax and uses curly-braces, similar to other C-based languages. RemObjects Mercury AVisual Basic .Net -based CLI language. Rust A research project for an experimental .NET back-end for Rust.[ 4] Silverfrost FTN95 An implementation ofFortran 95. Small Basic A BASIC-derived programming language created by Microsoft for teaching programming. Supported releases target.NET Framework versions 3.5 and 4.5. Swift via the RemObjects Silver compiler & multi-platform targeting. Synergy DBL .NETAn object-oriented CLI compliant implementation of DBL andDIBOL produced by Synergex.[ 5] Team Developer SQLWindows Application Language (SAL) since Team Developer 6.0. Visual Basic.NET A redesigned dialect ofClassic Visual Basic . Implementations provided by.NET Framework ,.NET Core , andMono . Visual COBOL An enhanced version ofCOBOL ported to the.NET Framework and to the JVM, produced byMicro Focus .[ 6] XSharp X# is an open source development language for Microsoft .NET, based on the xBase language. It comes in different flavours, such as Core, Visual Objects, Vulcan.NET, xBase++, Harbour, Foxpro, and more.
Abandoned or deprecated languages [ edit ] A# CLI implementation ofAda . Axum Anactor model concurrent programming language. Cobra A CLI language withstatic and dynamic typing ,design by contract and built-inunit testing . Fantom A language compiling to .NET(no longer under active development) and to theJVM Archived 2022-04-03 at theWayback Machine GrGen .NETA CLI language forgraph rewriting IronRuby An open-source CLI implementation ofRuby , built on the Dynamic Language Runtime (DLR). J# A CLI-compliant implementation ofJava . The compiler is provided by Microsoft. J# has been discontinued. The last version shipped with Visual Studio 2005, and was supported until 2015. JScript .NET A CLI implementation ofECMAScript version 3, compatible withJScript . Contains extensions forstatic typing . Deprecated in favor ofManaged JScript . Managed Extensions for C++ A version ofC++ targeting the Common Language Runtime (CLR). Deprecated in favor ofC++/CLI . Managed JScript A CLI implementation ofJScript built on the Dynamic Language Runtime (DLR). Conforms toECMAScript version 3. Nemerle A multi-paradigm language similar to C#, OCaml and Lisp. Niecza A CLI implementation ofPerl 6 . Phalanger An implementation ofPHP with extensions forASP.NET . Predecessor of PeachPie. UnityScript JavaScript -like language, specific to theUnity game engine . Deprecated in favor ofC# .IKVM AJava virtual machine that can be used to runJava and other JVM languages (e.g., JVM likeGroovy ,Scala ) upon CLI implementations.
Architecture Components Implementations
Languages