List of CLI languages

Last updated

CLI languages are computer programming languages that are used to produce libraries and programs that conform to the Common Language Infrastructure (CLI) specifications. With some notable exceptions, most CLI languages compile entirely to the Common Intermediate Language (CIL), an intermediate language that can be executed using the Common Language Runtime, implemented by .NET Framework, .NET Core, and Mono. Some of these languages also require the Dynamic Language Runtime (DLR).

Contents

As the program is being executed, the CIL code is just-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's ngen.exe and Mono's "-aot" option.

Notable CLI languages

Current languages

Ada for .Net
Ada is a multi-paradigm language, that is strongly focused on code safety, maintainability and correctness. [1]
Boo
A statically typed CLI language, inspired by Python.
C#
Most widely used CLI language, [2] bearing strong similarities to Java, and some similarity to Object Pascal (Delphi) and C++. Implementations provided by .NET Framework, .NET Core, and Mono.
C++/CLI
A version of C++ 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 of Clojure to the CLI, part of the Clojure project. [3]
Component Pascal
A CLI-compliant Oberon 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 integrated design by contract and multiple inheritance. CLI compliant.
F#
A multi-paradigm CLI language supporting functional programming and imperative object-oriented programming disciplines. Variant of ML and is largely compatible with OCaml. Implementations provided by .NET Framework, .NET Core, and Mono.
F*
A dependently typed language based on F#.
Go
via the RemObjects Gold compiler & multi-platform targeting.
IronPython
An open-source CLI implementation of Python, built on the Dynamic Language Runtime (DLR).
IronScheme
A R6RS-compliant Scheme implementation built on the DLR
Java
via the RemObjects Iodine compiler & multi-platform targeting.
Oxygene
An Object Pascal-based CLI language.
PascalABC.NET
An Object 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-oriented command-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
A Visual Basic .Net-based CLI language.
Rust
A research project for an experimental .NET back-end for Rust. [4]
Silverfrost FTN95
An implementation of Fortran 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 .NET
An object oriented CLI compliant implementation of DBL and DIBOL produced by Synergex. [5]
Team Developer
SQLWindows Application Language (SAL) since Team Developer 6.0.
Visual Basic.NET
A redesigned dialect of Classic Visual Basic. Implementations provided by .NET Framework, .NET Core, and Mono.
Visual COBOL
An enhanced version of COBOL ported to the .NET Framework and to the JVM, produced by Micro 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

A#
CLI implementation of Ada.
Axum
An actor model concurrent programming language.
Cobra
A CLI language with static and dynamic typing, design by contract and built-in unit testing.
Fantom
A language compiling to .NET(no longer under active development) and to the JVM Archived 2022-04-03 at the Wayback Machine
GrGen.NET
A CLI language for graph rewriting
IronRuby
An open-source CLI implementation of Ruby, built on the Dynamic Language Runtime (DLR).
J#
A CLI-compliant implementation of Java. 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 of ECMAScript version 3, compatible with JScript. Contains extensions for static typing. Deprecated in favor of Managed JScript.
Managed Extensions for C++
A version of C++ targeting the Common Language Runtime (CLR). Deprecated in favor of C++/CLI.
Managed JScript
A CLI implementation of JScript built on the Dynamic Language Runtime (DLR). Conforms to ECMAScript version 3.
Nemerle
A multi-paradigm language similar to C#, OCaml and Lisp.
Niecza
A CLI implementation of Perl 6.
Phalanger
An implementation of PHP with extensions for ASP.NET. Predecessor of PeachPie.
UnityScript
JavaScript-like language, specific to the Unity game engine. Deprecated in favor of C#.
IKVM.NET
A Java virtual machine that can be used to run Java and other JVM languages (e.g., JVM like Groovy, Scala) upon CLI implementations.

See also

Related Research Articles

The Common Language Infrastructure (CLI) is an open specification and technical standard originally developed by Microsoft and standardized by ISO/IEC and Ecma International that describes executable code and a runtime environment that allows multiple high-level languages to be used on different computer platforms without being rewritten for specific architectures. This implies it is platform agnostic. The .NET Framework, .NET and Mono are implementations of the CLI. The metadata format is also used to specify the API definitions exposed by the Windows Runtime.

The Common Language Runtime (CLR), the virtual machine component of Microsoft .NET Framework, manages the execution of .NET programs. Just-in-time compilation converts the managed code into machine instructions which are then executed on the CPU of the computer. The CLR provides additional services including memory management, type safety, exception handling, garbage collection, security and thread management. All programs written for the .NET Framework, regardless of programming language, are executed in the CLR. All versions of the .NET Framework include CLR. The CLR team was started June 13, 1998.

