Yo is a compiled programming language with strong static typing

#[extern] fn puts(*i8) -> i32;

fn main() -> i32 {
    puts(b"Hello World!");
    return 0;

Learn more


Building Yo

$ git clone https://github.com/lukaskollmer/yo && cd yo
$ cmake . && make

Build requirements:

Running tests

$ cmake . -DBUILD_TESTS=1
$ make check


Building Yo via the CMake config will generate the following binaries:

Command Line Options [./yo]

$ ./yo -help
OVERVIEW: The Yo Programming Language v0.0.1

USAGE: yo [options] <input file>


General Options:

  -O                  - Enable optimizations
  -dump-llvm          - Dump LLVM IR to stdout
  -dump-llvm-pre-opt  - Dump LLVM IR to stdout, prior to running optimizations
  -emit               - Output format(s)
    =asm              -   Assembly
    =llvm-ir          -   LLVM IR
    =llvm-bc          -   LLVM Bitcode
    =bin              -   Binary
    =obj              -   Object File
    =none             -   None
  -fno-inline         - Disable all function inlining
  -fzero-initialize   - Allow uninitialized variables and zero-initialize them
  -g                  - Emit debug metadata
  -print-ast          - Print the Abstract Syntax Tree to stdout
  -run                - Run the generated executable after codegen. Implies `--emit bin`
  -run-args=<string>  - Argv to be used when executing the produced binary. Implies `-run`
  -stdlib-root=<path> - Load stdlib modules from <path>, instead of using the bundled ones

Generic Options:

  -help               - Display available options (-help-hidden for more)
  -help-list          - Display list of available options (-help-list-hidden for more)
  -version            - Display the version of this program

Useful options inherited from LLVM