Releases: azohra/yaml.sh
Release list
YAML.sh v1.3.0 — tiny YAML programming
YAML.sh remains one portable /bin/sh + AWK file, now with a substantially richer yq-shaped language and safer edits.
Highlights
- Map, entries, variables, dynamic indexes, reduce, sorting, string helpers, and deep merge
- Broader YAML syntax, Unicode escapes, multiline flow collections, and explicit block-scalar indentation
- Multi-document in-place transforms
- Presentation-preserving scalar updates with atomic replacement
- 64 behavioral tests across macOS, Ubuntu, and BusyBox AWK
- A strict SemVer policy: compatible capability work stays in v1.x
The same compatible code was briefly labeled v2.0.0. v1.3.0 is the canonical release because no v1 public contract was broken.
YAML.sh v1.2.0 — the tiny parser writes back
Version 1.2 turns YAML.sh from a read-only query engine into a writable YAML transformer—still one portable /bin/sh + AWK file.
Highlights:
- recursive descent (
..) and optional traversal (?) - array and object construction plus null input (
-n) - arithmetic, string/sequence concatenation, and shallow mapping
+ - assignment (
=), relative update (|=), compound updates, missing-path creation, anddel(...) - semantic YAML output with
-y/-o=yaml - permission-preserving in-place updates with
-i - multi-document in-place safety: reject before replacement instead of dropping documents
- 57 behavioral tests across macOS, Ubuntu, BusyBox AWK, and POSIX shell
- 18 representative v1.2 expressions matched yq v4.53.3 byte-for-byte in JSON mode
The honest bit: YAML output preserves semantic structure, not comments or presentation style. Variables, reducers, dynamic keys, deep merge, style/comment operators, file operators, and non-YAML codecs remain outside this tiny, mischievous subset.
YAML.sh v1.1.0 — now the nodes can flow
Version 1.1 adds a focused, read-only yq-style expression engine over the YAML.sh node graph.
Highlights:
- sequence and mapping iteration with []
- pipes and multi-result node streams
- select filters with comparisons and booleans
- // defaults for missing, null, and false values
- length, keys, has, kind, and yq-compatible type
- 47 behavioral tests across macOS, Ubuntu, BusyBox AWK, and POSIX shell
- 25 representative expressions matched yq v4.53.3 exactly in JSON mode
Expressions remain read-only in v1.1. Mutation and YAML emission are next.
YAML.sh v1.0.0 — yq energy, zero baggage
YAML.sh v1 is an intentionally breaking, ground-up rebuild: one portable /bin/sh script with an embedded AWK parser and a yq-style query language.
Highlights:
- real mapping, sequence, scalar, and alias node graph
- direct paths, JSON collection output, types, tags, source lines, AST, and events
- anchors, aliases, merge keys, directives, explicit scalar keys, and multiple documents
- tested on macOS AWK, Ubuntu AWK, BusyBox AWK, and POSIX shell syntax
- rebuilt website, docs, installer, and an honest support contract
Start: https://yaml.azohra.com/docs/#/getting-started
YAML support: https://yaml.azohra.com/docs/#/supported_yml
Migration guide: https://yaml.azohra.com/docs/#/migration
The standalone ysh script is attached below.
v0.4.0
Added
- Backward scalar, mapping, and sequence anchors and aliases with document scoping and recursion checks.
- Mapping merge keys from aliases, inline alias lists, and flow mappings with YAML merge precedence.
%YAMLand%TAGdirectives, scalar tag syntax, and explicit scalar mapping keys.--typeinspection for core scalar types while preserving text output.- An advanced conformance fixture plus explicit rejection tests for every documented boundary.
Fixed
- Reject undefined, forward, recursive, and non-mapping merge aliases with actionable errors.
- Reject duplicate keys and ambiguous flattened query paths instead of returning competing values.
- Reject unknown directives, collection-valued complex keys, block merge lists, and multiline flow collections instead of misparsing them.
Changed
- Buffer parser records so merge precedence and explicit overrides are deterministic.
- Replace the blanket feature disclaimer with a tested support contract and precise intentional limitations.
- Update GitHub Actions checkout to v7 and bound CI jobs to ten minutes.
v0.3.0
Added
- Nested flow mappings and flow lists.
- Literal and folded multiline scalar values.
- Indentationless block lists.
- Source line lookup with
--line. - Tests for every previously open issue, CRLF input, quoted values, comments, malformed YAML, and indexes above 9.
- GitHub Actions coverage on Ubuntu and macOS.
Fixed
- Preserve and decode quotes, backslashes, tabs, and newlines in scalar values.
- Treat query paths literally instead of as regular expressions.
- Count and read lists with multi-digit indexes.
- Reject malformed YAML instead of silently dropping the parser validation rules during the build.
- Report missing CLI arguments and unsafe unquoted transpiled input clearly.
- Update the installer and documentation to the current release.
Changed
- The standalone build now embeds the readable AWK parser without the lossy minification step.
-Tis documented as accepting one quoted intermediate-data argument.- The default GitHub branch and all three Cloudflare Pages production branches are now
main.