Jump to content

TOML

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Widefox (talk | contribs) at 17:09, 19 November 2023 (See also: f). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

TOML
Filename extension
.toml
Internet media typeNot registered[1]
Developed byTom Preston-Werner
Community
Initial release23 February 2013; 11 years ago (2013-02-23)
Latest release
v1.0.0
January 11, 2021; 3 years ago (2021-01-11)
Type of formatData interchange
Open format?Yes
Websitetoml.io Edit this at Wikidata

TOML is a file format for configuration files. It is intended to be easy to read and write due to obvious semantics which aim to be "minimal", and is designed to map unambiguously to a dictionary. Its specification is open-source, and receives community contributions. TOML is used in a number of software projects,[2][3][4] and is implemented in many programming languages.[5] The name "TOML" is an acronym for "Tom's Obvious, Minimal Language"[6] referring to its creator, Tom Preston-Werner.

Syntax

TOML's syntax primarily consists of key = value pairs, [section names], and # (for comments). TOML's syntax somewhat resembles that of .INI files, but it includes a formal specification, whereas the INI file format suffers from many competing variants.

Its specification includes a list of supported data types: String, Integer, Float, Boolean, Datetime, Array, and Table.

Example

# This is a TOML document.

title = "ImpalaPay Co."

[database]
server = "192.168.1.1"
ports = [ 8000, 8001, 8002 ]
connection_max = 5000
enabled = true

# Line breaks are OK when inside arrays
hosts = [
  "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"

Use cases

TOML is used in a variety of settings (some related to its creator), such as:

Criticism

TOML has been criticized on a number of points:[10][11]

  • TOML is verbose; it is not DRY and syntactically noisy.
  • TOML's hierarchies can be difficult to infer from syntax alone.
  • Overcomplication: Like YAML, TOML has too many features.
  • In TOML the syntax determines the data types ("syntax typing").

See also

References

  1. ^ There is a mime type proposal for TOML consisting in application/toml, but this has never been officially registered among IANA's Media Types.
  2. ^ "The Manifest Format - The Cargo Book". doc.rust-lang.org.
  3. ^ Drew DeVault (2021-07-28). "My wish-list for the next YAML". 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.
  4. ^ "TOML: Tom's Obvious Minimal Language". toml.io. Retrieved 2022-08-08.
  5. ^ "toml-lang/toml". GitHub. 23 May 2022.
  6. ^ "Learn toml in Y Minutes". learnxinyminutes.com. Retrieved 2022-08-08.
  7. ^ "tomllib — Parse TOML files". Python documentation. Retrieved 2023-07-08.
  8. ^ "The Manifest Format - The Cargo Book". doc.rust-lang.org. Retrieved 2023-07-08.
  9. ^ "10. Project.toml and Manifest.toml · Pkg.jl". pkgdocs.julialang.org. Retrieved 2023-07-08.
  10. ^ What is wrong with TOML?
  11. ^ An INI critique of TOML