The purpose behind lupa is pretty simple. It's a language made to be mine. I like various different language features, and lupa is my attempt to put them all together in one small little package. It's not great, but I'm working on it.

Lupa is a multi-paradigm language, adopting ideas from both functional and object-oriented languages. It uses a garbage collector for memory management.

The implementation I'm writing is AOT compiled using LLVM.

The simplest lupa program looks like this:

func main() {
    println("Hello, world!");

Lupa doesn't allow top-level statements, hence the need for func main(). That serves as the entrypoint into the program.

a more complex program

The following code is fake, lupa will look very different.

class Token impls Iterator {
    func new() -> Token {
        Token {

    func next(self) -> str {;;;
fn main() {
    // unused, ik
    let x = 5;
    println!("Hello, world!");