1 unstable release
0.0.1 | May 11, 2024 |
---|
#60 in #init
157 downloads per month
42KB
1K
SLoC
rigz
A functional language written in Rust, meant to be rigged together with all functionality provided via modules.
Installation
TODO
Usage
Console
Open a REPL
rigz console
Init
Create a new rigz project
rigz init
Run
Run a rigz project based on default config or RIGZ_CONFIG
environment variable
rigz run
Test
Test rigz code based
rigz test <test_directory>
Features
- Everything is a function_call or a value, no expressions
- Minimal standard library, can be excluded
- Supply functions by importing or writing modules (LuaModule or custom types that implement Module)
Inspiration
I was mainly inspired by Ruby, CSS, and Terraform when creating this language. When asking myself how I'd want to create a terraform alternative, just as a thought exercise, I settled on everything being a function call. I'd been thinking of the idea for about a year and after a few failed attempts, here we are.
Goals
- Declarative functional language with no GC
- Modules written in other languages
Contributions
Yes please! There is a ton of work to do and a lot that I'm learning, so I'd welcome Suggestions, Bug Fixes, and Roadmap contributions (see below). For anything else please start with an Issue, and we'll make sure it's something the language should support.
Roadmap
- LSP
- polc (Project/module) - Policy Engine backed by rigz
- File Types (read/write): yaml, toml, hcl, opentofu, pkl
- Script Modules: shell, python, ruby, js
- Query Modules: jq, xpath, html, AST/ANTLR
- Utils Modules: HTTP, GraphQL, sqlite, events, matcher
- Library Modules: wasm, jars, jvm scripting module, erlang
- Module Registry
- shortkey (Project/module) - inspired by autohotkey
- Hosted rigz (serverless & long running)
- glue, this was the last attempt aq/psh(I couldn't decide on a name) but shows the syntax, fully interpreted functional language meant as a shell alternative (very similar philosophy, this time with expressions). Ultimately the reason I decided to create rigz, believe it or not this was a way to start with something simpler.
Dependencies
~7MB
~131K SLoC