.. _contributing:

================================
Contributing to the libc Project
================================

LLVM's libc is being developed as part of the LLVM project so contributions
to the libc project should also follow the general LLVM
`contribution guidelines <https://llvm.org/docs/Contributing.html>`_. Below is
a list of open projects that one can start with:

#. **Cleanup code-style** - The libc project follows the general
   `LLVM style <https://llvm.org/docs/CodingStandards.html>`_ but differs in a
   few aspects: We use ``snake_case`` for non-constant variable and function
   names,``CamelCase`` for internal type names (those which are not defined in a
   public header), and ``CAPITALIZED_SNAKE_CASE`` for constants. When we started
   working on the project, we started using the general LLVM style for
   everything. However, for a short period, we switched to the style that is
   currently followed by the `LLD project <https://github.com/llvm/llvm-project/tree/main/lld>`_.
   But, considering that we implement a lot of functions and types whose names
   are prescribed by the standards, we have settled on the style described above.
   However, we have not switched over to this style in all parts of the ``libc``
   directory. So, a simple but mechanical project would be to move the parts
   following the old styles to the new style.

#. **Integrating with the rest of the LLVM project** - There are two parts to
   this project:

   #. One is about adding CMake facilities to optionally link the libc's overlay
      static archive (see :ref:`overlay_mode`) with other LLVM tools/executables.
   #. The other is about putting plumbing in place to release the overlay static
      archive (see :ref:`overlay_mode`) as part of the LLVM binary releases. 

#. **Implement Linux syscall wrappers** - A large portion of the POSIX API can
   be implemented as syscall wrappers on Linux. A good number have already been
   implemented but many more are yet to be implemented. So, a project of medium
   complexity would be to implement syscall wrappers which have not yet been
   implemented.

#. **Add a better random number generator** - The current random number
   generator has a very small range. This has to be improved or switched over
   to a fast random number generator with a large range.

#. **Update the clang-tidy lint rules and use them in the build and/or CI** -
   Currently, the :ref:`clang_tidy_checks` have gone stale and are mostly unused
   by the developers and on the CI builders. This project is about updating
   them and reintegrating them back with the build and running them on the
   CI builders.

#. **double and higher precision math functions** - These are under active
   development but you can take a shot at those not yet implemented. See
   :ref:`math` for more information.

#. **Contribute a new OS/Architecture port** - You can contribute a new
   operating system or target architecture port. See :ref:`porting` for more
   information.
