Passerine’s entire implementation, from lexer to VM, is only ~3900 lines of code, and has zero dependencies. Clever memory management techniques and an efficient interpreter means the runtime is even smaller. Passerine’s package manager, Aspen, helps manage everything for you, so development’s a breeze.
A rich hygenic macro system and runtime introspection allows for a wide breadth of programmatic expression. Bend the language to your needs rather than bending your needs to the language.
Passerine’s VM is written in Rust. A well-designed FFI allows each language to communicate with each other, allowing for rich usage of each language’s libraries. Passerine’s memory management technique, inductive type vaporization, also plays friendly with Rust’s borrow checker, allowing for easy integration with existing Rust codebases.
If you're wondering what Passerine is all about, here's a brief overview of the language and it's (planned) features
Downloading Passerine is quick and easy. Just run the following in the shell of your choice:
sh <(curl -sSf https://www.passerine.io/install.sh)
This script just pulls the latest version of Passerine, builds it from source, and adds it to your $PATH
. Give it a read before running it if you'd like!
In the future, we plan to distribute prebuilt binaries, but for now, both Git and Cargo are required.
To create and run a new Passerine project, again, in your favorite shell:
aspen new hello-passerine
cd hello-passerine
aspen run
Passerine has a bunch of great resources for getting started, and the Passerine community values witty, insightful, and helpful documentation. Check out some of the following resources to get started:
Passerine, as a language, can’t grow without your help. As we’re currently in an early stage of development, any and all feedback and contributions count. Passerine’s compiler values simplicity above all else, so it’s easy to start hacking on it — all you need are some basic Git, Rust, and Passerine skills, and you’re set.
Disclaimer
Passerine is at an early stage of development. Although a lot's been done, there's still a lot to do. If you'd like to know about the current state of development, ping Isaac Clayton (
@slightknack#4221
) on the community Discord server.