Jazz is a fast and modern systems programming language designed for game and desktop programs development. Language inspired by C++,Swift,Vala and Rust and main goals is memory safety and compile-time execution.
Build system and package manager included into compiler, you can just use jazz new <package name>
command to create new project. To import some dependency you can add it's description in build.jazz
file:
var dependencies = [(package: "Example",version: " 0.0.1",git: "https://github.com/user/Lib")];
Jazz allows you to execute a lot of code in compile-time context. This feature allows you to detect something at compile-time instead of run time, for example bit_cast
function from standard library uses compile-time assert
to throw error at compile-time:
fun bit_cast<T,U>(val: T): U {comptime {assert(sizeof(T) == sizeof(U));}...}
You can iterate over enumeration values, get structure methods and fields and etc. You can do a lot of things with reflection in Jazz,just a simple example:
fun fields_string<T>(): Array<String> {assert(@isStruct<T>());var fields = @getFields<T>();var array = Array<String>(cap: fields.size());for (const field in fields) {array.push(field.name);}return array;}