tpt-yaml
RustA dependency-free Rust YAML toolkit — core parser/lexer, serde support, format-preserving editing, JSON Schema validation, and a CLI — built as a family of crates from the ground up (YAML 1.1/1.2 aware).
Languages
tpt-yaml
A dependency-light YAML toolkit for Rust, split into small crates so you only
pay for what you use. No dependency on any tpt-io-* crate — this family is
standalone.
| Crate | Status | Description |
|---|---|---|
tpt-yaml-core | in progress | Lexer, parser, arena-based node model, no_std + alloc + std, zero external dependencies |
tpt-yaml-serde | stub | serde Deserializer/Serializer over tpt-yaml-core's arena, plus a dynamic Value type |
tpt-yaml-edit | stub | Lossless, span-preserving edits: change a value, re-render only the touched subtree |
tpt-yaml-schema | stub | JSON Schema (2020-12 subset) validation for parsed YAML documents |
tpt-yaml-cli | stub | tpt-yaml binary: check, fmt, convert, diff subcommands |
tpt-yaml-ffi | in progress | C ABI foundation for language bindings |
tpt-yaml-wasm | stub | wasm-bindgen bindings for the browser/Node.js |
tpt-yaml-python | not yet implemented | Planned pyo3 bindings (scaffold only) |
Each crate has its own README.md (usage, design, known limitations) and CHANGELOG.md
(unreleased so far — nothing has been published).
Quick start
let doc = tpt_yaml_core::parse("key: value\nlist:\n - a\n - b\n")?;
let root = doc.root().unwrap();
Status
This is pre-1.0, under active development. See todo.md for the detailed build checklist and current status snapshot.
Publish order
Crates depend on each other in this order, so that's the order they'll be published in:
tpt-yaml-coretpt-yaml-serdetpt-yaml-edittpt-yaml-schematpt-yaml-clitpt-yaml-ffi
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.