- Arrays allow trailing commas!
- Comments! (From a JSON perspective, that's huge!)
- Dates are UTC!
- Simple syntax, no semicolon / commas, no need to check for matching braces!
- No way to go back to the global hash. Once you go down one level, can't go back up!
inGlobal = true
[keygroup]
inKeyGroup = true
# Here, you can't add a key to the global hash!
-
You can't have mixed data in arrays unless they're both one level deep!
So, it feels like arrays are typed, except that empty arrays are not.
key = [ [1], ["foo"], [] ]
- You can't have hashes inside arrays!
# That really should be an array.
[dependancy1]
groupId = "com.google.api-client"
artifactId = "google-api-client"
version = "1.13.2-beta"
[dependancy2]
groupId = "com.google.api-client"
artifactId = "google-api-client-servlet"
version = "1.13.1-beta"
- The specification is lacking!
- A document in UTF-16 / Windows 1252 must change encoding to UTF-8 in each string!
- What happens when the keygroup is the empty string?
- Lots of (informally-specified) things you can't encode: keys with
=
in them, keygroups with]
in them… (The current spec allows=
in keys by not forbidding it.) Which special characters are allowed in keys anyway?
Alternative: the Settings File Format.
Adding keys back to the global hash seems kind of strange to me. Why do you want it? And can you think of any convenient and simple syntax for doing so? One of the nice things about TOML is that all keys for any particular group are located in the same place. In fact, you're guaranteed this behavior because duplicate keys are not allowed.
Mixed arrays are bad. It's tough going for static languages, and it militates against well formed structured data. As of now, there is a proposal to add tuples and make arrays complete homogeneous. This will allow well-typed structured data while still allowing arrays to contain mixed data.
Also, empty arrays are typed! I'm not sure why you think they aren't. In the current spec, all arrays have type
array
. If my proposal for homogeneous arrays and tuples goes through, then empty arrays will be polymorphic (i.e., its component type is always equal to any other type).There is also a proposal for anonymous hashes, but the syntax is tough to get right and it isn't clear that it fits inside a simple configuration language.
This is a Good Thing.
The rest of your dislikes are just things that need to be clarified in the spec. I'm sure it will come with time---it's only been a week.