YAML is complex and has security concerns most people are not aware of.
YAML is racist to Norwegians.
If you have something like country: NO (NO = Norway), YAML will turn that into country: False. Why? Implicit casting. There are a bunch of truthy strings that'll be cast automagically.
TOML is not a very good format IMO. It's fine for very simple config structures, but as soon as you have any level of nesting at all it becomes an unobvious mess. Worse than YAML even.
What is this even?
[[fruits]]
name = "apple"
[fruits.physical]
color = "red"
shape = "round"
[[fruits.varieties]]
name = "red delicious"
[[fruits.varieties]]
name = "granny smith"
[[fruits]]
name = "banana"
[[fruits.varieties]]
name = "plantain"
That's an example from the docs, and I have literally no idea what structure it makes. Compare to the JSON which is far more obvious:
Nice. I mostly use Qt JSON and upon reading the spec, I see at least a few things I would want to have out of this, even when using it for machine-machine communication
You're using a purposely convoluted example from the spec. And I think it shows exactly how TOML is better than JSON for creating config files.
The TOML file is a lot easier to scan than the hopelessly messy json file. The mix of indentation and symbols used in JSON really does not do well in bigger configuration files.
People bitch about YAML but for me it's still the preferred one just because the others suck more.
TOML like said is fine for simple things but as soon as you get a bit more complex it's messy and unwieldy. And JSON is fine to operate on but for a config? It's a mess. It's harder to type and read for something like a config file.
Heck, I'm not even sold on the S-expressions compared to yaml yet. But then, I deal with so much with all of these formats that I simply still prefer YAML for readability and ease of use (compared to the others.)