Difference between revisions of "Compilers"
m (Vladimir Panteleev moved page Comparison of Compilers to Compilers over a redirect without leaving a redirect: No rationale given and I don't see any improvement. This page is linked to from dlang.org/downloads, please don't mess with it lightly) |
(→Package and/or binary availability, by platform and compiler) |
||
Line 221: | Line 221: | ||
!Windows | !Windows | ||
| | | | ||
− | *[http://dlang.org/download.html Manual download] (2.068. | + | *[http://dlang.org/download.html Manual download] (2.068.2) |
− | *[https://chocolatey.org Chocolatey] (2.067.0, 2. | + | *[https://chocolatey.org Chocolatey] (2.067.0, 2.068.1 available awaiting moderation) |
| | | | ||
− | *[http://gdcproject.org/downloads Manual download] ( | + | *[http://gdcproject.org/downloads Manual download] (5.2.0 w/ dmd frontend 2.066.1) |
| | | | ||
− | *[https://github.com/ldc-developers/ldc/releases Manual download] (0.15.1, 0.15.2-beta2) | + | *[https://github.com/ldc-developers/ldc/releases Manual download] (0.15.1, 0.15.2-beta2, 0.16.0-alpha4) |
|--- | |--- | ||
!OS X | !OS X | ||
| | | | ||
− | *[http://brew.sh Homebrew] (2.068. | + | *[http://brew.sh Homebrew] (2.068.2) |
− | *[https://www.macports.org MacPorts] (2. | + | *[https://www.macports.org MacPorts] (2.068.0) |
− | *[http://dlang.org/download.html Manual download] (2.068. | + | *[http://dlang.org/download.html Manual download] (2.068.2) |
| | | | ||
| | | | ||
− | *[http://brew.sh Homebrew] (0.15. | + | *[http://brew.sh Homebrew] (0.15.2-beta2, 0.16.0-alpha4) |
− | *[https://github.com/ldc-developers/ldc/releases Manual download] (0.15.1, 0.15.2-beta2) | + | *[https://github.com/ldc-developers/ldc/releases Manual download] (0.15.1, 0.15.2-beta2, 0.16.0-alpha4) |
|--- | |--- | ||
!Linux (generic) | !Linux (generic) | ||
| | | | ||
− | *[http://dlang.org/download.html Manual download] (2.068. | + | *[http://dlang.org/download.html Manual download] (2.068.2) |
| | | | ||
− | *[http://gdcproject.org/downloads Manual download] ( | + | *[http://gdcproject.org/downloads Manual download] (5.2.0 w/ dmd frontend 2.066.1) |
| | | | ||
− | *[https://github.com/ldc-developers/ldc/releases Manual download] (0.15.1, 0.15.2-beta2) | + | *[https://github.com/ldc-developers/ldc/releases Manual download] (0.15.1, 0.15.2-beta2, 0.16.0-alpha4) |
|--- | |--- | ||
!Cross-platform | !Cross-platform | ||
Line 256: | Line 256: | ||
!Debian | !Debian | ||
| | | | ||
− | *[http://dlang.org/download.html Manual download] (2.068. | + | *[http://dlang.org/download.html Manual download] (2.068.2) |
− | *[http://d-apt.sourceforge.net APT repository] (2. | + | *[http://d-apt.sourceforge.net APT repository] (2.068.0) |
| | | | ||
− | *Stable/ | + | *Stable ([https://packages.debian.org/jessie/gdc-4.8 4.8.4], [https://packages.debian.org/jessie/gdc-4.9 4.9.2]) |
− | * | + | *Testing (([https://packages.debian.org/stretch/gdc-4.8 4.8.5], [https://packages.debian.org/stretch/gdc-4.9 4.9.3], [https://packages.debian.org/stretch/gdc-5 5.2.1])) |
− | * | + | *Unstable ([https://packages.debian.org/sid/gdc-4.8 4.8.5], [https://packages.debian.org/sid/gdc-4.9 4.9.3], [https://packages.debian.org/sid/gdc-5 5.2.1]) |
| | | | ||
*Stable/Testing/Unstable (0.14.0) | *Stable/Testing/Unstable (0.14.0) | ||
Line 268: | Line 268: | ||
!Ubuntu | !Ubuntu | ||
| | | | ||
− | *[http://dlang.org/download.html Manual download] (2.068. | + | *[http://dlang.org/download.html Manual download] (2.068.2) |
*[http://d-apt.sourceforge.net APT repository] (2.068.0) | *[http://d-apt.sourceforge.net APT repository] (2.068.0) | ||
| | | | ||
− | *14.04 (4.8. | + | *14.04 ([http://packages.ubuntu.com/trusty-updates/gdc-4.8 4.8.4]) |
− | * | + | *15.04 ([http://packages.ubuntu.com/vivid/gdc-4.8 4.8.4], [http://packages.ubuntu.com/vivid/gdc-4.9 4.9.2]) |
− | *15. | + | *15.10 ([http://packages.ubuntu.com/wily/gdc-4.8 4.8.5], [http://packages.ubuntu.com/wily/gdc-4.9 4.9.3], [http://packages.ubuntu.com/wily/gdc-5 5.2.1]) |
| | | | ||
− | *14.10 (0.14.0) | + | *15.04 ([http://packages.ubuntu.com/vivid/ldc 0.14.0]) |
+ | *15.10 ([http://packages.ubuntu.com/wily/ldc 0.14.0]) | ||
|--- | |--- | ||
!Fedora | !Fedora | ||
| | | | ||
− | *[http://dlang.org/download.html Manual download] (2.068. | + | *[http://dlang.org/download.html Manual download] (2.068.2) |
− | |||
| | | | ||
| | | | ||
− | + | See https://apps.fedoraproject.org/packages/ldc | |
*21 (0.13.0) | *21 (0.13.0) | ||
*22 (0.15.1) | *22 (0.15.1) | ||
− | * | + | *23 (0.15.2.beta1) |
+ | *Rawhide (0.16.0.alpha3) | ||
|--- | |--- | ||
!OpenSuse | !OpenSuse | ||
| | | | ||
− | *[https://build.opensuse.org/ | + | *[https://build.opensuse.org/package/show/devel:languages:D/dmd devel:languages:D] (2.068.1) |
− | |||
| | | | ||
| | | | ||
Line 299: | Line 299: | ||
!CentOS | !CentOS | ||
| | | | ||
− | *[http://dlang.org/download.html Manual download] (2.068. | + | *[http://dlang.org/download.html Manual download] (2.068.2) |
| | | | ||
| | | | ||
Line 305: | Line 305: | ||
!Arch Linux | !Arch Linux | ||
| | | | ||
− | *Community (2.068. | + | *Community (2.068.1) |
| | | | ||
*Community (5.2.0) | *Community (5.2.0) | ||
+ | *AUR ([https://aur.archlinux.org/packages/gdc-git/ git HEAD]) | ||
| | | | ||
*Community (0.15.1) | *Community (0.15.1) | ||
Line 316: | Line 317: | ||
!FreeBSD | !FreeBSD | ||
| | | | ||
− | *[http://dlang.org/download.html Manual download] (2.068. | + | *[http://dlang.org/download.html Manual download] (2.068.2) |
*Ports (2.067.0) | *Ports (2.067.0) | ||
| | | |
Revision as of 09:19, 24 September 2015
DMD »Digital Mars D compiler |
GDC »GCC D compiler |
LDC »LLVM D compiler |
Also see: Experimental compilers
Which compiler should I use?
If you're a beginner DMD is the recommended choice, as it is the implementation closest to the D Language Specification. Otherwise it depends on what you need, what platforms you intend to develop for, and your personal preferences. GDC and LDC both generate substantially faster binaries than DMD.
Comparison
DMD | GDC | LDC | |
---|---|---|---|
Platforms |
|
|
|
Architectures |
|
Complete (runtime / standard library) support:
Partial or bare-metal only support (packages for gdc in debian):
|
Complete (runtime / standard library) support:
Near-complete support:
Partial or bare-metal only support:
|
Distribution |
|
|
|
Backend | DMD (DMC fork) | GCC | LLVM |
License | Frontend: GPL 1 or later / Artistic License
Backend: custom |
GPL 3 or later | LDC-specific code: 3-clause BSD |
Inline assembler |
|
|
|
SIMD | Partial (?) | Partial (?) | Partial (?) |
Phobos as a shared library |
|
| |
Building D code as shared library |
|
| |
Dynamic loading of D shared libraries |
|
| |
Linux specific | |||
Object file format | ELF | ELF | ELF |
Mac specific | |||
Object file format | Mach-O | Mach-O | Mach-O |
Windows specific | |||
Object file format | OMF (32) / COFF (64) | COFF | COFF |
Package and/or binary availability, by platform and compiler
Version number is given in brackets. Many of the manual download links have 10s of versions available, only the most recent few are listed here.
Some unofficial repositories and downloads are listed here, but of course many more do exist. With a little searching, you may be able to find something more up to date for your chosen OS.
Very old compilers are (mostly) omitted, as they are unlikely to be of interest to users.
Platform |
Compiler | ||
---|---|---|---|
DMD | GDC | LDC | |
Windows |
|
|
|
OS X |
|
| |
Linux (generic) |
|
|
|
Cross-platform |
|
||
Distribution-specific packages | |||
Debian |
|
| |
Ubuntu |
|
||
Fedora |
|
See https://apps.fedoraproject.org/packages/ldc
| |
OpenSuse |
|
| |
CentOS |
|
||
Arch Linux |
|
|
|
Gentoo | see https://wiki.gentoo.org/wiki/Dlang | ||
FreeBSD |
|