Got tired of every config format, so I built one.

Ktav: JSON's data model, but no quotes, no commas, no significant indentation. Just `key: value`. Bare numbers auto-type. `##` for comments, `::` for forced literal strings, `( )` for multiline.

One Rust core, FFI bindings for JS, Python, Go, PHP, Java, C#. LSP, VS Code + JetBrains plugins, tree-sitter grammar. WASM playground in browser.

Open-source, MIT OR Apache-2.0.

๐ŸŒ https://ktav-lang.github.io/

#rustlang #opensource #yaml #json #wasm

@phpcraftdream FFI for configs make me chuckle, but being serious have you tried KDL?

@pancsta Haven't deep-dived KDL โ€” I'll take a proper look. But Ktav wasn't picked from a landscape survey; it's what I built for myself after years of friction.

I was editing arrays of SOCKS5 servers โ€” host, port, weight, repeat โ€” and the quotes and commas just kept getting in the way. I wanted a format where I write what I mean and nothing else. So I designed one. It fits my hands, I use it daily, and for my own configs it's the best for me thing I know.

@phpcraftdream #KDL is kinda like a command line, check my config here https://github.com/pancsta/secai/blob/main/examples/cook/config.tpl.kdl Ive also written a readable formatter yesterday, as the default one is, well, like a command line https://github.com/pancsta/secai/blob/main/shared/shared.go#L1013
secai/examples/cook/config.tpl.kdl at main ยท pancsta/secai

Reasoning AI Workflows (devtools included). Contribute to pancsta/secai development by creating an account on GitHub.

GitHub
@pancsta That's the trade I wanted to avoid: with Ktav the "readable shape" is the only shape. You write `key: value` and that's it. Will read through your example, thanks for sharing.๐Ÿ™