# Contributing to the standard library

For guidelines about standard library content, see
[CONTRIBUTING.md](../CONTRIBUTING.md#contributing-to-the-standard-library).

First, build the compiler. Run `./configure`, then `make world.opt`. See
[HACKING.adoc](../HACKING.adoc).

Note: All paths are given relative to the root of the repository.

To add a new module, you must:
- Create new `.mli` and `.ml` files for the modules, obviously.
- Define the module in `stdlib/stdlib.mli`, `stdlib/stdlib.ml`, and
  `otherlibs/threads/stdlib.ml` in the section of the code commented,
  "MODULE ALIASES". Please maintain the same style as the rest of the code, in
  particular the alphabetical ordering and whitespace alignment of module
  aliases. Note that `otherlibs/threads/stdlib.mli` is a symbolic link to
  `stdlib/stdlib.mli`.
- Add `$(P)module_name.cmo` to the definition of `OTHERS` in `stdlib/Makefile`
  and `otherlibs/threads/Makefile`.
- Add `$(P)module_name` to the definition of `STDLIB_MODULES` in
  `stdlib/StdlibModules`. Please maintain the alphabetical order.
- Run `make alldepend` to update all the `.depend` files. These files are not
  edited by hand.
- Run `make clean`, then `make world.opt`.

If you are adding multiple modules, follow the steps above and rebuild the
compiler after adding each module. If you add multiple modules before
rebuilding, the build may fail.

Add documentation for contributing to the stdlib
Add documentation for contributing to the stdlib
