A list of markup/data-storage/configuration languages and configuration generator languages.

Last updated 2024-08-11 oehrstroem@gmail.com

Source: languages.xmq Transform: genlanguages.xslq
Cmdline: xmq languages.xmq transform genlanguages.xslq to-html

GML 1969 Markup Language.
Charles Goldfarb, Edward Mosher and Raymond Lorie
:h1 id='intr'.My Todo List :p.Time for celebration! :ol. :li.Clean house. :li.Order food. :li.Have party. :eol. Have a great time.
Scribe 1979 Markup Language.
Brian Reid
@MakeSection(tag=first title="My First Section") @Heading(The Beginning) An introduction with text. Followed by a quotation: @Begin(Quotation) Let's start at the very beginning, a very good place to start @End(Quotation)
SGML 1986 Standard Generalized Markup Language.
ISO
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN"> <article> <sect1 id="introduction"><title>Hello world introduction</title> <para> Hello world! </para> </sect1> </article>
Property Lists 1989 The NEXTSTEP data serialization format.
{ user = wshakesp; birth = 1564; death = 1616; Play = { title = Hamlet; arrayofantagonists = ( "Claudius", "Polonius" ); }; binarydata = <0fbd777 1c2735ae> }
HTML 1993 Hypertext Markup Language.
Tim Berners-Lee
<HEADER> <TITLE>The World Wide Web project</TITLE> <NEXTID N="55"> </HEADER> <BODY> <H1>World Wide Web</H1>The WorldWideWeb (W3) is a wide-area<A NAME=0 HREF="WhatIs.html"> hypermedia</A> information retrieval initiative aiming to give universal access to a large universe of documents.<P> </BODY>
LUA 1993 is a lightweight, high-level, multi-paradigm programming language.
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes
-- Configure your settings here... settings = { lol = { runtime = { version = "Lua 5.1", enable = false } paths = { '/alfa/beta', '/gamma' } } }
XML 1998 Extensible Markup Language a subset of SGML.
World Wide Web Consortium
<car> <model>Satsuma</model> <year>1974</year> <speed>80 km/h</speed> <color>yellow/rust</color> </car>
JSON 2000 JavaScript Object Notation is a lightweight data-interchange format.
Douglas Crockford
{ "color": "red", "speed": 123, "working": true, "null": null, "tires" : [ 1, "2", null, "null", true, "true", "round", {}, [] ] }
YAML 2001 Human-friendly data serialization language.
Oren Ben-Kiki, Clark Evans, Brian Ingerson
invoice: 34843 date : 2001-01-23 bill-to: &id001 given : Chris family : Dumars address: lines: | 458 Walkman Dr. Suite #292 city : Royal Oak state : MI postal : 48046 ship-to: *id001 product: - sku : BL394D quantity : 4 description : Basketball price : 450.00 - sku : BL4438H quantity : 1 description : Super Hoop price : 2392.00
OGDL 2002 The Ordered Graph Data Language is a structured textual format that represents information in the form of graphs, where the nodes are strings and the arcs or edges are spaces or indentation.
Rolf Veen
network eth0 ip 192.168.0.10 mask 255.255.255.0 gw 192.168.0.1 hostname crispin
DL 2002 A Streaming Data Language.
Tom Bradford
UserInfo { name "Tom" age 29 happy true password "something" favColor { red 255 green 0 blue 0 } groups { "admin" "staff" "wheel" } }
LMNL 2002 A Layered Markup and Annotation Language with overlapping mark regions.
Jeni Tennison, Wendell Piez
[book [title [lang}en{lang]}Genesis{title]} [chapter} [section [title}The creation of the world.{title]} [para} [v}[s}[note}In the beginning of creation, when God made heaven and earth,{note [alt}In the beginning God created heaven and earth.{alt]]{v] [v}the earth was without form and void, with darkness over the face of the abyss, [note}and a mighty wind that swept{note [alt}and the spirit of God hovering{alt]] over the surface of the waters.{s]{v] [v}[s}God said, [quote}[s}Let there be a light{s]{quote], and there was light;{v] [v}and God saw that the light was good, and he separated the light from darkness.{s]{v] [v}[s}He called the light day, and the darkness night. So evening came, and morning came, the first day.{s]{v] {para] ...{chapter]...{section]...{book]
BetterMarkup 2002 Better Markup format is an alternative syntax for XML.
Bryan Livingston
{*BM DefaultAttributeName=name} {*xml version="1.0"} <TEST-STYLE /> {* This is comment number 1.} <staff> <employee> <employeeId>EMP0001~ <name>Margaret Martin~ <position>Accountant~ <salary>56,000~ <gender>Female~ <address domestic=Yes>1230 North Ave. Dallas, Texas 98551~ ~ <employee> <employeeId>EMP0002~ <name>Martha Raynolds{This is a CDATASection &ent2;}~ <position>Secretary~ <salary>35,000~ <gender>Female~ <address domestic=Yes street=Yes>& Dallas, & 98554~ ~ ~
SML 2003 Simplify XML and focus on user-friendly syntax: easier to read and write than XML.
Don Park
XML Version: <circle x="1.0" y="1.0" r="0.5"> <fill color="#FF0000"/> <text>Hello</text> <text>World</text> </circle> SML Version: circle x="1.0" y="1.0" r="0.5" fill color="#FF0000" text "Hello" text "World" SOSML Version: # comments are '#' followed by a whitespace circle x='1.0' y = '1.0' r='0.5' fill color='#ff0000' # red "some useless text as mixed content" text "Hello" text a href='somewhere' "text with a link a quote like this \" "
SMEL 2003 Some Modest Extensible Language. It's inspired by XML, but intended to be more flexible, more compact, and more readable.
Tommy Carlier
table(id="data:Persons") { fields(pk=!nr) /* the primary key is nr (number*/")> { field(id=!nr type="number", unique="true"); field(id=!first_name type="text" maxlength=100); field(id=!last_name type="text" maxlength=100); field(id=!mail type="text" maxlength=200); } data { row {0, "Tommy", "Carlier", "tommy.carlier@pandora.be"} row {1, "John", "Doe", "john@doe.com"} row {2, "Bill", "Gates", "bill.gates@microsoft.com"} } }
SDL 2003 Simple Data Language created for Apache HiveMind, has elements, attributes, and nesting present in XML, but is geared towards configuration.
Dieter Bogdoll
module(id = some.module version = "1.0.0") { // A comment... configuration(id = ControlPipeline) { description = << A long, multiline string that may contain "quoted" sections. >> schema { element(name = processor) { attribute(name = alfa required = true) } } } }
ONX 2003 Alternativeto XML but designed to be data-oriented instead of document-oriented.
Seairth Jacobs
:onx{ :calendar{ :entry{ :date["2003" "1" "1"] :type["event"] :note["Happy New Year!"] } :entry{ :date["2003" "3" "8"] :type["birthday"] :note["Buy self a present..."] } }calendar }onx :onx{ :fields{ :field["ID" "integer"] :field["city" "string"] :field["state" "string"] } :data{ :record["1" "Norfolk" "VA"] :record["2" "Salem" "MA"] } }onx :onx{:request{:host["www.seairth.com"]:resource["/web/onx/onx.html"]}}onx
ConciseXML 2003 Alternative xml for non-hierarchial data, program logic, document markup, and binary data.
Christopher Fry
ConciseXML: <textarea>hi</> XML 1.0: <textarea>hi</textarea> ConciseXML: <person "Mike" "Plusch"/> XML 1.0: <person first="Mike" last="Plusch"/> ConciseXML: "abe".<foo color="blue"/>.bar XML 1.0: <execute_path>"abe"<foo color="blue"/>bar</execute_path> ConciseXML: <list <item name="bread"/> <item name="milk"/> /> XML 1.0: <list><attributes><item name=”bread”/><item name=”milk”/></attributes></list>
Nginx 2004 Nginx configuration language.
Igor Sysoev
server { listen 80; server_name mywebsite.com; location / { root /var/www/mywebsite; index index.html; } }
Config 2004 A Python configuration file format.
Vinay Sajip
# A comment regarding this message. messages: [ { stream : `sys.stderr` message: Welcome name: Harry } { stream : `sys.stdout` message: Welkom name: 'Ruud Groot' } { stream : $messages[0].stream message : Bienvenue name : Yves } ]
ConfigObj 2004 ConfigObj is a simple but powerful Python config file reader and writer: an ini file round tripper.
Michael Foord, Nicola Larosa
keyword1 = value1 'keyword 2' = 'value 2' [ "section 1" ] keyword 3 = value 3 'keyword 4' = value4, value 5, 'value 6' [[ sub-section ]] 'keyword 6' = '''A multiline value, that spans more than one line :-) The line breaks are included in the value.''' [[[ sub-sub-section ]]] 'keyword 7' = 'value 8'
SSYN 2004 SSYN is intended to be a simpler alternative to data-centric XML and YAML.
Jason Diamond
purchase order: 1999-10-20 ship to: name: Alice Smith street: 123 Maple Street city: Mill Valley state: CA zip: 90952 country: US comment:: Hurry, my lawn is going wild! items: : 872-AA product name: Lawnmower quantity: 1 price: 148.95 comment:: Confirm this is electronic. : 926-AA product name: Baby Monitor quantity: 1 price: 39.98 ship date: 1999-05-21
GroovyMarkup 2004 The native Groovy syntax used to represent XML/HTML.
html(lang:'en') { head { meta('http-equiv':'"Content-Type" content="text/html; charset=utf-8"') title('My page') } body { p('This is an example of HTML contents') } }
HAML 2006 Beautifully DRY, well-indented, clear markup: templating haiku.
Hampton Catlin
#content .left.column %h2 Welcome to our site! %p= print_information .right.column = render :partial => "sidebar"
JsonML 2007 The purpose of JsonML is to provide a compact format for transporting XML-based markup as JSON which allows it to be losslessly converted back to its original form.
["person", {"created":"2006-11-11T19:23", "modified":"2006-12-31T23:59"}, ["firstName", "Robert"], ["lastName", "Smith"], ["address", {"type":"home"}, ["street", "12345 Sixth Ave"], ["city", "Anytown"], ["state", "CA"], ["postalCode", "98765-4321"] ] ] is equivalent to <!-- XML representation of a person record --> <person created="2006-11-11T19:23" modified="2006-12-31T23:59"> <firstName>Robert</firstName> <lastName>Smith</lastName> <address type="home"> <street>12345 Sixth Ave</street> <city>Anytown</city> <state>CA</state> <postalCode>98765-4321</postalCode> </address> </person>
Recutils 2010 Tools and libraries to edit human-editable, plain text databases called recfiles.
%rec: Book #%key: Id #%type: Id int #%auto: Id #%unique: ISBN %mandatory: Title %type: Location enum loaned home unknown %doc: + A book in my personal collection. Title: GNU Emacs Manual Author: Richard M. Stallman Publisher: FSF Location: home Title: The Colour of Magic Author: Terry Pratchett Location: loaned Title: Mio Cid Author: Anonymous Location: home
Pug 2010 Pug is a high-performance template engine heavily influenced by Haml.
doctype html html(lang="en") head title= pageTitle script(type='text/javascript'). if (foo) bar(1 + 5); body h1 Pug - node template engine #container.col if youAreUsingPug p You are amazing else p Get on it! p. Pug is a terse and simple templating language with a strong focus on performance and powerful features.
HOCON 2011 Configuration using HOCON files
All of these are valid HOCON. { "foo" : { "bar" : 10, "baz" : 12 } } Drop root braces: "foo" : { "bar" : 10, "baz" : 12 } Drop quotes: foo : { bar : 10, baz : 12 } Use = and omit it before {: foo { bar = 10, baz = 12 } Remove commas: foo { bar = 10 baz = 12 } Use dotted notation for unquoted keys: foo.bar=10 foo.baz=12 Put the dotted-notation fields on a single line: foo.bar=10, foo.baz=12
CSON 2011 CoffeeScript-Object-Notation. Same as JSON but for CoffeeScript objects.
Benjamin Lupton
# An Array with no commas! listOfStuff: [ 'alfa' 'beta' 'gamma' ] # An Object without braces! stuff: # Multi-Line Strings! Without Quote Escaping! information: ''' Rambulations in ranger roof calling. ''' more: 'alfa beta gamma'
SDL 2012 Simple Declarative Language was designed to provide a terse and perspicuous format for describing common data structures and data types.
Daniel Leuck
plants { trees { deciduous { elm oak } } } folder "myFiles" color="yellow" protection=on { folder "my images" { file "myHouse.jpg" color=true date=2005/11/05 file "myCar.jpg" color=false date=2002/01/05 } folder "my documents" { document "resume.pdf" } } // https://sdlang.org/
MicroXML 2012 MicroXML is a subset of XML.
<comment lang="en" date="2012-09-11"> I <em>love</em> &#xB5;<!-- MICRO SIGN -->XML!<br/> It's so clean &amp; simple.</comment>
FtanML 2012 The FtanML Markup Language
Michael Kay, Stephanie Haupt, Max Altgelt, Julien Bergner, Lukas Graf, Dominik Helm, Axel Kroschk, Uwe von Lpke, My-Tien Nguyen, Sebastian Memer, Suhanyaa Nitkunanantharajah, Jan Landelin Pawellek, and Martin Schmitt
<purchaseOrder orderDate="1999-10-20" shipTo = <country="US" [ <name "Alice Smith"> <street "123 Maple Street"> <city "Mill Valley"> <state "CA"> <zip 90952> ]> billTo = <country="US" [ <name "Robert Smith"> <street "8 Oak Avenue"> <city "Old Town"> <state "PA"> <zip 95819> ]> comment = |<emph |Hurry|>, my lawn is going wild| items = [ < partNum="872-AA" productName="Lawnmower" quantity=1 USPrice=148.95 comment=|Confirm this is <strong |electric|>| > < partNum="926-AA" productName="Baby Monitor" quantity=1 USPrice=39.98 shipDate="1999-05-21" > ] >
TOML 2013 Tom's Obvious Minimal Language.
Tom Preston-Werner
# 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 okay 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"
UCL 2013 Universal configuration library parser
Vsevolod
param = value; section { param = value; param1 = value1; flag = true; number = 10k; time = 0.2s; string = "something"; subsection { host = { host = "hostname"; port = 900; } host = { host = "hostname"; port = 901; } } }
StrongSwan/swanctl.conf 2014 New configuration format for StrongSwan.
connections { home { local { id = home auth = psk } remote { id = gw auth = psk } children { home { } } } secrets { ike-home { id = gw secret = foobar } }
HJSON 2014 Hjson, a user interface for JSON.
Christian Zangl
{ md: ''' First line. Second line. This line is indented by two spaces. ''' } { // use #, // or /**/ comments, // omit quotes for keys key: 1 // omit quotes for strings contains: everything on this line // omit commas at the end of a line cool: { foo: 1 bar: 2 } // allow trailing commas list: [ 1, 2, ] // and use multiline strings realist: ''' My half empty glass, I will fill your empty half. Now you are half full. ''' }
JSONNET 2014 JSON with functions. [configuration generator language]
Dave Cunningham
// Edit me! { person1: { name: "Alice", welcome: "Hello " + self.name + "!", }, person2: self.person1 { name: "Bob" }, }
HCL 2014 HCL is a toolkit for creating structured configuration languages that are both human- and machine-friendly, for use with command-line tools.
io_mode = "async" service "http" "web_proxy" { listen_addr = "127.0.0.1:8080" process "main" { command = ["/usr/local/bin/awesome-app", "server"] } process "mgmt" { command = ["/usr/local/bin/awesome-app", "mgmt"] } }
AXON 2014
Zaur Shibzukhov
##### Statement form axon name: "AXON is eXtended Object Notation" short_name: "AXON" python_library: "pyaxon" atomic_values int: [0 -1 17] float: [3.1428 1.5e-17] decimal: [10D 1000.35D -1.25E+6D] bool: [true false] string: "abc абв 中文本" multiline_string: "one two three" date: ^2012-12-31 time: [^12:30:34 ^12:35:12.000120 ^12:35+03] datetime: [^2012-12-31T12:30 ^2012-12-31T12:35+03] binary: |QVhPTiBpcyBlWHRlbmRlZCBPYmplY3QgTm90YXRpb24= complex_values list: ["one" "two" "three"] dict: { one: 1 three: 3 two: 2} odered_dict: [ one: 1 three: 3 two: 2] tuple: ("nodes" "edges") set: {"a" "b" "c"} node: person name: "Alex" age: 32 ##### Formatted expression form axon { name: "AXON is eXtended Object Notation" short_name: "AXON" python_library: "pyaxon" atomic_values { int: [0 -1 17] float: [3.1428 1.5e-17] decimal: [10D 1000.35D -1.25E+6D] bool: [true false] string: "abc абв 中文本" multiline_string: "one two three" date: ^2012-12-31 time: [^12:30:34 ^12:35:12.000120 ^12:35+03] datetime: [2012-12-31T12:30 2012-12-31T12:35+03] binary: |QVhPTiBpcyBlWHRlbmRlZCBPYmplY3QgTm90YXRpb24= } complex_values { list: ["one" "two" "three"] dict: { one: 1 three: 3 two: 2} odered_dict: [ one: 1 three: 3 two: 2] tuple: ("nodes" "edges") set: {"a" "b" "c"} node: person { name: "Alex" age: 32}}}
NIX 2016 is a tool for people who both need computers to do exactly as intended, repeatably, far into the future, and who are familiar with command line interfaces and plain text editors. [configuration generator language]
Domen Kožar
{ string = "hello"; integer = 1; float = 3.141; bool = true; null = null; list = [ 1 "two" false ]; attribute-set = { a = "hello"; b = 2; c = 2.718; d = false; }; # comments are supported }
Dhall 2017 Maintainable configuration files. [configuration generator language]
Gabriel Gonzales
{- You can optionally add types `x : T` means that `x` has type `T` -} let Config : Type = {- What happens if you add another field here? -} { home : Text , privateKey : Text , publicKey : Text } let makeUser : Text -> Config = \(user : Text) -> let home : Text = "/home/${user}" let privateKey : Text = "${home}/.ssh/id_ed25519" let publicKey : Text = "${privateKey}.pub" let config : Config = { home, privateKey, publicKey } in config let configs : List Config = [ makeUser "bill" , makeUser "jane" ] in configs
ICL 2017 ICL is a configuration language, that aims to provide a concise and elegant way to describe your configurations files. [configuration generator language]
Mahieddine Cherif
::image "mysql" as MySQL { url = "mysql:5.6", port = 3306 } app "hello-world" { name = "this is a multiline string", price = +4.5 } app "hello-world" { icon = <<<EOF R0lGODlhPQBEAPeoAJosMAwOAwHVYZz595kzAPs7P+goOXMv8+fhwv739f +8PD98fH8mJl+fn9ZWb8PzWlwv6wWGbImAPgTEMImIN9gUFCEmgDALULDN 8PAD6atYdCTX9gUNKlj8wZAKUsAOzZz+UMAOsJAPZ2ccMDA8PD95eX5NWv sJCOVNQPtfX8zM8+QePLl38MGBr8JCP+zs9myn8GBqwpAPGxgwJCPny78l zYLgjAJ8vAP9fX+MjMUcAN8zM9wcM8ZGcATEL+QePdZWf 29ucP9cmJu9MTDImIN+r7+vz8P8VNQGNugV8AAF9fX8swMNg TAFlDOICAgPNSUnNWSMQ5MBAQEJE3Q EOF }
DIXY 2017 Dixy is a very simple data format based on dictionaries.
Kuyawa Kata
# Commentary... car: name: Volvo color: Red speed: 123.45
SAN 2018 The Simple And Needed configuration format.
Sylvain Kerkour
# This is a SAN document title = "SAN Example" creator = { name = "Sylvain Kerkour" website = "https://kerkour.com" } database = { server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true } servers = { # Indentation (only spaces) is allowed but not required alpha = { ip = "10.0.0.1" dc = "eqdc10" } beta = { ip = "10.0.0.2" dc = "eqdc10" } } empty_map = {} hosts = [ "alpha", "omega", ]
SML 2018 XML made simple
Jean-François Larvoire
xml version="1.0" encoding="UTF-8" kml { Folder { name "Take off zones in the Alps" open 1 Folder { name Drome visibility 0 Placemark { description "Take off" name "Mont Rachas" LookAt { longitude 5.0116666667 latitude 44.8355 range 4000 tilt 45 heading 0 } } } } } }
SCL 2018
Vincent Prouillet
# This is a SCL document. Boom. include "base.scl" owner = { name = "Vincent Prouillet", bio = "Someone", dob = 1979-05-27, # first-class date type } database = { server = "192.168.1.1", ports = [ 8001, 8001, 8002 ], connection_max = 5000, enabled = true, } servers = { max_upload_size = 10Mb, # first class byte size alpha = { ip = "10.0.0.1", dc = "eqdc10", }, # Inline objects as well beta = { ip = "10.0.0.2", dc = "eqdc10" }, } clients = { data = [ ["gamma", "delta"], [1, 2], ], hosts = ["alpha", "omega"], }
ENO 2018 A Data Language For Everyone
Simon Repp
author: Jane Doe email: jane@eno-lang.org -- my_content Multi-line embedded content (e.g. markdown) here ... -- my_content states: active = #fff hover = #b6b6b6 # cities Den Haag: 52.069961, 4.302315 Málaga: 36.721447, -4.421291 서울특별시: 37.566984, 126.977041 # cities expanded < cities Springfield: 38.790312, -77.186418
CUE 2018 An open-source data validation language and inference engine with its roots in logic programming. [configuration generator language]
Marcel van Lohuizen
Data moscow: { name: "Moscow" pop: 11.92M capital: true } Schema municipality: { name: string pop: int capital: bool } CUE largeCapital: { name: string pop: >5M capital: true }
Concise-Encoding 2018 Solving today's problems where times are different from the carefree days that brought us XML and JSON.
Karl Stenerud
c1 [ { "make" = "Ford" "model" = "Explorer" "drive" = "4wd" "sunroof" = true "float32 array" = @f32[1.5e10 -8.31e-12] "hex float" = 0x5.1ec4p+20 "url" = @"https://example.com/" } { "make" = "Toyota" "model" = "Corolla" "drive" = "fwd" "sunroof" = false @vehicle<"make" "model" "drive" "sunroof"> // type [ @vehicle{"Ford" "Explorer" "4wd" true } // instance @vehicle{"Toyota" "Corolla" "fwd" false} // instance ] "tree" = (2(7 2 1 (6 5 8)) (5 (9 4))) } ]
Nickel 2019 Better configuration for less Write complex configurations. Modular, correct and boilerplate-free. [configuration generator language]
Yann Hamdaoui et.al.
{ name = "example", description = m%" This is an awesome software I'm developing. Please use it! "%, version = "0.1.1", main = "index.js", keywords = ["example", "config"], scripts = { test = m%" test.sh --option --install example --version "0.1.1" "%, do_stuff = "do_stuff.sh subcommand", }, contributors = [{ name = "John Doe", email = "johndoe@example.com" }, { name = "Ivy Lane", url = "https://example.com/ivylane" }], dependencies = { dep1 = "^1.0.0", dep3 = "6.7" } }
NACL 2019 NACL is a configuration data language intended to be both human and machine friendly.
Pierrick Charron, Charle Demers
application { debug off; buffer 10MB; mysql { host .env (default: "127.0.0.1") MYSQL_HOST; username .env (default: root) MYSQL_USERNAME; password .env (default: root) MYSQL_PASSWORD; port .env (default: 3306, type: int) MYSQL_PORT; } servers [ "172.28.0.10", "172.28.0.5" ] }
JACL 2019 Specification for just another configuration language.
Yüce Tekol
// This is a Jacl file. Boom. owner: { name: "Phillips Redd" age: 34 bio: """ Coder. Loves cats. """ } database: { server: "192.168.1.1" ports: [8001 8002 8003] connection_max: 5_000 enabled: true } // Some code in the config. Indentation matters only when it should: source: trim""" def main(): if True: print("OK, fine") else: print("Not fine") """ /* You can indent as you please, even if it doesn't make sense. Tabs or spaces. Jacl doesn't care. Oh, and this is a multiline comment! */ servers: { alpha: { ip: "10.0.0.1" dc: "eqdc10" } beta: { ip: "10.0.0.2" dc: "eqdc10" } } clients: { data: [ ["gamma", "delta"] [1 2] ] }
XMQ 2019 XMQ - a configuration language, data-storage language, logging language compatible with xml/html and json.
Fredrik Öhrström
shiporder { id = 889923 type = container shipto(sailing = '') { address = 'The Vasa Museum Galärvarvsvägen 14 115 21 Stockholm Sweden' // Remember to verify coord. coord = '''59°19'41.0"N 18°05'29.0"E''' } rules }
HDF 2020 HDF stands for Hierarchical Data Format. Alternative to both XML and XSLT
Brandon Long
age { Name = My Index URL = /myindex.html Menu { 0 = Home 1 = Preferences 2 = Help 3 = Support } }
Tree 2020 Simple fast compact user-readable binary-safe extensible structural format.
Dmitry Karlovsky
! doctype html html meta @ charset \utf-8 link @ href \web.css @ rel \stylesheet script @ src \web.js body h1 \Procter & Gamble
NestedText 2020 A Human Friendly Data Format
Ken & Kale Kundert
# Contact information for our officers Katheryn McDaniel: position: president address: > 138 Almond Street > Topeka, Kansas 20697 phone: cell: 1-210-555-5297 home: 1-210-555-8470 # Katheryn prefers that we always call her on her cell phone. email: KateMcD@aol.com additional roles: - board member
okra 2020 A digestible language for data and configuration.
Cameron Messinides
# Okra consists of simple key-value pairs. # Each value's type is indicated by the delimiter after the key. # Strings are delimited by ":" hello: okra # Keys and strings can contain spaces. biological name: Abelmoschus esculentus # Numbers, delimited by "=" cpus= 16 # Floats and scientific notation are supported. threshold= 0.8 minimum= 1.1e-10 # Booleans, delimited by "?" autocomplete? true # Plain English and shorthand booleans validate config? yes dev? n # Booleans are case insensitive. verbose? Y skip tests? False # (Comments are supported, too.) # Lists are opened with "/" packages/ # Okra uses indentation for nesting cli: 0.1.2 validator: 2.3.18 # Leave off the keys to create a sequential list (array) benchmarks/ = 4.101 = 4.533 = 3.970 # Sequential lists can contain any type mixed bag/ = 2 : text ? true / nested lists? true
Boulder 2021 Boulder - A Perl API for hierarchical tag/value structures.
Lincoln D. Stein
Name=Lincoln Stein Home=/u/bush202/lds32 Privileges={ ChangePasswd=yes Reboot=yes }
GURA 2021 Is a file format for configuration files. Gura is as readable as YAML and simple as TOML.
Genaro Camele
# This is a comment in a Gura configuration file. # Define a variable named `title` with string value "Gura Example" title: "Gura Example" # Define an object with fields `username` and `age` # with string and integer values, respectively # Indentation is used to indicate nesting person: username: "Stephen" age: 20 # Define a list of values # Line breaks are OK when inside arrays hosts: [ "alpha", "omega" ] # Variables can be defined and referenced to avoid repetition $foreground: "#FFAH84" color_scheme: editor: $foreground ui: $foreground
Fern 2021 A clean and simple storage or configuration format with easy readability, minimal meta-characters, lenient parsing and simple conversion.
Moderocky
name "Tony" age 42 height 1.85 weight 70.2 spouse null likes [ "chicken" "pasta" "bacon" ] dislikes [ "fish" "ice cream" 74 ] education ( school "Hartlepool Secondary School" college "Wisham College" university null )
Bicep 2022 Bicep is a domain-specific language (DSL) that uses declarative syntax to deploy Azure resources.
param location string = resourceGroup().location param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } }
KCL 2022 KCL is an open-source, constraint-based record and functional language that enhances the writing of complex configurations, including those for cloud-native scenarios.
env: str = option("env") or "dev" # The attribute `env` has a default value "den" database: str = option("database") hosts = { dev = "postgres.dev" stage = "postgres.stage" prod = "postgres.prod" } dbConfig = { host = hosts[env] database = database port = "2023" conn = "postgres://${host}:${port}/${database}" }
Config 2022 Config is a library for working with structured configuration files in Go.
Andrew Pillar
# Example configuration file. net { listen ":https" tls { cert "/var/lib/ssl/server.crt" key "/var/lib/ssl/server.key" ciphers ["AES-128SHA256", "AES-256SHA256"] } } log access { level "info" file "/var/log/http/access.log" } body_limt 50MB timeout { read 10m write 10m }
Corn 2022 A simple and pain-free configuration language.
Jake Stanger
let { $entry = "dist/index.js" $author = { name = "John Smith" email = "mail@example.com" } } in { name = "example-package" version = "1.0.0" main = $entry bin.filebrowser = $entry private = false author = $author author.url = "https://example.com" contributors = [ $author ] scripts.build = "tsc" scripts.run = "node dist" dependencies = { dotenv = "^8.2.0" // put the rest of your deps here... } devDependencies.typescript = "^4.5" config.port = 8080 config.hostname = null }
RCL 2023 A reasonable configuration language. [configuration generator language]
Ruud van Asseldonk
{ // A silly snippet to show some // features in a limited space. let data: List[String] = import "data.rcl"; assert data.contains("Assertions"), "Assertions are supported"; let f = () => ["List", "Dict", "Set"]; features = [ for d in data: d, for collection in f(): f"{collection} comprehensions", ], export-to = "json, yaml, toml, ...", }
Ink-lang 2023 Ink is a configuration language that is a subset of Kotlin.
Alex Semin
// Flat properties style server.port = 80 // Nested scoping style server { // Overrides the value above! port = 8080 // Mixed style auth { token.refresh = "<token>" } } // Human readable list syntax testerIds = listOf(1001, 1002) // Builder style users = listOf({ name = "Alex" age = 42 }, { name = "Bob" age = 6033 })
Khi 2023 A data language: a source code for data.
Torm
{article}: uuid: 0c5aacfe-d828-43c7-a530-12a802af1df4 type: chemical-element key: aluminium title: Aluminium description: The <@element>:{chemical element} aluminium. tags: [metal; common] {chemical-element}: symbol: Al number: 13 stp-phase: <Solid> melting-point: 933.47 boiling-point: 2743 density: 2.7 electron-shells: [2; 8; 3] {references}: wikipedia: \https://en.wikipedia.org/wiki/Aluminium snl: \https://snl.no/aluminium {links}: element: 740097ea-10fa-4203-b086-58632f099167 chemsym: 6e2f634c-f180-407a-b9ce-2138b412b248 atomnum: 1a5e1974-a78c-4820-afeb-79bef6974814 react: ab7d8a1f-c028-4466-9bb2-41a39d153241 aloxide: c1ff08e7-a88f-42d5-83c3-6adc4835a07b stab: b3b13474-4fe3-4556-9568-925c066916a5 purity: 40786551-85c4-461c-ba6e-4d54d5863820 ion: effd5c7a-da31-4357-a94c-91343e9a05eb metal: 84333088-cfcc-4e78-8d3f-7307dcab144b [content]: <h1>: Aluminium <p>: <@self>:Aluminium is a <@element>:{chemical element} with <@chemsym>:{chemical symbol} <chemsym> and <@atomnum>:{atomic number} <atomnum>. <h2>: Substance <p>: In <@purity>:pure form, it is a highly <@react>:reactive {<@metal>:metal}, but normally a thin coat of <@aloxide>:{aluminium oxide} forms on its surface, keeping it highly {<@stab>:stable}. <p>: ... <h2>: Occurrence <p>: In nature, it occurs as the <@ion>:ion <$>:{<sym>:{Al}^{3+}}. It constitutes <$>:8.2% of the earth's crust, making it the most common <@metal>:metal found there. <p>: ...
Tyson 2023 TySON (TypeScript Object Notation) is a subset of TypeScript, chosen to be useful as an embeddable configuration language that generates JSON.
Daniel Leroto
// example.tson { // Single-line comments are supported array_field: [1, 2, 3], boolean_field: true, /* As well as multi-line comments, and multi-line strings. * * Multi-line strings are TypeScript template literals, so they also support * interpolation. */ multi_line_string_field: ` line 1 line 2 line ${1 + 2} `, number_field: 123, string_field: 'string', object_field: { // Notice that, unlike JSON, field names can be unquoted if they're a valid // TypeScript identifier. nested_field: "nested", }, // Trailing commas are allowed }
Yam-lang 2023 A simple human readable, data oriented configuration language.
Aigars Šķiliņš
~~ Configuring display. - <time/> - version: "0.1.2" - background: svg: <l>background.svg</l> transparency: 60% color: !Color(255,255,255) - !Display menu: <l>pages/index.html</l> options: <l>pages/options.html</l> log_path: logs/display.log settings: width: 1920 height: 1080 mode: fullscreen show_hidden: false - style: <l>style.yam</l>
PKL 2024 A configuration as code language with rich validation and tooling.
mixedObject { name = "Pigeon" lifespan = 8 "wing" "claw" ["wing"] = "Not related to the _element_ \"wing\"" 42 extinct = false [false] { description = "Construed object example" } }