|
|
- # `ink`
-
- `ink` is a minimalistic interpreted programming language, tentatively implemented exclusively in C98. It features
- coroutines and can currently only manipulate integers. Part of the code may not be compliant with C98 and I will try to
- fix that in time.
-
- It is fully self-contained and doesn't rely on a working standard library beyond the following:
-
- - `malloc`
- - `realloc`
- - `free`
- - `putchar`
-
- To make the library not use the standard library, build it with `NOSTDLIB` defined as a preprocessor directive.
-
- All of these functions need to work for `ink` to work. It is easy to add new functions to the interpreter. In the
- future, I will add a garbage collector to handle cleaning dynamically allocated resources.
-
- It is possible to segregate unsafe allocations (allocations that should be hidden from the interpreter) by setting the
- `inner_` versions of the library functions to different allocation functions.
-
- ## Limits
-
- - Token size is limited to 127 bytes (see `ink_lex`)
- - Values and indices are limited to the platform size of `int`
- - Main function has a size limit of 256 tokens (see `ink_compile`)
- - Functions have a size limit of 256 tokens (see `ink_parse`)
- - Functions have a count limit 128 labels (see `ink_parse`)
- - Only non-main functions can use labels
|