* TOML is case-sensitive.
* A TOML file must be a valid UTF-8 encoded Unicode document.
* Whitespace means tab (0x09) or space (0x20).
* Newline means LF (0x0A) or CRLF (0x0D 0x0A).
A hash symbol marks the rest of the line as a comment, except when inside a
string.
A key may be either bare, quoted, or dotted.
Values must have one of the following types.
- [String](#string)
- [Integer](#integer)
- [Float](#float)
- [Boolean](#boolean)
- [Offset Date-Time](#offset-date-time)
- [Local Date-Time](#local-date-time)
- [Local Date](#local-date)
- [Local Time](#local-time)
- [Array](#array)
- [Inline Table](#inline-table)
There are four ways to express strings: basic, multi-line basic, literal, and
multi-line literal. All strings must contain only valid UTF-8 characters.
To unambiguously represent a specific instant in time, you may use an [RFC
3339](https://tools.ietf.org/html/rfc3339) formatted date-time with offset.
Arrays are square brackets with values inside. Whitespace is ignored. Elements
are separated by commas.
Inline tables provide a more compact syntax for expressing tables.
Tables (also known as hash tables or dictionaries) are collections of key/value
pairs. They are defined by headers, with square brackets on a line by
themselves.
The last syntax that has not yet been described allows writing arrays of tables.
TOML files should use the extension `.toml`.
When transferring TOML files over the internet, the appropriate MIME type is
`application/toml`.