tl;dr
ryaml is a YAML 1.1 parser that is both drop-in compatible and faster than PyYAML. And it's written in safe Rust too!
Four (4) years ago, I wanted to make a YAML library that was fast and memory safe. This was originally a yak shave for another project. I've forgotten which project since then! The result of that work was ryaml, a YAML parsing library for Python built on top of serde-yaml, which at the time was the go-to Rust yaml parsing library. Serde-yaml was fantastic to use at it allowed me to create the library in a performant manner while being very simple to implement. Together with serde-yaml I was able to use pythonize by David Hewitt (lead PyO3 maintainer) to quickly convert from YAML text to Python objects and back again.
The project was successful; ryaml was incredibly fast, and used Rust to parse scalar values like integers, strings, and floats. However, the initial version of ryaml had issues which I felt limited it from reaching where I wanted it to be.
Safety
Serde-yaml used libyaml-unsafe, under the hood, an unsafe Rust port of libyaml using c2rust. This was good for compatibility, (see the next section), but meant that ryaml's core was still unsafe. Unsafe Rust has a lot of benefits over C, but I wanted a majority of the parsing to happen in safe Rust to minimize the chance of memory-based exploits.
Compatibility
Serde-yaml did not support all of the features in YAML 1.1 that PyYAML does, such as binary types. I wanted ryaml to be drop-in compatible with PyYAML eventually. To reach that goal would require handling a lot of extra parsing