wiki:Platforms

Version 4 (modified by guest, 8 years ago) (diff)

--

Platforms

The following table describes to what extent GHC currently supports various platforms. Definitions:

Registerised

A catch-all term for a number of optimisations, which collectively require the mangler (a Perl script that post-processes the assembly output from gcc). Unregisterised builds require only a working C compiler and are hence far more portable. The registerised optimisations include: direct tail calls (as opposed to using the "mini-interpreter"), info-tables adjacent to entry code, and virtual machine registers mapped to real machine registers.

GHCi

The interactive environment, including dynamic linking of object code and dynamic generation of FFI calls.

NCG

Native code generator: GHC can generate assemply code directly for this platform, bypassing gcc.

f.i. wrapper

Support for foreign import "wrapper" (ghc/rts/Adjustor.c).

Dynamic libraries

Support for generating dynamically-linked sharable libraries from Haskell code.

Platforms that work in the current release

Architecture OS Build name Registerised GHCi NCG f.i. wrapper Dynamic libraries
x86 Windows (MinGW) i386-unknown-mingw32 Yes Yes Yes Yes No(*2)
x86 Linux i386-unknown-{linux,gnu} Yes Yes Yes Yes No
x86 FreeBSD i386-unknown-freebsd Yes Yes Yes Yes No
x86 OpenBSD i386-unknown-openbsd Yes Yes Yes Yes No
x86 NetBSD i386-unknown-netbsd Yes Yes Yes Yes No
x86 MacOS X i386-apple-darwin Yes Yes Yes Yes No
PowerPC AIX powerpc-ibm-aix Yes Yes Yes No
PowerPC Linux powerpc-unknown-linux Yes Yes Yes Yes No
PowerPC MacOS X powerpc-apple-darwin Yes Yes Yes Yes Yes
PowerPC64 Linux powerpc64-unknown-linux Yes No Yes No
Sparc Solaris sparc-sun-solaris2 Yes Yes No(*1) Yes No
Sparc Linux sparc-unknown-linux Yes Yes No(*1) Yes No
Sparc OpenBSD sparc-unknown-openbsd Yes Yes No(*1) Yes No
x86-64 Linux x86_64-unknown-linux Yes Yes Yes Yes No
x86-64 OpenBSD amd64-unknown-openbsd Yes Yes Yes Yes No
Mips64 Irix mips-unknown-linux No No No No No
IA-64 Linux ia64-unknown-linux Yes Yes No Yes No
Alpha Linux alpha-unknown-linux No No No Yes No
HPPA Linux hppa-unknown-linux No No No No No
S/390 Linux s390-ibm-linux No No No No No
m68k Linux m68k-unknown-linux No No No No No

*1 Sparc NCG bitrotted, but still in the tree
*2 Win32 DLL support bitrotted

Platforms that worked in the past

Architecture OS Build name Registerised GHCi NCG f.i. wrapper Dynamic libraries
x86 Windows (Cygwin) i386-unknown-cygwin32 Yes No Yes Yes No(*2)
x86 Solaris i386-unknown-solaris2 Yes No Yes Yes No
Alpha Dec OSF alpha-dec-osf3 No No No Yes No

Platforms currently being ported

Architecture OS Build name Registerised GHCi NCG f.i. wrapper Dynamic libraries WikiPage?
ARM Maemo (Linux) arm-unknown-linux-gnu No No No No No ArmLinuxGhc