Welcome to Passerine! Passerine is a small, concise, extensible programming language, powered by a VM written in Rust. It was inspired by Scheme, OCaml, Rust, and Wren. Here's a small taste:
``` -- defining a macro syntax 'for 'each var 'in list do { body = var -> do
loop = remaining -> {
match remaining {
() -> (),
[head & tail] -> { body head; remaining tail }
}
}
loop list
}
-- using said macro for each number in (reverse [1, 2, 3]) { print (number + "...") }
print "Liftoff!" ```
If you just want to see what Passerine can do:
NOTE: Passerine is in an early stage of development. It's just barely reached the stage of theoretically being Turing-complete, but don't @ me yet.
If you'd like to contribute:
CONTRIBUTING.md
has general guidelines and discusses project structureThis is a loose roadmap of the features we plan to add to Passerine to reach 1.0.
| Version | Milestone | Status (P, W, S) | Stable Goal | |-----------|-----------------------------|------------------|-------------| | 0 | Start Project | Stable | | | 0.1 | Lexer | Stable | | | 0.2 | Parser | Stable | | | 0.3 | Bytecode Generator | Stable | | | 0.4 | VM | Stable | 2020-04-25✓ | | 0.4.1 | Local Variables | Stable | | | 0.4.2 | Block Expressions | Stable | | | 0.5 | Unary Datatypes | Stable | 2020-05-02✓ | | 0.5.1 | Nan Tagging | Stable | | | 0.5.2 | Numbers | Stable | | | 0.5.3 | Strings | Stable | | | 0.6 | Functions | WIP | 2020-08-08 | | 0.6.1 | Block Scope | Stable | | | 0.6.2 | Closures | WIP | | | 0.6.3 | Operators | WIP | | | 0.7 | Alg. Structs. | Planning | 2020-05-15 | | 0.7.1 | Tuple | Planning | | | 0.7.2 | Union | Planning | | | 0.7.3 | Record | Planning | | | 0.7.4 | Map | Planning | | | 0.8 | Hygenic Macros | Planning | 2020-05-29 | | 0.8.1 | Pattern Matching | Planning | | | 0.8.2 | Types and Traits | Planning | | | 0.9.0 | Fibers | | | | 0.9.1 | Error Handling | WIP | | | 0.10 | CLI | | | | 0.11 | Standard Library | | | | 0.11.1 | FFI | | | | 0.11.1 | I/O | | | | 0.11.2 | Math & Numeric Tower | | | | 0.11.3 | Random | | | | 0.11.4 | Time | | | | 0.11.5 | Networking | | | | 0.12 | Clean up for Stable Release | | | | 0.12.1 | Website | Planning | | | 1.0.0 | First Stable Release | | | | 1.1.0 | Automated Tests | | | | 1.2.0 | Documentation Generation | | | | 1.3.0 | Package Manager | | | | 2.0.0 | Parallelism | | | | ... | TBD | | |