wiki:Platforms

Version 37 (modified by kili, 12 months ago) (diff)

betbsd/dragonflybsd using pkgsrc, so completely outdated and unsupported.

Platforms

The following table describes to what extent GHC currently supports various platforms. To find out who is responsible for each platform, see Contributors?.

For information about what distributions GHC is part of, see the distribution packages page.

Tier 1 platforms

Tier 1 platforms are our top priority. We only release GHC when they all work. Although there are not many Tier 1 platforms, they cover a very large fraction of our users.

Criteria for Tier 1 platforms:

  • An active buildbot client, capable of doing full builds and uploading distributions.
  • An active sponsor, willing to investigate and fix platform-specific bugs, and to work with us during the release process
Architecture OS Build name Reg'd GHCi NCG f.i. Dyn libs Sponsor WikiPage
x86 Windows (MinGW) i386-unknown-mingw32 Yes Yes Yes Yes Yes(*W) WindowsGhc
x86 Linux i386-unknown-{linux,gnu} Yes Yes Yes Yes Yes
x86-64 Linux x86_64-unknown-linux Yes Yes Yes Yes Yes
x86 MacOS X i386-apple-darwin Yes Yes Yes Yes No Attic/X86OSXGhc
x86-64 MacOS X x86_64-apple-darwin Yes Yes Yes Yes Yes
x86 FreeBSD i386-portbld-freebsd Yes Yes Yes Yes Yes Gabor Pali FreeBSDGhc
x86-64 FreeBSD amd64-portbld-freebsd Yes Yes Yes Yes Yes Gabor Pali FreeBSDGhc

*W Win32 DLL support bitrotten

Tier 2 platforms

Tier 2 platforms work (to varying degrees), but we rely on community support for developing, testing, and building distributions. We may release GHC with some Tier 2 platforms not working.

Platform-specific bugs on Tier 2 platforms are marked "low priority" (unless there's a strong reason not to do so), not because they are unimportant to the users of that platform, but to express the fact that they aren't going to hold up the release.

We'd like to promote as many Tier 2 platforms as possible to Tier 1, as soon as they meet the Tier 1 criteria.

Architecture OS Build name Reg'd GHCi NCG f.i. Dyn libs WikiPage
x86 OpenBSD i386-unknown-openbsd Yes Yes Yes Yes No
x86 Solaris i386-unknown-solaris2 Yes Yes Yes Yes No
x86-64 OpenBSD amd64-unknown-openbsd 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 No Yes No
Sparc Solaris sparc-sun-solaris2 Yes Yes Yes Yes No Building/Solaris
Sparc Linux sparc-unknown-linux Yes(*S2) Yes Yes Yes No
IA-64 Linux ia64-unknown-linux No No No No No Building/IA64Linux
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
mips Linux mips-unknown-linux No No No No No
mipsel Linux mipsel-unknown-linux No No No No No
ARM Linux arm-unknown-linux No No No No No
ARM Debian armel arm-linux-gnueabi Yes No No No No Building/ARMLinuxGnuEABI

*S1 Goetz Isenmann reports that GHCi is currently unable to load compiled code that refers to errno.
*S2 but see #591

In most cases, binaries for the tier 2 platforms can be downloaded from the Distribution Packages page, e.g. you can get binaries for most of the Linux platforms from Debian. In some cases, for example the Solaris platforms, you'll need to go to the download page of a particular release to get a bindist.

Tier 3 platforms

Tier 3 platforms worked in the past, but probably do not work now.

Architecture OS Build name Reg'd GHCi NCG f.i. Dyn libs WikiPage
Mips64 Irix mips-unknown-linux No No No No No
x86 Windows (Cygwin) i386-unknown-cygwin32 Yes No Yes Yes No(*2)
Alpha Dec OSF alpha-dec-osf3 No No No Yes No
ARM Maemo (Linux) arm-unknown-linux-gnu Yes No No No No ArmLinuxGhc
x86 NetBSD i386-unknown-netbsd Yes Yes Yes Yes No
x86 DragonFlyBSD i386-unknown-dflybsd Yes No(*S1) Yes Yes No
x86-64 NetBSD amd64-unknown-netbsd Yes Yes Yes Yes No

Definitions

Reg'd (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 assembly 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.