string :: struct {
    len: s64;
    ptr: *u8;


Builtin string storage. string type could represent dynamic and compile time static strings.

// Compile-time string literal
my_string :: "This is my string!";
// Dynamic string allocated on heap.
// New dynamic string can be created from string literal.
my_string :: string_new("This is my string!");
defer string_delete(my_string);

All BL strings are zero terminated, due to better interaction with C APIs, terminator is not counted in string length. However BL API functions does not relly on this.