Welcome to the CRISP Language Foundation — the home of the CRISP programming language and its ecosystem.
CRISP (Creative Rust Implemented Scripting Paradigm) is a modern, expressive scripting language inspired by Perl and built on Rust's safety and performance. With small touch of C and Python, it aims to bring together the best of all four worlds.
The CRISP Language Foundation exists to:
- Develop and maintain the CRISP programming language and its standard library
- Foster a community of developers, contributors, and users
- Provide documentation and educational resources
- Ensure the language remains open, free, and accessible to everyone
| Project | Description | Status |
|---|---|---|
| CRISP | The main interpreter and language implementation | 🚀 Active |
| CRISP-mode | Emacs major mode for CRISP | ✅ Stable |
- CRISP Package Manager —
crispan— Package manager for CRISP - CRISP LSP — Language Server Protocol implementation
- CRISP VS Code Extension — VS Code support
- CRISP Web — WebAssembly bindings
# Clone the repository
git clone https://github.com/CRISP-lang-foundation/crisp.git
cd crisp
# Build from source
cargo build --release
# Install
cargo install --path .# hello.csp
say "Hello, World!";
crisp hello.cspcrisp
>>> say "Hello, World!";
Hello, World!- Perl-inspired syntax — Expressive and concise
- Rust-powered — Memory-safe and fast
- Optional sigils —
$scalar,@array,%hash - Native regular expressions — Built-in regex support
- Functional programming —
map,grep,filter,sort - Object-Oriented Programming — Classes with inheritance
- Pattern matching —
matchwithwhereguards - Error handling —
try/catch/finally - POSIX integration —
use posixfor system calls - Embeddable — Use CRISP as a scripting language in your Rust projects
fn fizzbuzz(n) {
for i in 1..n+1 {
if i % 15 == 0 {
say "FizzBuzz";
} else if i % 3 == 0 {
say "Fizz";
} else if i % 5 == 0 {
say "Buzz";
} else {
say i;
}
}
}
fizzbuzz(20);
class Animal {
fn new(name) {
self.name = name;
}
fn speak() {
say self.name + " makes a sound";
}
}
class Dog extends Animal {
fn speak() {
say self.name + " barks!";
}
}
let dog = Dog.new("Rex");
dog.speak(); # Rex barks!
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let evens = numbers
|> filter { |n| n % 2 == 0 }
|> map { |n| n * n };
say evens; # [4, 16, 36, 64, 100]
# Quadratic Equation Solver
# Usage: crisp quadratic.csp
say "Enter coefficient a:";
let a = float(readline());
say "Enter coefficient b:";
let b = float(readline());
say "Enter coefficient c:";
let c = float(readline());
let d = pow(b, 2) - 4 * a * c;
if d > 0.0 {
let x1 = (-b + sqrt(d)) / (2 * a);
let x2 = (-b - sqrt(d)) / (2 * a);
say "Roots: x1 = " + x1 + ", x2 = " + x2;
} else if d == 0.0 {
let x = (-b) / (2 * a);
say "Double root: x = " + x;
} else {
let real = (-b) / (2 * a);
let imag = sqrt(-d) / (2 * a);
say "Complex roots: " + real + " ± " + imag + "i";
}
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Report bugs — Open an issue with a minimal reproduction
- Suggest features — Share your ideas in the discussion forum
- Improve documentation — Help us write better docs
- Write examples — Share your CRISP code snippets
- Spread the word — Star the repo and share with others
Details can be found here in CONTRIBUTING
Run the test suite:
cargo testRun specific tests:
cargo test --test integrationCRISP language is dual-licensed under:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT License (LICENSE-MIT)
You may choose either license at your option.
- GitHub Discussions — Join the conversation
- Issue Tracker — Report bugs
- Documentation — Ebook
- Rust 1.90 or later
- Cargo
- Git
git clone https://github.com/CRISP-lang-foundation/crisp.git
cd crisp
cargo buildcargo run -- --debugcargo build --release| Version | Status | Notes |
|---|---|---|
| v0.1.5 | ✅ Stable | Bug fixes, tests, minor changes |
| v0.1.7 | 🚀 In Progress | Feature enhancements |
| v1.0.0 | 📅 Planned | First stable release |
- Peter Leukanič — Founder & Lead Developer
- BatScript - Graphics , check out his amazing work as developer too: BatScript GitHub
- The Rust Community — For the amazing language and ecosystem
- The Perl Community — For the inspiration and expressiveness
- The Emacs Community — For the great tools and support
"Perl's expressiveness, Rust's safety."
CRISP brings together the best of both worlds:
- Expressiveness — Write concise, readable code like in Perl
- Safety — Memory safety from Rust
- Performance — Native speed when you need it
- Flexibility — From quick scripts to large applications
- Ecosystem — Access to Rust's crates
If you like CRISP, please consider:
- ⭐ Starring the repository
- 🐛 Reporting issues
- 📝 Contributing code or documentation
- 📢 Spreading the word
Made with 🦀 by the CRISP Language Foundation
