Lilush: the next small thing

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 smaller 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...

Side projects

There are a couple of side projects, built upon lilush, that might be of interest:

Installation

Download the lilush binary and matching lilush.sig signature file from GitHub Releases.

Verify release signature

Lilush release binaries are signed with an SSH key (namespace=file).

# Example: download one release (adjust tag if needed)
TAG=X.Y.Z
curl -fLO "https://github.com/epicfilemcnulty/lilush/releases/download/${TAG}/lilush"
curl -fLO "https://github.com/epicfilemcnulty/lilush/releases/download/${TAG}/lilush.sig"

# Create allowed signers file with the release signing key
cat > allowed_signers <<'EOF'
vladimir@deviant.guru ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICEWU0xshVgOIyjzQEOKtjG8sU8sWJPh25CP/ISfJRey
EOF

# Verify signature
ssh-keygen -Y verify \
  -f allowed_signers \
  -I vladimir@deviant.guru \
  -n file \
  -s lilush.sig < lilush

If verification succeeds, ssh-keygen prints Good "file" signature for vladimir@deviant.guru ....

Install binary

chmod +x lilush
install -Dm755 lilush ~/.local/bin/lilush

Make sure ~/.local/bin is in your PATH.

Building from source

See BUILDING.md

Status

Right now the project is certainly in beta.

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.