Hasty Briefsbeta

Bilingual

CONL: "Markdown" for your config files

a year ago
  • #configuration
  • #software-development
  • #data-formats
  • Complex configuration files in 2025 typically use JSON-with-comments, YAML, or TOML, each with usability issues.
  • JSON-with-comments struggles with commenting due to trailing commas breaking syntax.
  • TOML's syntax is confusing with similar-looking constructs performing different actions.
  • YAML has numerous multiline string formats and other complexities.
  • New formats adding types and loops are discouraged; use a programming language for generation.
  • CONL was created as a minimal, easy-to-read, and easy-to-edit configuration format.
  • CONL supports key-value pairs, lists, maps, and multiline scalars with optional syntax hints.
  • The format is stable, with implementations available for Rust and Go, including a language server and Zed extension.
  • CONL's design avoids syntactic typing and supports nested structures without commas or complex delimiters.
  • Comments use ';' to avoid issues with URLs and colors, and multiline strings use """.
  • Quoted literals with backslash escapes are supported for better handling of escape sequences.
  • CONL's simplified data model includes scalar, list, and map types, but lacks round-tripping support for JSON.
  • Indentation is used for structure, similar to Python, and keys without values are allowed to represent null.
  • The format encourages units for numeric values and supports Unicode codepoints via escape sequences.