---
title: "oneyaml"
url: https://recursiveai.org/oneyaml/
description: "One YAML 1.2 engine. Typed reads, and edits that keep your comments. Available for Rust; C# and Go coming soon, with the same behavior in every language."
---

# oneyaml

One YAML 1.2 engine. Typed reads, and edits that keep your comments.

- [GitHub](https://github.com/recursive-ai-oss/oneyaml-rust)
- [crates.io](https://crates.io/crates/oneyaml)
- [docs.rs](https://docs.rs/oneyaml)

## Languages

- [Rust](https://recursiveai.org/oneyaml/rust/): serde and lossless editing in one crate. (Available)
- [C#](https://recursiveai.org/oneyaml/csharp/): Written from scratch for .NET. (Coming soon)
- [Go](https://recursiveai.org/oneyaml/go/): Written from scratch for Go. (Coming soon)

## Change one value. Everything else stays exactly as you wrote it.

*config.yaml · Before*

```
# Web service
server:
  host: 0.0.0.0
  port: 8080   # public
tags: [web]
```

*set server.port, add a tag · After*

```
# 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](https://recursiveai.org/oneyaml/spec/)
