mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
## Summary - Remove YAML 1.1 legacy boolean values (`yes/no/on/off/y/Y`) that are not part of the YAML 1.2 Core Schema - Keep YAML 1.2 Core Schema compliant values: `true/True/TRUE`, `false/False/FALSE`, `null/Null/NULL`, `0x` hex, `0o` octal - Add comprehensive roundtrip tests for YAML 1.2 compliance **Removed (now parsed as strings):** - `yes`, `Yes`, `YES` (were `true`) - `no`, `No`, `NO` (were `false`) - `on`, `On`, `ON` (were `true`) - `off`, `Off`, `OFF` (were `false`) - `y`, `Y` (were `true`) This fixes a common pain point where GitHub Actions workflow files with `on:` keys would have the key parsed as boolean `true` instead of the string `"on"`. ## YAML 1.2 Core Schema Specification From [YAML 1.2.2 Section 10.3.2 Tag Resolution](https://yaml.org/spec/1.2.2/#1032-tag-resolution): | Regular expression | Resolved to tag | |-------------------|-----------------| | `null \| Null \| NULL \| ~` | tag:yaml.org,2002:null | | `/* Empty */` | tag:yaml.org,2002:null | | `true \| True \| TRUE \| false \| False \| FALSE` | tag:yaml.org,2002:bool | | `[-+]? [0-9]+` | tag:yaml.org,2002:int (Base 10) | | `0o [0-7]+` | tag:yaml.org,2002:int (Base 8) | | `0x [0-9a-fA-F]+` | tag:yaml.org,2002:int (Base 16) | | `[-+]? ( \. [0-9]+ \| [0-9]+ ( \. [0-9]* )? ) ( [eE] [-+]? [0-9]+ )?` | tag:yaml.org,2002:float | | `[-+]? ( \.inf \| \.Inf \| \.INF )` | tag:yaml.org,2002:float (Infinity) | | `\.nan \| \.NaN \| \.NAN` | tag:yaml.org,2002:float (Not a number) | Note: `yes`, `no`, `on`, `off`, `y`, `n` are **not** in the YAML 1.2 Core Schema boolean list. These were removed from YAML 1.1 as noted in [YAML 1.2 Section 1.2](https://yaml.org/spec/1.2.2/#12-yaml-history): > The YAML 1.2 specification was published in 2009. Its primary focus was making YAML a strict superset of JSON. **It also removed many of the problematic implicit typing recommendations.** ## Test plan - [x] Updated existing YAML tests to reflect YAML 1.2 Core Schema behavior - [x] Added roundtrip tests (stringify → parse) for YAML 1.2 compliance - [x] Verified tests fail with system Bun (YAML 1.1 behavior) and pass with debug build (YAML 1.2) - [x] Run `bun bd test test/js/bun/yaml/yaml.test.ts` 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com>