:sig
DValue yaml_decode(String s)

:params
s : YAML source string
return value : decoded DValue

:see
>markup
yaml_encode
json_decode
xml_decode
0_DValue

:content
Parses a practical YAML subset into a `DValue`.

`yaml_decode()` is designed for concise UCE config files. It intentionally avoids full YAML schema behavior and does not support anchors, aliases, tags, directives, or complex inline collection syntax.

Try the live example in the [YAML demo](../demo/yaml.uce).

Example:

```uce
String source = "app:\n"
	"  name: UCE Starter\n"
	"  debug: true\n"
	"  port: 8080\n"
	"  paths:\n"
	"    - site\n"
	"    - cache\n";

DValue cfg = yaml_decode(source);

cfg["app"]["name"].to_string();       // UCE Starter
cfg["app"]["debug"].to_bool();        // true
cfg["app"]["port"].to_s64();          // 8080
cfg["app"]["paths"]["1"].to_string(); // cache
```

Supported syntax:

- indentation-based maps
- indentation-based lists
- `key: value` map entries
- list entries with `- value`
- quoted strings with single or double quotes
- booleans `true` and `false`
- empty/null-ish values as empty strings
- comments beginning with `#` outside quoted strings
- literal block strings with `|`
- folded block strings with `>`
- optional `---` and `...` document markers

Numeric-looking values are stored as strings, matching `json_decode()`'s current behavior. Use `to_s64()`, `to_u64()`, or `to_f64()` when reading numeric config values.

Malformed input raises a request-visible `yaml_decode(): ...` runtime error.
