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.