* Android support is in beta: all the stdlib and compiler tests pass for Android/ARM, and GUI apps have been built.

+

* [https://github.com/ldc-developers/ldc/releases/tag/v1.4.0 Cross-compilation support for 32-bit Android/ARM has been added with the 1.4 release], [[Build D for Android|instructions on setup and building simple apps are available]].

−

* [https://github.com/joakim-noah/android/releases You can download a cross-compiler for Android/ARM and the patches used at this github release page]. There are also [[Build LDC for Android|instructions on how to build everything from source yourself]].

+

* [https://github.com/ldc-developers/ldc/issues/2153 Work on 64-bit ARM, AArch64, is ongoing], the other Android CPU architectures are not used much.

−

* Android/x86 works but hasn't been tested in a year. MIPS and the 64-bit architectures have not been tried.

=== ARM ===

=== ARM ===

Line 39:

Line 38:

* LDC from Git branch ltsmaster passes most tests in the test suite (2 are failing).

* LDC from Git branch ltsmaster passes most tests in the test suite (2 are failing).

* LDC has successfully been used to create a minimal free-standing ARM Cortex-M binary, see [[Minimal semihosted ARM Cortex-M %22Hello_World%22]].

* LDC has successfully been used to create a minimal free-standing ARM Cortex-M binary, see [[Minimal semihosted ARM Cortex-M %22Hello_World%22]].

Revision as of 15:50, 19 September 2017

The LDC project aims to provide a portable D programming language compiler with modern optimization and code generation capabilities. The compiler uses the official DMD frontend to support the latest D2 version and relies on the LLVM Core libraries for code generation.

LDC is fully Open Source; the parts of the code not taken/adapted from other projects are BSD-licensed (see the LICENSE file for details).

D1 is no longer supported in the current development tree; the last version supporting it can be found at the d1 Git branch.

Project status

In general, LDC should work fine on most x86/x86_64 systems, including Windows, Linux, OS X 10.7+, Solaris and most BSD flavors. Code generation should work for other platforms supported by the LLVM MC codegen infrastructure (for example, ARM or PowerPC), but druntime/Phobos support is sometimes lacking.

MinGW

x86 MinGW support was almost complete at one stage, but got neglected in favor of 'native' MSVC targets on Windows.
A manageable number of adaptations (mainly in druntime) would probably suffice to support it again.

OS X

OS X version prior to 10.7 (Lion) are not supported in D2, because LLVM's thread-local storage support depends on functionality introduced in 10.7.

Contributing

LDC is an entirely community-driven effort, so all contributions are warmly welcomed. The easiest way to help with development is to write high-quality bug reports for any issues you run into. For a quick guide on what a useful report should contain, please see Reporting LDC issues.

If you are interested in getting into compiler development, anecdotal evidence suggests that hacking on LDC might be a nice first step, particularly because the LLVM backend is very comfortable to work with. To get started, just browse through the issue list, find a ticket that tickles your fancy (some of them are specifically marked as "junior jobs"), and work on a fix – and of course don't hesitate to ask for advice at the mailing list or on IRC. An LDC contributor's guide is in the works. Have a look at LDC project ideas for a list of features/improvements to add to LDC.

We would also be excited to see LDC packages in more OS distributions, particular Debian and its derivatives. So, if you think you might be able to help, please just drop us a line at the development mailing list. We will actively try to make packaging as smooth as possible, but besides the fact that upstream-maintained packages are sometimes discouraged, it is hard to build good packages for a system you don't know well, so we need to rely on external contributors here.