LDC contributor's guide

From D Wiki
Revision as of 19:28, 7 February 2013 by Klickverbot (talk | contribs)
Jump to: navigation, search

This page is a work-in-progress collection of tips for LDC contributors and development guidelines.

Continuous Integration

The LDC project uses two different CI systems: Travis CI, which is Ubuntu x86 only but also tests pull requests, and ci.lycus.org, which has three different x86_64 Linux slaves.

Any efforts to get regular builds running on Windows and OS X would be very much appreciated.

Style guidelines

Generally, use your good taste and try to use a style similar to the surrounding code. Many parts of the LLVM Coding Standards are directly applicable to LDC as well.

Formatting, etc.

  • Hard rules: 4 spaces for indentation, LF newlines.
  • Use include guards consistently, in the format LDC_<dir>_<filename>, e.g. LDC_GEN_DVALUE_H.
  • Includes are placed at the top of the file, sorted lexicographically and grouped in the following order:
    1. Main include corresponding to the .cpp file, if any.
    2. DMD and other LDC includes.
    3. LLVM/libconfig includes.
    4. System includes.

APIs and idioms

  • Use llvm_unreachable("message") instead of assert(0 && "message") (from llvm/Support/ErrorHandling.h). Not only might it lead to slightly better codegen, it also prevents »variable might be used uninitialized« and similar compiler warnings.