TOML | |
---|---|
![]() | |
Filename extension | .toml |
Internet media type | application/toml |
Developed by |
|
Initial release | 23 February 2013 |
Latest release | 1.0.0 [1] 12 January 2021 |
Type of format | Data interchange |
Open format? | Yes |
Website | toml |
Tom's Obvious, Minimal Language (TOML, originally Tom's Own Markup Language) [2] is a file format for configuration files. [3] It is intended to be easy to read and write due to following commonplace syntax and semantics which aim to be minimal, and it is designed to map unambiguously to a dictionary. Originally created by Tom Preston-Werner, its specification is open source. TOML is used in a number of software projects [4] [5] [6] and is implemented in many programming languages. [7]
TOML's syntax primarily consists of, among other constructs, key = value
pairs, [section names]
, and #
(for comments). TOML's syntax somewhat resembles that of .INI files, but it has one agreed-upon formal specification, whereas the .INI format suffers from many competing variants, many implicitly specified through project-specific parsers.
Exceeding stringly-typed semantics, TOML supports the data types string, integer, float, boolean, datetime, array and table.
# This is a TOML document.title="ImpalaPay Co."[database]server="192.168.1.1"ports=[8000,8001,8002]connection_max=5000enabled=true# Line breaks are okay when inside arrayshosts=["alpha","omega"][servers]# Indentation (tabs and/or spaces) is allowed, but not required[servers.alpha]ip="10.0.0.1"dc="eqdc10"[servers.beta]ip="10.0.0.2"dc="eqdc10"
TOML is used in a variety of settings (some related to its creator), such as:
_config.toml
(although configuration through YAML is also supported)hugo.toml
(although configuration through JSON or YAML are also supported)pyproject.toml
[8] Cargo.toml
[4] Project.toml
and package manifests Manifest.toml
[9] blender_manifest.toml
[10] libs.versions.toml
[11] .taplo.toml
and taplo.toml
[12] .prettierrc.toml
[13] TOML has been criticized on a number of points: [14] [15]
YAML is both universally used, and universally reviled. It has a lot of problems, but it also is so useful in solving specific tasks that it's hard to replace. Some new kids on the block (such as TOML) have successfully taken over a portion of its market share, but it remains in force in places where those alternatives show their weaknesses.