Difference between revisions of "Compilers"
(add Android, fix others) |
|||
Line 52: | Line 52: | ||
*OS X | *OS X | ||
*FreeBSD | *FreeBSD | ||
+ | *Android (source) | ||
| | | | ||
*Windows (alpha) | *Windows (alpha) | ||
Line 64: | Line 65: | ||
*OpenSolaris | *OpenSolaris | ||
*iOS (experimental) | *iOS (experimental) | ||
+ | *Android (alpha) | ||
|--- | |--- | ||
Line 97: | Line 99: | ||
* i386 | * i386 | ||
* amd64 | * amd64 | ||
+ | * armel | ||
Near-complete support: | Near-complete support: | ||
Line 106: | Line 109: | ||
Partial or bare-metal only support: | Partial or bare-metal only support: | ||
− | |||
* armhf | * armhf | ||
* mips | * mips | ||
Line 165: | Line 167: | ||
| | | | ||
* Linux | * Linux | ||
+ | * FreeBSD ? | ||
| | | | ||
| | | | ||
Line 172: | Line 175: | ||
| | | | ||
* Linux | * Linux | ||
+ | * FreeBSD ? | ||
* Windows ? | * Windows ? | ||
| | | | ||
Line 201: | Line 205: | ||
|--- | |--- | ||
|'''Object file format''' | |'''Object file format''' | ||
− | | OMF (32) / COFF (64) | + | | OMF (32) / COFF (32 & 64) |
| COFF | | COFF | ||
| COFF | | COFF | ||
Line 246: | Line 250: | ||
| | | | ||
*[https://github.com/smolt/ldc-iphone-dev/releases Manual download] (0.16.1 experimental) | *[https://github.com/smolt/ldc-iphone-dev/releases Manual download] (0.16.1 experimental) | ||
+ | |--- | ||
+ | !Android | ||
+ | | | ||
+ | *[[Build DMD for Android|Source]] (2.070 git master) | ||
+ | | | ||
+ | | | ||
+ | *[https://github.com/joakim-noah/android/releases/tag/runners Manual download] (0.17.0 alpha) | ||
+ | *[[Build LDC for Android|Source]] (0.17.0 alpha) | ||
|--- | |--- | ||
!Linux (generic) | !Linux (generic) |
Revision as of 17:31, 6 November 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 (32 & 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 |
|
| |
iOS |
| ||
Android |
|
| |
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 |
|