tpt-yaml

Rust

A 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).

0 stars0 forks0 watchersApache License 2.0

Languages

Rust95.8%C4.2%
README

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.

CrateStatusDescription
tpt-yaml-corein progressLexer, parser, arena-based node model, no_std + alloc + std, zero external dependencies
tpt-yaml-serdestubserde Deserializer/Serializer over tpt-yaml-core's arena, plus a dynamic Value type
tpt-yaml-editstubLossless, span-preserving edits: change a value, re-render only the touched subtree
tpt-yaml-schemastubJSON Schema (2020-12 subset) validation for parsed YAML documents
tpt-yaml-clistubtpt-yaml binary: check, fmt, convert, diff subcommands
tpt-yaml-ffiin progressC ABI foundation for language bindings
tpt-yaml-wasmstubwasm-bindgen bindings for the browser/Node.js
tpt-yaml-pythonnot yet implementedPlanned 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:

  1. tpt-yaml-core
  2. tpt-yaml-serde
  3. tpt-yaml-edit
  4. tpt-yaml-schema
  5. tpt-yaml-cli
  6. tpt-yaml-ffi

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.