Looking up between financial district towers against a clear sky.

Security

Safe to hand untrusted input. Safe to depend on.

A parser sits between the network and your program. These are the measures that keep that seat honest.

Handling hostile documents

The classic attacks on a YAML parser are aliases that expand into gigabytes, nesting that overflows the stack, and documents that never end. noyalib counts alias occurrences, caps nesting depth, bounds the node count and the input size, and treats each limit as an error. The defaults are on without configuration, and each can be raised or lowered per parser.

No code path is unsafe. The compiler enforces #![forbid(unsafe_code)] in every crate, and Miri checks the parser for undefined behaviour on every pull request. Fifteen fuzz targets run on every push.

Releases you can verify

Every release attaches a cosign keyless signature and a SLSA level 3 attestation to each binary, a GPG signature, and a CycloneDX software bill of materials. The verification guide gives the commands. Commits on the main branches are signed, and a CI job refuses a pull request whose commits are not.

Dependencies

cargo-deny checks advisories, licences, bans and sources on every push. cargo-vet records an audit or an exemption for every dependency and fails when one appears that has neither. cargo-machete refuses an unused one. The library's default profile carries eight runtime dependencies; the minimal profile carries five.

Every GitHub Action the family uses is pinned to a commit, not a tag. The family scorecard counts them: 135 of 135 at the last run.

Reporting a problem

Please report a security issue privately. The security policy gives the address, the response time you can expect, and how disclosure is handled. Advisories are published through GitHub and the RustSec database.

What the website does

This site is static files with a strict content security policy. It loads nothing from a third party, sets no cookies and runs no analytics. The playground runs the parser inside your tab and sends nothing anywhere.