Coco is a small extension to get True C Coroutine semantics for Lua 5.1.

Coco is both available as a stand-alone release and integrated into LuaJIT 1.x.

The stand-alone release is a patchset against the » standard Lua 5.1.4 distribution. There are no dependencies on LuaJIT. However LuaJIT 1.x depends on Coco to allow yielding for JIT compiled functions.

Coco is Copyright © 2004-2010 Mike Pall. Coco is free software, released under the » MIT/X license (same license as the Lua core).


True C coroutine semantics mean you can yield from a coroutine across a C call boundary and resume back to it.

Coco allows you to use a dedicated C stack for each coroutine. Resuming a coroutine and yielding from a coroutine automatically switches C stacks, too.

In particular you can now:

Best of all, you don't need to change your Lua or C sources and still get the benefits. It's fully integrated into the Lua core, but tries to minimize the required changes.

More ...

Please visit the » Download page to fetch the current version of the stand-alone package.

Coco needs some machine-specific features — please have a look at the Portability Requirements.

Coco also provides some upwards-compatible API Extensions for Lua.