declare printf(fmt: *char, ...)

declare malloc(size: u64): *void

let strlen(cstr: *char): u64 =
  given {
    var len: u64 = 0
    for cast(u8, *(cstr+len)) != 0 {
      len = len+1
    }
  } -> len

struct string {
  data: *char
  len: u64
}

let string_new(cstr: *char): string =
  string{data=cstr, len=strlen(cstr)}

let string_get_at(s: string, i: u64): char =
  if i > s.len { '\0' }
  else { *(s.data+i) }