Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

corn-config/corn

🌽 A simple and pain-free configuration language. Reference libcorn implementation and CLI.

corn-config/corn.json
{
"createdAt": "2022-01-25T22:27:13Z",
"defaultBranch": "master",
"description": " 🌽 A simple and pain-free configuration language. Reference libcorn implementation and CLI.",
"fullName": "corn-config/corn",
"homepage": "https://cornlang.dev",
"language": "Rust",
"name": "corn",
"pushedAt": "2025-07-31T16:04:17Z",
"stargazersCount": 78,
"topics": [
"configuration",
"grammar",
"language",
"peg",
"pest",
"rust",
"rust-library"
],
"updatedAt": "2025-12-31T19:17:34Z",
"url": "https://github.com/corn-config/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.