Core parser parity
Each core `ast-merge` package exposes a compact ruleset parser for the shared .smrules corpus.
Viability
The Go, TypeScript, Rust, and Ruby implementations consume shared specs and fixtures as peers.
Each core `ast-merge` package exposes a compact ruleset parser for the shared .smrules corpus.
Format-specific packages own syntax-aware merge behavior for JSON, YAML, TOML, Markdown, source languages, and text.
Families with multiple parser backends declare backend restrictions explicitly.
Library matrix
Each cell links to the package or crate inside its implementation metarepo.
| Syntax / format | Ruby | Go | Rust | TypeScript |
|---|---|---|---|---|
| Tree substrate | tree_haver | treehaver | tree-haver | tree-haver |
| Compact rulesets | ast-merge | astmerge | ast-merge | ast-merge |
| Plain text | plain-merge | plainmerge | plain-merge | plain-merge |
| JSON | json-merge | jsonmerge | json-merge | json-merge |
| YAML | yaml-merge | yamlmerge | yaml-merge | yaml-merge |
| TOML | toml-merge | tomlmerge | structuredmerge-toml-merge | toml-merge |
| Markdown | markdown-merge | markdownmerge | markdown-merge | markdown-merge |
| Ruby source | ruby-merge | rubymerge | ruby-merge | ruby-merge |
| Go source | go-merge | gomerge | go-merge | go-merge |
| Rust source | rust-merge | rustmerge | rust-merge | rust-merge |
| TypeScript source | typescript-merge | typescriptmerge | typescript-merge | typescript-merge |
| Binary core | binary-merge | binarymerge | binary-merge | binary-merge |
| ZIP archives | zip-merge | zipmerge | zip-merge | zip-merge |