Skip to main content
i++ supports C11 types and adds string and dynam. Several other types described in the language design are not implemented; check compiler status.

Use C11 types

Pointers, structs, unions, enums, and standard control-flow types remain available.

Use i++ collections

string and dynam are supported additions. auto and tuple are not implemented.

C11 types

The compiler accepts C11 primitive types, pointers, arrays, structs, unions, enums, and typedef.
Sizes depend on the target C ABI. On the documented Linux x86_64 LP64 target, common sizes are:

string

string is an i++ string type. The compiler supports string values and operations.
Use char* where C interoperability requires a pointer to a null-terminated string. See string operations for iodine functions.
Use len(greeting) to get the string length. You do not need to import a library for the built-in len().

dynam

dynam declares a dynamic array. Use an initializer list and array methods to update it.
The compiler supports dynamic arrays and len() for arrays. tuple is not supported.

Heap allocation

Use allocate to allocate heap storage and free to release it:
The compiler also supports a custom-size form:
autoremove is not implemented. You must release heap allocations with free.
allocate int value(64) requests 64 bytes of storage. It does not create an array of 64 integers. Use brackets for an element-counted array.

Planned types and extensions

auto, tuple, named lamb functions, struct constructors and methods, and typed struct inheritance are not implemented in the current compiler. Standard C-style structs containing fields are supported.

Format specifiers

iodine/printd implements C-style format specifiers including %d, %i, %ld, %lld, %lu, %u, %o, %x, %X, %p, %s, %c, and %f. The %k specifier is not available because auto is not implemented.