Welcome!
A data structure template language.
Rimu is a friendly template language for structured data and functional expressions.
Create parametric data using the best of Yaml structures and Lisp functions.
🌿 Features
- Structured: Structured block and flow data of Yaml (opens in a new tab)
- Functional: Functional expressions of Lisp (opens in a new tab)
- Educational *: Inspired by Logo (opens in a new tab) to be accessible to beginner programmers
- Embeddable: Lightweight embed into web or native apps
- Debug-friendly *: Clear error messages when something is wrong
- Secure: Safe with untrusted input
* Work in progress
💡 Use Cases
Rimu enables user-friendly expressive domain-specific languages (opens in a new tab):
- Programmatic users: When you want to give users an expressive language for building things, like OpenSCAD (opens in a new tab).
- Educational code: When you want to teach beginners how to program, like Logo (opens in a new tab) or Scratch (opens in a new tab).
- Creative code: When you want to give artists and creators a playground for interactive and generative art.
- Complex configs: When your infrastructure-as-code (Kubernetes (opens in a new tab), Terraform (opens in a new tab), NixOps (opens in a new tab)), declarative package managers (Nix (opens in a new tab)), or build systems (Bazel (opens in a new tab)) are complex enough to need functional config generation.
- Expressive configs: When you want your system's configuration to be more expressive than static data.
The author Mikey (opens in a new tab) (as part of Village Kit (opens in a new tab)) is motivated by the "programmatic user", which may inform future developments.
🎮 Try Rimu!
Playground: play.rimu.dev (opens in a new tab)
📌 Stability
The Rimu language is in the experimental phase.
If you want to participate in mad science, please join us! 🧪
For more stable alternatives, see related projects.
💬 Community & Contributions
We believe in learning and growing together.
Join the conversation, share your insights, ask questions, and help evolve Rimu in our Community Discussions (opens in a new tab).
Contributions to the development and documentation of Rimu are always welcome!