{"id":27946766,"url":"https://github.com/dmccuskey/lua-corovel","last_synced_at":"2025-10-04T00:11:58.743Z","repository":{"id":17315824,"uuid":"20086624","full_name":"dmccuskey/lua-corovel","owner":"dmccuskey","description":"Asynchronous, event-loop development environment for Lua (think nodejs, luvit, etc)","archived":false,"fork":false,"pushed_at":"2015-04-30T00:47:20.000Z","size":560,"stargazers_count":12,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-07T13:58:07.772Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmccuskey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-23T04:19:40.000Z","updated_at":"2020-07-03T15:55:39.000Z","dependencies_parsed_at":"2022-09-02T18:23:08.953Z","dependency_job_id":null,"html_url":"https://github.com/dmccuskey/lua-corovel","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dmccuskey/lua-corovel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmccuskey%2Flua-corovel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmccuskey%2Flua-corovel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmccuskey%2Flua-corovel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmccuskey%2Flua-corovel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmccuskey","download_url":"https://codeload.github.com/dmccuskey/lua-corovel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmccuskey%2Flua-corovel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278245470,"owners_count":25955032,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-03T02:00:06.070Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-07T13:57:42.279Z","updated_at":"2025-10-04T00:11:58.726Z","avatar_url":"https://github.com/dmccuskey.png","language":"Lua","funding_links":[],"categories":["Resources"],"sub_categories":["Asynchronous I/O"],"readme":"\n## Lua Corovel ##\n\nAn event-loop programming environment for Lua that mimics the one in Corona SDK.\n\n\n\n### Features ###\n\nThough it's in its infancy, Corovel is pretty cool. It will allow you to:\n\n* Run unmodified, *non-visual* code from Corona SDK on a server\n\n* create and run other Corvel environments in separate threads\n\n  Combined with [Lua Lanes](https://github.com/LuaLanes/lanes), each environment can run in its own OS thread ! sweet\n\n\n\n### Overview ###\n\n\n\n**Corovel Environment**\n\n\n![Corovel Cool](https://raw.githubusercontent.com/dmccuskey/lua-corovel/master/assets/corovel-main.png \"Corovel Overview\")\n\nCorovel provides some core environment objects from the Corona SDK so that *non-visual* code will run unmodified.\n\n\n**Threaded Corovels**\n\n\n![Corovel Cool](https://raw.githubusercontent.com/dmccuskey/lua-corovel/master/assets/corovel-sub.png \"Corovel Threads\")\n\nHere 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).\n\nEach sub-Corovel can launch its own threaded Corovels, too !\n\n\n\n### Dependencies ###\n\nCorovel is a library written in pure Lua. It requires the following Lua modules:\n\n* Lua 5.1 (5.2 should work too, though not tested)\n* LuaSocket\n\nOptional installs:\n* Lua Lanes\n\n\n\n### How to Use Corovel ###\n\nLaunch your Lua file with Corovel like so:\n\n* `lua corovel.lua main`\n  This launches `./main.lua` inside of the main Corovel\n\n* `lua corovel.lua commands.master`\n  This launches the file `./commands/master.lua` inside of the main Corovel\n\n\n\n### Why Corovel ? ###\n\n\nThe 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. =)\n\nAsync 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.\n\n\nNote that *Corovel is NOT the Corona SDK !* Corovel *does not* provide any visual services to code – eg, sprites, game-engine, etc.\n\n\n\n### Corona Modules ###\n\nThese objects from the Corona world are available, but might not be complete:\n* Runtime\n* timer\n* system\n* network\n\nThese shims are available for Lua modules:\n* json\n\n\n\n### Tests ###\n\nThere are two types of test frameworks used – Busted and Lunatest.\n\nLunatest tests run inside of a running Corovel. The script `run.sh` is setup for those. Type the following to run:\n\n`\u003e ./run.sh`\n\nBested tests run outside of Corovel and test basic units. Type the following to run:\n\n`\u003e busted`\n\n\n\n### Documentation \u0026 Examples ###\n\n\nMore docs coming soon. http://docs.davidmccuskey.com/display/docs/Lua+Corovel\n\nExamples are in the `examples` folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmccuskey%2Flua-corovel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmccuskey%2Flua-corovel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmccuskey%2Flua-corovel/lists"}