- No strict type checker
- No C-like pointer arithmetic
- No function-like macros
- No
break
,continue
stmt. Usegoto
- Allows
13 <= age < 20
instead of13 <= age && age < 20
- Variable length args
func(...)
can be accessed with built-in variablesargc i64
andargv *i64
- The compiler is written in itself
- Default args don't have to be on the end (WIP)
#include "std/header.ibu"
func main() i32 {
let age i32 = 19;
if 13 <= age < 20 {
printf("Teen-ager\n");
}
return 0;
}
$ git clone git@github.com:v420v/ibu.git
$ cd ibu
$ make up
$ make ibulang
$ make init
A simple example compile and run hello world
$ ./ibuc main.ibu | as - -o main.o
$ as -o lib/runtime.o lib/runtime.s
$ ./ibuc lib/linux-syscall/linux-syscall.ibu | as - -o lib/linux-syscall.o
$ ./ibuc lib/std/std.ibu | as - -o lib/std.o
$ ld -o main main.o lib/runtime.o lib/linux-syscall.o lib/std.o
$ ./main