An event-loop programming environment for Lua that mimics the one in Corona SDK.
Though it's in its infancy, Corovel is pretty cool. It will allow you to:
Run unmodified, non-visual code from Corona SDK on a server
create and run other Corvel environments in separate threads
Combined with Lua Lanes, each environment can run in its own OS thread ! sweet
Corovel provides some core environment objects from the Corona SDK so that non-visual code will run unmodified.
Here the Main Corovel launches and controls multiple Corovel instances, each running in separate threads via LuaLanes. Depending on needs, each process can be short-lived (eg, Web Worker) or loop forever (eg, server process).
Each sub-Corovel can launch its own threaded Corovels, too !
Corovel is a library written in pure Lua. It requires the following Lua modules:
- Lua 5.1 (5.2 should work too, though not tested)
- Lua Lanes
How to Use Corovel
Launch your Lua file with Corovel like so:
lua corovel.lua mainThis launches
./main.luainside of the main Corovel
lua corovel.lua commands.masterThis launches the file
./commands/master.luainside of the main Corovel
Why Corovel ?
The name Corovel comes from the phrase Corona Event Loop. I created it so that I could run certain modules from my DMC Corona Library in a server environment (eg, async TCP Sockets, WebSockets, and WAMP). I figured if I could create an enviroment similar to the Corona SDK, then I wouldn't have to re-write any of the libraries and could continue to code in my "normal" Corona-esque manner. =)
Async programming is easy if you have the right building blocks for async code. The Corona SDK environment provides two core objects: the Corona Runtime and Corona Timer. The event loop powers both the Runtime which sends out events every "frame" and the Timer which will call a handler after a certain time has passed.
Note that Corovel is NOT the Corona SDK ! Corovel does not provide any visual services to code – eg, sprites, game-engine, etc.
These objects from the Corona world are available, but might not be complete:
These shims are available for Lua modules:
There are two types of test frameworks used – Busted and Lunatest.
Lunatest tests run inside of a running Corovel. The script
run.sh is setup for those. Type the following to run:
Bested tests run outside of Corovel and test basic units. Type the following to run:
Documentation & Examples
More docs coming soon. http://docs.davidmccuskey.com/display/docs/Lua+Corovel
Examples are in the