|
|
|
@ -1,8 +1,12 @@ |
|
|
|
# `ink` |
|
|
|
|
|
|
|
> *Any information here is subject to change and may already not be inaccurate anymore* |
|
|
|
|
|
|
|
> *Here be dragons, you may have dug too deep* |
|
|
|
|
|
|
|
`ink` is a minimalistic interpreted programming language, tentatively implemented exclusively in C89. It features |
|
|
|
coroutines and can currently only manipulate integers. Part of the code may not be compliant with C89 and I will try to |
|
|
|
fix that in time. |
|
|
|
coroutines and can currently manipulate integers and arrays of integers, which can be interpreted as strings of Unicode |
|
|
|
codepoints. Part of the code may not be compliant with C89 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: |
|
|
|
|
|
|
|
@ -31,6 +35,26 @@ It is possible to segregate unsafe allocations (allocations that should be hidde |
|
|
|
- Functions have a count limit 128 labels (see `ink_parse`) |
|
|
|
- Only non-main functions can use labels |
|
|
|
|
|
|
|
## Roadmap |
|
|
|
|
|
|
|
- Greater homoiconicity |
|
|
|
- Can get a list of the words |
|
|
|
- Can get words as arrays |
|
|
|
- Can execute arrays as words |
|
|
|
- Can manually create or modify |
|
|
|
- Can read a routine program stack |
|
|
|
- Can read a routine instruction counter stack |
|
|
|
- Can read a routine stack |
|
|
|
- Can set a routine status |
|
|
|
- Word redefinition (with a flag) |
|
|
|
- 9front port |
|
|
|
- 9front shell |
|
|
|
- Shell able to run external program and parse IO from other programs |
|
|
|
- Shell can import files (requires waiting for a routine in a routine) |
|
|
|
- Waiting for another routine |
|
|
|
- Executing other routines |
|
|
|
- Move shell words to base implementation *iff* they do not have any external dependency (e.g.: `version`) |
|
|
|
|
|
|
|
## Examples |
|
|
|
|
|
|
|
### Hello World |
|
|
|
|