[OT] .NET vs. Java backend (was: Re: [fpc-devel] FPC Branches)

Jonas Maebe jonas.maebe at elis.ugent.be
Mon Jul 12 22:53:15 CEST 2010

Alexsander Rosa wrote on Mon, 12 Jul 2010:

> Java tries to be "write once, run everywhere", while .NET is more like
> "write in any language, as long as you run it at our operating system".
> Forget Mono, it's doomed to always play catch with Microsoft's
> implementation due to technical and legal issues.

There are two "levels" of .NET: on the one hand you have the bytecode  
format (CIL = Common Interface Language), and on the other hand you  
have runtime and its frameworks frameworks (CLI = Common Language  

A ".NET backend" would mean generating CIL bytecode as far as the  
compiler is concerned. Conceptually, this would be not very different  
to generating, e.g., LLVM byte code. It's just an intermediate format  
that can be fed into other tools and either be used in a JIT  
environment, or be statically compiled down to machine code (there is  
e.g. a GCC frontend that reads CIL, and subsequently can in principle  
generate machine code for any architecture supported by GCC -- but  
before anyone gets any dreams: this would still also require at least  
some rudimentary support for that architecture in FPC).

The advantage of generating such an intermediate format is that it  
lets you take advantage of many tools that have been written by other  
people if you wish to do so.

Supporting the CLI (like Delpi.NET/Delphi Prism) would additionally  
require adding support for an extra "operating system" to the compiler  
and the RTL, namely the "CLI platform". It's this latter part where  
Mono is indeed generally about one generation behind the latest  
Microsoft version.


This message was sent using IMP, the Internet Messaging Program.

More information about the fpc-devel mailing list