This directory contains a partial and slightly modified copy of
(LibYAML)[https://pyyaml.org/wiki/LibYAML] sources corresponding to
release 0.2.5. A copy of the LibYAML [license](License) is also included.

The source files are not compiled directly into the PETSc library. Rather they
are included in src/sys/objects/optionsyaml.c as static functions so they do not
pollute the public symbolic name space.

A list of the modifications follow:

* The emitter API and other output-related parts have been removed,
  as we are only interested in the input-related parts.
* `yaml_get_version()` and `yaml_get_version_string()` have been
  removed, as we do not need them.
* The constant `0` as been replaced by `NULL` in a few places to
  silence `-Wzero-as-null-pointer-constant` when using C++ compilers.
* The macro `YAML_DECLARE()` in `yaml.h` has been modified to specify
  `static` visibility for all LibYAML symbols.

Thanks to the exceptionally good source code organization in LibYAML,
the removals and minor modifications occur in large contiguous blocks
of code. This will make it quite easy to merge back upstream changes
to keep this copy properly synchronized and maintained, or even
incorporate some of the removed features if such need ever arises. We
recommend using a merge tool like [`meld`](https://meldmerge.org/) to
perform these future maintenance updates.
