What is Lilush?

Description

Static LuaJIT runtime with batteries

Lilush is a couple of things. First of all, lilush is a statically compiled for Linux LuaJIT interpreter that comes bundled with a curated collection of Lua modules and C libraries for

For networking, lilush uses LuaSocketWolfSSL library, which is based on Luasocket and LuaSec modules merged into one and refactored to work seamlessly with WolfSSL. WolfSSL is also statically compiled and incorporated into the lilush binary.

The binary is fewer than 2MB, and should work fine on any x86_64 Linux system. It’s also a nice addition to a FROM scratch docker container, as lilush can be used as a busybox replacement.

And to top it off, lilush can compile your Lua code into a static binary too!1

Linux Lua Shell

Secondly, to showcase most features of its bundled modules, lilush includes a modular Linux Shell (as in Bash, Csh or Fish), suprisingly called Lilush Shell, which

Lilush Shell relies on Kitty’s keyboard protocol, thus will only work in terminal emulators that support this protocol, e.g. kitty, foot, alacritty, konsole

Oh, and there is also RELIW, a web server/framework built on top of Lilush core modules.

Installation

Building from source

The easiest way is just to build with docker and then copy the binary from the container:

git clone https://github.com/epicfilemcnulty/lilush
cd lilush
ln -s dockerfiles/lilush Dockerfile
docker build -t lilush .
docker cp $(docker create --name lilush lilush):/usr/bin/lilush .
docker rm lilush

If you want to build on a host system, see the Dockerfile as a reference for building details.

Status

Right now the project is certainly in beta.

When most of the above issues are resolved, the 1.0.0 version will be released. But quite a lot of things might be heavily refactored or removed along the way to the 1.0.0 version, so beware and use at your own risk.

After 1.0.0 version release the project will abide by the semantic versioning promises, but until then all bets are off. Meaning that there might be breaking changes of the core lilush modules’ API even between, say, 0.5.x and 0.6.x. Or worse. But let’s hope it won’t come to that.


  1. Well, not yet automatically. And it really depends. But still.↩︎︎