LibraryRust available
oneyaml
One YAML 1.2 engine. Typed reads, and edits that keep your comments.
Languages
Change one value. Everything else stays exactly as you wrote it.
# Web service server: host: 0.0.0.0 port: 8080 # public tags: [web]
# Web service server: host: 0.0.0.0 port: 9090 # public tags: [web, api]
One parser, one meaning
Typed reads and the lossless document share one parser and one resolver, so they never disagree about what a file means.
Edits that keep your file
An untouched document writes back byte for byte. An edit changes only what you touch, and every comment stays with its entry.
Correct YAML 1.2 by default
yes is a string and 0777 is a decimal. Every YAML 1.1 behavior is a named setting, off by default.
Safe on any input
No panics, resource limits on every read, and errors that come with a code, a snippet and a suggested fix.
Same behavior in every language
Each oneyaml is written from scratch for its own language, with an API that feels native there. What they share is behavior: the same reading of every file, the same edits, the same errors. One conformance kit checks every library.
The specification