Jazz

Jazz - modern and fast programming language that uses GCCJIT


Jazz

Jazz is a statically typed programming language that allows you emitting machine code or translating Jazz AST directly to C++.

Learning

To learn language you need clone Jazz source code from github and build book using mdbook,you can look at how to build book in README.md in master.

GCCJIT

GCCJIT is a wrapper around GCC that allows emitting GIMPLE code. Jazz AST directly translated into GIMPLE and then compiled into machine code,after this binary file or JIT code emitted.

C++

Jazz also translates its AST into C++ and then this output compiled by default C++ compiler.

Cranelift and LLVM

These two backends still unimplemented since for this backend Jazz should get a nice IR to perform optimizations on code.

Example code

Jazz looks like this:

import "std/libc.jazz"

struct Point {
    x: i32,
    y: i32
}

func add(x: i32,y: i32) i32 {

    return x + y;
}

func add(x: f32,y: f32) f32 {
    return x + y;
}

pub func main() i32 {
    var p = Point {
        x: 40,
        y: 2
    }
    printf("%i\n",add(p.x,p.y));   
    printf("%f\n",add(4.0,2.0));
    return 0;
}