Difference between revisions of "Compilers"

From D Wiki
Jump to: navigation, search
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.0)
+
*[http://dlang.org/download.html Manual download] (2.068.2)
*[https://chocolatey.org Chocolatey] (2.067.0, 2.067.1 available awaiting moderation)
+
*[https://chocolatey.org Chocolatey] (2.067.0, 2.068.1 available awaiting moderation)
 
|
 
|
*[http://gdcproject.org/downloads Manual download] (4.9.2)
+
*[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.0)
+
*[http://brew.sh Homebrew] (2.068.2)
*[https://www.macports.org MacPorts] (2.067.0)
+
*[https://www.macports.org MacPorts] (2.068.0)
*[http://dlang.org/download.html Manual download] (2.068.0)
+
*[http://dlang.org/download.html Manual download] (2.068.2)
 
|
 
|
 
|
 
|
*[http://brew.sh Homebrew] (0.15.1, 0.15.2-beta2)
+
*[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.0)
+
*[http://dlang.org/download.html Manual download] (2.068.2)
 
|
 
|
*[http://gdcproject.org/downloads Manual download] (4.9.2)
+
*[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.0)
+
*[http://dlang.org/download.html Manual download] (2.068.2)
*[http://d-apt.sourceforge.net APT repository] (2.067.1)
+
*[http://d-apt.sourceforge.net APT repository] (2.068.0)
 
|
 
|
*Stable/Testing (4.8.4, 4.9.2)
+
*Stable ([https://packages.debian.org/jessie/gdc-4.8 4.8.4], [https://packages.debian.org/jessie/gdc-4.9 4.9.2])
*Unstable (4.8.4, 4.9.2, 5.1.1)
+
*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]))
*Experimental (5.x.x)
+
*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.0)
+
*[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.2)
+
*14.04 ([http://packages.ubuntu.com/trusty-updates/gdc-4.8 4.8.4])
*14.10 (4.8.3, 4.9.1)
+
*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.04 (4.8.4, 4.9.2)
+
*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.0)
+
*[http://dlang.org/download.html Manual download] (2.068.2)
*20/21 [https://build.opensuse.org/package/show?project=home%3Azhonghuaren&package=dmd Unofficial repository] (2.066.1)
 
 
|
 
|
 
|
 
|
*20 (between 0.13.0-alpha1 and 0.13.0-alpha2)
+
See https://apps.fedoraproject.org/packages/ldc
 
*21 (0.13.0)
 
*21 (0.13.0)
 
*22 (0.15.1)
 
*22 (0.15.1)
*Rawhide (0.15.2-beta1)
+
*23 (0.15.2.beta1)
 +
*Rawhide (0.16.0.alpha3)
 
|---
 
|---
 
!OpenSuse
 
!OpenSuse
 
|
 
|
*[https://build.opensuse.org/project/show/devel:languages:D devel:languages:D] (2.068.0)
+
*[https://build.opensuse.org/package/show/devel:languages:D/dmd devel:languages:D] (2.068.1)
<!--*[https://build.opensuse.org/project/show/home:marc_schuetz:branches:devel:languages:D home:marc_schuetz] (2.067.0)-->
 
 
|
 
|
 
|
 
|
Line 299: Line 299:
 
!CentOS
 
!CentOS
 
|
 
|
*[http://dlang.org/download.html Manual download] (2.068.0)
+
*[http://dlang.org/download.html Manual download] (2.068.2)
 
|
 
|
 
|
 
|
Line 305: Line 305:
 
!Arch Linux
 
!Arch Linux
 
|
 
|
*Community (2.068.0)
+
*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.0)
+
*[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

Compilers: OverviewDMDGDCLDC

DMD »

Digital Mars D compiler
The formal D compiler.

GDC »

GCC D compiler
Fast and open source.

LDC »

LLVM D compiler
Fast and open source.


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
  • Windows
  • Linux
  • OS X
  • FreeBSD
  • Windows (alpha)
  • Linux
  • OS X (untested)
  • FreeBSD (untested)
  • Windows
  • Linux
  • OS X
  • FreeBSD
  • iOS (experimental)
Architectures
  • i386
  • amd64

Complete (runtime / standard library) support:

  • i386
  • amd64
  • x32
  • armel
  • armhf

Partial or bare-metal only support (packages for gdc in debian):

  • alpha
  • arm64 (aarch64)
  • hppa
  • hurd-i386
  • kfreebsd-amd64
  • kfreebsd-i386
  • m68k
  • mips
  • mipsel
  • ppc
  • pcc64
  • ppc64el
  • s390x
  • sparc64

Complete (runtime / standard library) support:

  • i386
  • amd64

Near-complete support:

  • arm64 (aarch64)
  • ppc
  • ppc64
  • ppc64el
  • mips

Partial or bare-metal only support:

  • armel
  • armhf
Distribution
  • Source
  • Multi-platform source/binary archive
  • Multi-platform installer (DVM)
  • Windows installer
  • OS X package (.dmg)
  • Debian/Ubuntu package (.deb)
  • Fedora package (.rpm)
  • OpenSUSE (.rpm) package
  • Debian/Ubuntu repository via http://d-apt.sourceforge.net
  • OS-X homebrew and macports repositories
  • Source
  • Windows / Linux binary archive
  • Debian/Ubuntu repository
  • Gentoo repository
  • Archlinux repository
  • Source
  • Linux / OS X binary archive
  • Debian/Ubuntu repository
  • Fedora repository
  • Gentoo repository
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
  • DMD Intel-like syntax (i386/amd64)
  • GCC syntax (all targets)
  • DMD Intel-like syntax (i386/amd64)
  • GCC syntax (all targets)
  • LLVM inline IR
SIMD Partial (?) Partial (?) Partial (?)
Phobos as a shared library
  • Linux
  • Linux
Building D code as shared library
  • Linux
  • Windows ?
  • Linux
Dynamic loading of D shared libraries
  • Linux
  • Linux

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
  • DVM (Any version)
Distribution-specific packages
Debian
  • Stable/Testing/Unstable (0.14.0)
  • Experimental (0.15.1)
Ubuntu
Fedora

See https://apps.fedoraproject.org/packages/ldc

  • 21 (0.13.0)
  • 22 (0.15.1)
  • 23 (0.15.2.beta1)
  • Rawhide (0.16.0.alpha3)
OpenSuse
CentOS
Arch Linux
  • Community (2.068.1)
  • Community (0.15.1)
Gentoo see https://wiki.gentoo.org/wiki/Dlang
FreeBSD