🌽 A simple and pain-free configuration language. Reference libcorn implementation and CLI.
  • Rust 98.5%
  • Shell 1.3%
  • JavaScript 0.2%
Find a file
Jake Stanger e0629ecab1
Some checks failed
Build / test (push) Has been cancelled
Build / build (macos-latest) (push) Has been cancelled
Build / build (ubuntu-latest) (push) Has been cancelled
Build / build (windows-latest) (push) Has been cancelled
Build / build-wasm (macos-latest) (push) Has been cancelled
Build / build-wasm (ubuntu-latest) (push) Has been cancelled
Build / build-lua (lua51) (push) Has been cancelled
Build / build-lua (lua52) (push) Has been cancelled
Build / build-lua (lua53) (push) Has been cancelled
Build / build-lua (lua54) (push) Has been cancelled
Build / build-lua (luajit) (push) Has been cancelled
Build / build-lua (luajit52) (push) Has been cancelled
chore(release): v0.10.1
2026-01-23 23:27:10 +00:00
.github/workflows refactor: restructure codebase to follow modern Rust practices (#40) 2025-03-05 14:47:44 +00:00
.idea chore(intellij): add configs 2023-06-15 23:07:03 +01:00
assets fix: unable to deserialize into numeric keys 2026-01-23 23:20:59 +00:00
benches refactor: improve benchmarking infrastructure (#45) 2025-07-31 17:04:16 +01:00
cli chore(release): v0.10.1 2026-01-23 23:27:10 +00:00
scripts chore: specify binary in generate-tests script 2023-06-15 23:07:03 +01:00
src fix: unable to deserialize into numeric keys 2026-01-23 23:20:59 +00:00
tests fix: unable to deserialize into numeric keys 2026-01-23 23:20:59 +00:00
wasm-test refactor: split cli and library, rename packages 2022-10-19 21:06:07 +01:00
.gitignore refactor: split cli and library, rename packages 2022-10-19 21:06:07 +01:00
Cargo.lock chore(release): v0.10.1 2026-01-23 23:27:10 +00:00
Cargo.toml chore(release): v0.10.1 2026-01-23 23:27:10 +00:00
CHANGELOG.md refactor: restructure codebase to follow modern Rust practices (#40) 2025-03-05 14:47:44 +00:00
LICENSE docs: add license 2022-01-26 20:53:01 +00:00
README.md refactor: restructure codebase to follow modern Rust practices (#40) 2025-03-05 14:47:44 +00:00

🌽 Corn

A simple and pain-free configuration language.

Corn has been designed using inspiration from JSON and Nix to produce a language that's easy and intuitive to write, good for config files, and has a feature-set small enough you can learn it in minutes. It was born out of the following frustrations:

  • JSON is not a config language, despite how often people use it as one.
  • TOML is good for flat structures but gets ugly quickly with deeper objects.
  • YAML is far too complex and its whitespace rules make it error-prone.
  • Nix is a full-sized language and not easy to integrate.


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
}

Corn is available as libraries for Rust, Go, Lua, and JavaScript (via WASM).
A CLI and web API are also available.

Editor plugins are available for JetBrains IDEs, VS Code and Neovim.