1. Significant whitespace in a data storage file doesn't scale. Yes, eventually someone wants to dump a giant graph of data and the library breaks.
2. Intermixed context on quoteless strings. Intermixing code and data doesn't work reliably. Every where I see it tried I see it break. If you don't want quotes on your strings, then you have to put something on your keywords. A simple @no would have stopped this and other situations.
As an aside, I find it stupid to have multiple names for true, false, and null.
Not breaking backwards compatibility in a minor version bump of a data format was absolutely common sense in 2009.
1 : 1,0
2: 01
3: 1.0
4: 1O
5: 0b1
6: 0x1
7: 0i1
8: hey,
8.0: oh,
version: [3.1, "3.1", 3.10, "3.10"]
Gives you: {
"1": "1,0",
"2": 1,
"3": 1.0,
"4": "1O",
"5": 1,
"6": 1,
"7": "0i1",
"8": "oh,",
"version": [
3.1,
"3.1",
3.1,
"3.10"
]
}
YAML turns raw literals into strings, except when the string matches a certain format. Then it may turn it into other things, like int or float, and you better know all the rules by heart and be attentive. And not introduce any typo, which of course no human ever does.(This issue was recognised and since yaml 1.2 (2009) the spec says "no" is a string, packages like https://yaml.readthedocs.io/ have migrated a while ago)