The Chapel Parallel Programming Language


Chapel License Information

Chapel License Information

The Chapel implementation is composed of two categories of code:

1) code that was specifically developed for, or contributed to, the
   Chapel project.  This code comprises the core of the Chapel
   implementation: the compiler, runtime, and standard/internal
   modules.  Code in this category is made available under the
   Apache v2.0 license, which can be found in 'LICENSE.chapel' 
   or at

2) code from other open-source projects that we package and
   redistribute for the convenience of end-users.  Packages in this
   category are made available under the terms of their original
   licenses, respectively.

   Packages in this second category are redistributed in the highlight/
   and third-party/ directories.  The following table provides a summary
   of the packages, their uses, and their licenses.

   directory/package  use                                          license
   -----------------  -------------------------------------------  -------
     emacs            emacs-based syntax coloring                  GPL
     vim              vim-based syntax coloring                    VIM

     chpl-venv        python packages supporting chpldoc & tests
       subprocess32   Back port of python3 subprocess to python2   Python
       argparse       Back port of argparse to < python2.7         Python
       PyYAML         YAML parser and emitter for Python           MIT
       Sphinx         Python documentation generator               BSD
                      The Chapel language domain for Sphinx        Apache v2.0
             theme for Sphinx             MIT
       Jinja2         A template engine written in Python          BSD
       MarkupSafe     XML/HTML/XHTML Markup safe string impl.      BSD
       Pygments       A syntax highlighting package                BSD
       docutils       Python Documentation Utilities               public domain
                                                                   GPL 3

     gasnet           portable communication library               BSD-like
     gmp              optional multi-precision math library        L-GPL
     hwloc            portable NUMA compute node utilities         new BSD
     jemalloc         alternative memory allocator                 BSD-like
     llvm             CLANG C parsing/optional back-end compiler   U of I/NCSA
     massivethreads   alternative lightweight tasking option       2-clause BSD
     qthread          alternative lightweight tasking option       new BSD
     re2              optional regular expression parsing library  new BSD
     utf8-decoder     used for runtime UTF-8 string decoding       MIT
     libunwind        used for runtime stack tracing               MIT

   For a more complete introduction to these packages and their
   licensing terms, refer to highlight/, third-party/README, and the
   README and license files in the subdirectories listed above.

   Note that not all of these packages are used by Chapel by default. The
   following table summarizes the conditions under which each package is used
   (see chplenv.rst for details on CHPL_* settings):

   directory/package  when used
   -----------------  ----------------------------------------------------
     emacs            only used if a user modifies their emacs environment
     vim              only used if a user modifies their vim environment

     chpl-venv        only used when running 'chpldoc' or 'start_test'
     gasnet           only used when CHPL_COMM is 'gasnet'
     gmp              only used when CHPL_GMP is 'gmp'
     hwloc            only used when CHPL_HWLOC is 'hwloc'
     jemalloc         only used when CHPL_MEM is 'jemalloc'
     llvm             only used when CHPL_LLVM is 'llvm'
     massivethreads   only used when CHPL_TASKS is 'massivethreads'
     qthread          only used when CHPL_TASKS is 'qthreads'
     re2              only used when CHPL_REGEXP is 're2'
     utf8-decoder     bundled into the Chapel runtime to decode UTF-8 strings
     libunwind        only used when CHPL_UNWIND is 'libunwind'

   For packages that are used based on a CHPL_* setting, note that this
   setting may either be explicitly or implicitly set. Additionally,
   some packages are only used if a speculative build was successful.
   See to
   see which packages are used by default and which ones are built
   speculatively. You can also check your CHPL_* settings by running
   $CHPL_HOME/util/printchplenv after Chapel has been built