NOS (Not an Operating System) is not a novel concept. In fact, certain RTOS implementations already include CoRoutine implementations for this exact reason.
A list of already existing implementations include:
While these do provide stackless tasks, they all come with their own set of limitations. Some of these include:
- Un-intuitive API.
- Lack of a coroutine scheduler.
- Inability to create multiple coroutines with the same body.
NOS tries to address all of these short-comings, and provide some additional features as well.
In all honesty, it seems silly to implement an stackless RTOS when saving the context is easy to implement and useful. Then again, it's also silly that RTOS' such as embOS needs at least 80 bytes just to implement a simple LED blinking task.