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

$CHPL_HOME/doc/rst/developer/implementation/compilerOverview

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.

chplspell:

How to use chplspell to spellcheck the Chapel project.

Valgrind:

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

Sanitizers:

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.