Many people have asked us questions such as "What is .NET, and why should I, a Fortran developer, care about it?" Microsoft .NET refers to a range of related technologies, but at its heart is a environment for running programs, known as the Common Language Run-time, the CLR. Think of Windows 7 or Windows 10 - these operating systems can execute programs in a number of environments. They can run 32-bit or 64-bit applications (such as those currently produced by Silverfrost FTN95). .NET is another environment and Silverfrost Fortran can produce programs to run there too.
Unlike the other programming environments discussed above, the .NET environment does not correspond to some new CPU capability - any modern PC can run .NET code after the .NET environment has been installed. Under .NET, compilers do not generate raw x86 machine instructions, but produce an intermediate assembler-like language, known as IL.
A .NET executable contains IL plus associated data, just as a Win32 executable contains x86 instructions plus data. When a program is executed part of the operating system known as the Just In Time Compiler, the JIT, takes the IL and translates it into instructions for the machine on which it is executing. This translation usually happens on a routine at a time as required - thus avoiding translating large quantities of code that might never be required.
Although the use of IL imposes a small start-up overhead, the JIT mechanism has several interesting advantages. First, of course, the JIT 'knows' which CPU is going to execute the code and can therefore make use of instructions that are not available across the whole range of x86 hardware. Furthermore, if a .NET application makes use of no Win32 code, it is even possible for it to run on other types of CPU - provided a suitable version of the .NET framework is available.
A further benefit of .NET will be that programs can be made tamper-proof so that virus-like software cannot subvert their operation. They can also be digitally signed providing unambiguous evidence of the organisation that authored the software.
The .NET Framework also greatly simplifies language interoperability. The common backend to all .NET languages means that inter-calling is trivial. Silverfrost Fortran exploits this functionality and calling from and to any other .NET language becomes simple. This is also enhanced by the integration of Silverfrost Fortran FTN95 into Visual Studio where many .NET languages are supported.
Although a .NET executable may be able to run on a range of CPU architectures, it is effectively tied to a particular address size. Thus existing .NET programs run in the 32-bit address space, as used by Win32.