Protothreads are an extremely lightweight, stackless, thread-like programming abstraction designed for severely memory constrained embedded systems that may have as little as a few hundred bytes of RAM. Protothreads are designed to replace event-driven C code with sequential programming but without the memory overhead of full multithreading - a protothread requires only two bytes of RAM. Protothreads are implemented in ANSI C, does not require any machine code, and is therefore highly portable. Version 1.3 adds the possibility to determine if a protothread is blocked, has yielded or has ended, and can be downloaded here. Also be sure to read how protothreads work, under the hood.