YAML 과 JSON 이 계속 실패한 포맷
TOML — Tom's Obvious, Minimal Language — 가 Tom Preston-Werner (GitHub 공동 창립자) 에 의해 2013 년 만들어짐. 설계 목표: 처음 읽을 때 obvious, 문법이 minimal, 파싱이 모호하지 않은 config 파일 포맷. 현재 spec: TOML 1.0.0 (2021).
YAML 과 JSON 이 못 한 거 TOML 이 잘하는 거
- 들여쓰기 규칙 없음 — key 와 table 이 공백 의존 안 함. 파일 가로질러 섹션 복붙; 안 깨짐.
- 각 값을 쓰는 한 가지 방법 — string 은 quote, number 는 unquoted, boolean 은
true/false. Norway 문제 없음. - 네이티브 날짜 시간 — RFC 3339 datetime 이 first-class 값, string 아님.
- 주석 —
#가 YAML 에서 작동하는 어디서나 작동. - 장황하지만 명확한 table 문법 —
[server.database]가 4+ 단계 깊이 중첩 YAML 이김.
TOML 이 조용히 점령한 곳
- Rust — ecosystem 의 모든
Cargo.toml. - Python —
pyproject.toml(PEP 518/621) 가 modern 패키징의setup.py+setup.cfg+requirements.txt대체. - Hugo —
config.toml/hugo.toml가 정적 사이트 생성기 굴림. - Poetry, ruff, black, hatch — Python 도구 다
pyproject.toml의[tool.*]table 에서 config 읽음. - Vector, Tilt, GoReleaser — 사람-친화 config 위해 TOML 고른 운영 도구.
원칙: TOML 이 config 가 기계보다 사람에 의해 더 자주 읽힐 때 이김. YAML 이 깊은 중첩 피할 수 없을 때 이김. JSON 이 wire 에서 이김. 전통 아니라 청중으로 골라.