2. Lua for M2M (machine-to-machine) communications.
We develop a software agent, running on various embedded devices, which allows to monitor and control them through the net. A large part of the embedded code is written in Lua, which offers interesting solutions to many of our problems. Among noteworthy technologies we consider presenting, we have:
- coroutine-based scheduling, which allows most of our code to run unmodified on Linux-based systems as well as OS-less, callback driven architectures.
- a widespread use of ltn12 to handle data streams (IPC as well as client/server communications, mostly based on Hessian).
- some modifications in the Lua bytecode format which allows to keep large parts of Lua code in flash, thus saving significant amounts of RAM.
- an application-generation wizard, which offers flexibility for unforeseen needs (by allowing to add arbitrary Lua code), and allows to provision generated applications on architectures which would normally only accept a single monolithic executable.
Discussion
We would also like to launch or join discussions about the standardization of commodity libraries and coding practices in Lua. We believe that we could have been more productive, had such standards been widely established in the Lua community. We think, for instance, that there ought to be a standard for coroutine scheduling, just as there's Luasocket as the de facto standard for networking; it also seems that serialization/RPC protocols ought to interface seamlessly through ltn12.
On a related note, Koneki is targeting M2M/embedded developers; it proposes a model of library intended to ease code analysis and reuse, deployment of cohesive sets of Lua files onto a remote target, remote launch and debug of applications, etc. We are interested into checking how much of those needs make sense beyond our M2M primary target.