Provides a cooperative multitasking platform for LUA Each instance of lua_State * can be considered as a LUA thread being run by an underlying OS thread.
- A collection of C++ class libraries and C functions, built by enahancing a fork from Poco library (16-Apr-2018)
- Exposes a set of platform functions to lua programming language, making it easy to develop web applications in lua
- Implements event driven IO through coroutines, i.e. threads initiating IO do not block and continue with other taks, and once the IO is complete any available thread continues the task from where the task was left of
- The IO-event driven task handling is achieved via coroutines in lua, which accomplishes cooperative multi-tasking and provides the programmer an interface of sequential code vis-a-vis an event driven code with promises etc...
- Focused on solutions to frequently-encountered practical problems.
- Focused on ‘internet-age’ network-centric applications.
- Open Source, licensed under the Boost Software License.
The library essentially genetates two outputs evluaserver and evlua
- evluaserver: A HTTP server that listens on a port for HTTP requests. Upon arrival of a new HTTP request a lua file main.lua is run. The file should be present in the directory where from where the executable is run or present in path as specified by the environmental variable EVLUA_PATH
- The global lua module platform is avaialble to the lua file using which other aspects of HTTP processing such as request, response etc... can be accessed. The documentation has complete datails of various services available to the lua environment.
- evlua: A standalone component which can run a lua script from the commandline. A lua file when run from evlua can access platform and achieve event driven IO.
- CMake 3.5 or newer
- A C++14 compiler (GCC 5.0, Clang 3.4, or newer)
- OpenSSL headers and libraries
- PostgreSQL client libraries
- openssl and libssl-dev
Dependencies maintained in Tekenlight
- Customized libev
- Customized lua 5.3.5
- efio event driven file-io and lockfree data structures
- Customized redis client
- Customized http-parser
Currently the dependencies maintained in Tekenlight have to be built first and installed before building evpoco. (TDB) Customized libev, Customized lua 5.3.5 and evpoco, efio, redis client, postgresql client are to be merged into single repository evpoco
$ git clone -b master https://github.com/Tekenlight/evpoco
$ cd evpoco
$ mkdir cmake-build
$ cmake -DPG_VERSION="<12, 13, 14 or 15, depending on which Postgresql client version is installed>" ..
$ cmake --build . --config Release
Usage examples of evlua and evluaserver are provided
See the Usage documentation for usage
Other links: evlua documentation
- Crypto and NetSSL_OpenSSL related commits in poco reconciled on 30-Aug-2023 (TLS 1.3, OpenSSL3 and other enhancements) (poco NetSSL_OpenSSL 11-Jul-2023 Crypto 11-Jul-2023)