DotGNU is a decommissioned part of the GNU Project that started in January 2001 and aimed to provide a free software replacement for Microsoft's .NET Framework. The DotGNU project was run by the Free Software Foundation. Other goals of the project are better support for non-Windows platforms and support for more processors.

JScript is Microsoft's legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer web browser and HTML Applications, and as a standalone Windows scripting language.

JScript .NET is a .NET programming language developed by Microsoft.

IronPython is an implementation of the Python programming language targeting the .NET and Mono frameworks. The project is currently maintained by a group of volunteers at GitHub. It is free and open-source software, and can be implemented with Python Tools for Visual Studio, which is a free and open-source extension for Microsoft's Visual Studio IDE.

Managed code is computer program code that requires and will execute only under the management of a Common Language Infrastructure (CLI); Virtual Execution System (VES); virtual machine, e.g. .NET, CoreFX, or .NET Framework; Common Language Runtime (CLR); or Mono. The term was coined by Microsoft.

Managed Extensions for C++ or Managed C++ is a deprecated set of language extensions for C++, including grammatical and syntactic extensions, keywords and attributes, to bring the C++ syntax and language to the .NET Framework. These extensions were created by Microsoft to allow C++ code to be targeted to the Common Language Runtime (CLR) in the form of managed code, as well as continue to interoperate with native code.

<span class="mw-page-title-main">C Sharp (programming language)</span> Programming language

C# is a general-purpose high-level programming language supporting multiple paradigms. C# encompasses static typing, strong typing, lexically scoped, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.

Phalanger is a compiler front end for compiling PHP source code into CIL byte-code, which can be further processed by the .NET Framework's just-in-time compiler. The project was started at Charles University and is supported by Microsoft. Phalanger was discontinued in favor of the more modern PeachPie compiler, which utilizes the Roslyn API.

The Dynamic Language Runtime (DLR) from Microsoft runs on top of the Common Language Runtime (CLR) and provides computer language services for dynamic languages. These services include:

<span class="mw-page-title-main">.NET Framework</span> Software platform developed by Microsoft

The .NET Framework is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until being superseded by the cross-platform .NET project. It includes a large class library called Framework Class Library (FCL) and provides language interoperability across several programming languages. Programs written for .NET Framework execute in a software environment named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides services such as security, memory management, and exception handling. As such, computer code written using .NET Framework is called "managed code". FCL and CLR together constitute the .NET Framework.

RemObjects Software is an American software company founded in 2002 by Alessandro Federici and Marc Hoffman. It develops and offers tools and libraries for software developers on a variety of development platforms, including Embarcadero Delphi, Microsoft .NET, Mono, and Apple's Xcode.

Windows Runtime (WinRT) is a platform-agnostic component and application architecture first introduced in Windows 8 and Windows Server 2012 in 2012. It is implemented in C++ and officially supports development in C++, Rust/WinRT, Python/WinRT, JavaScript-TypeScript, and the managed code languages C# and Visual Basic (.NET) (VB.NET).

<span class="mw-page-title-main">Mono (software)</span> Computer software project

Mono is a free and open-source software framework that aims to run software made for the .NET Framework on Linux and other OSes. Originally by Ximian which was acquired by Novell, it was later developed by Xamarin which was acquired by Microsoft. In August 2024, Microsoft transferred ownership of Mono to WineHQ.

In computer science, bridging describes systems that map the runtime behaviour of different programming languages so they can share common resources. They are often used to allow "foreign" languages to operate a host platform's native object libraries, translating data and state across the two sides of the bridge. Bridging contrasts with "embedding" systems that allow limited interaction through a black box mechanism, where state sharing is limited or non-existent.

<span class="mw-page-title-main">.NET</span> Software platform developed by Microsoft

The .NET platform is a free and open-source, managed computer software framework for Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft employees by way of the .NET Foundation and is released under an MIT License.

References

  1. "GNAT for .Net". adacore.com. Retrieved 2021-03-27.
  2. Priyadarshini, Manisha (June 25, 2018). "10 Most Popular Programming Languages In 2018: Learn To Code". Fossbytes. Retrieved June 25, 2018.
  3. "ClojureCLR". GitHub.com. Retrieved 2012-06-28.
  4. "rust_codegen_clr". GitHub.com. Retrieved 2024-08-30.
  5. "Another Language for Visual Studio and .Net: Synergex release Synergy/DE". msdn.com.
  6. Handy, Alex (20 August 2015). "COBOL comes to Visual Studio 2015 - SD Times". SD Times. Retrieved 2017-04-04.