Difference between revisions of "Compilers"
(→Experimental compilers and forks: Add dtojs) |
m (→Experimental compilers and forks: Reword) |
||
Line 343: | Line 343: | ||
* [[SDC|SDC (Stupid D Compiler)]] - from-scratch D compiler implementation, written in idiomatic D. | * [[SDC|SDC (Stupid D Compiler)]] - from-scratch D compiler implementation, written in idiomatic D. | ||
− | * [https://github.com/Syniurge/Calypso Calypso] - LDC fork which provides direct Clang interoperability, | + | * [https://github.com/Syniurge/Calypso Calypso] - LDC fork which provides direct Clang interoperability, allowing the use of C headers directly. |
* [https://github.com/smolt/ldc-iphone-dev LDC for iOS] - LDC-based toolkit for cross-compiling to iOS | * [https://github.com/smolt/ldc-iphone-dev LDC for iOS] - LDC-based toolkit for cross-compiling to iOS | ||
* [https://github.com/joakim-noah/android/releases D for Android] - Toolkit for cross-compiling to Android (x86 using DMD and ARM using LDC) | * [https://github.com/joakim-noah/android/releases D for Android] - Toolkit for cross-compiling to Android (x86 using DMD and ARM using LDC) |
Revision as of 06:12, 2 March 2016
DMD »Digital Mars D compiler |
GDC »GCC D compiler |
LDC »LLVM D compiler |
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 |
|
Experimental compilers and forks
- SDC (Stupid D Compiler) - from-scratch D compiler implementation, written in idiomatic D.
- Calypso - LDC fork which provides direct Clang interoperability, allowing the use of C headers directly.
- LDC for iOS - LDC-based toolkit for cross-compiling to iOS
- D for Android - Toolkit for cross-compiling to Android (x86 using DMD and ARM using LDC)
- MicroD - DMD fork which outputs C source code instead of object files
- dtojs - DMD fork which outputs JavaScript source code instead of object files
- DIL - D compiler written in D2/Tango (inactive project)
Category page: Experimental compilers