Best Practices for Contributors

This directory contains rough notes intended to be helpful in pointing out features/quirks of the Chapel development experience for new developers. A possible reading order is roughly as follows:

Getting Started:

A list of suggested “first steps” for new developers.

Contributor Info and Getting started with Chapel and the Developer Certificate of Origin (DCO):

Information for contributors about setting up github accounts, the developer workflow, and testing changes.

Compiler documentation:
Compiler Library API Docs:

API documentation for the compiler library

The compiler overview document in


Tips On Debugging The Compiler:

Tips on debugging the compiler.

Examining/Debugging Compiler IR:

Tips on examining compiler IR during/after compilation.

How To Generate Warnings And Error Messages:

The standard ways to report errors and warnings in Chapel/compiler/runtime.

The Chapel Runtime Library:

All about the runtime library.

All About Compiler-Generated Code:

All about compiler-generated code: where it is, timing it, debugging/profiling, etc.

Running Chapel Programs with GASNet on your Desktop:

Tips on running and debugging Chapel programs with GASNet on your desktop.

Git tips for Chapel developers:

Tips for using git.

The CHPL_DEVELOPER environment variable:

The most important environment variable you want to set, and what it does.

Chapel Testing System:

All about the Chapel testing system.


How to use chplspell to spellcheck the Chapel project.


Building the Chapel compiler so that compiled programs work with valgrind.


Enabling sanitizers for the compiler and/or executable.

Chapel’s Deprecation Policy:

How to deprecate standard library routines

Nightly Testing

How to run nightly testing

Standard Module Style:

Style guidance when writing standard modules

How to test ANNOTATIONS.yaml changes locally:

How to test ANNOTATIONS.yaml changes locally

Building Chapel Documentation:

Information about building and updating the Chapel documentation

Miscellaneous Notes:

Notes not in any of the above categories.