[ANN] Lunatik v5.0 released

8 views
Skip to first unread message

Lourival Vieira Neto

unread,
Oct 5, 2026, 11:14:43 AM (5 days ago) Oct 5
to lua...@googlegroups.com
Lunatik is a framework for scripting the Linux kernel with Lua. Lua
scripts run inside the kernel and reach its facilities through Lua
modules, including character devices, Netfilter, XDP and TC hooks,
kprobes, fsnotify, sched_ext, eBPF maps, sockets, netlink, crypto,
kernel threads and more. Lunatik 5.0 supports Linux 6.6 and later and
is dual-licensed MIT or GPL-2.0-only.

The release brings the following changes:

- Lua 5.5.1 is now used inside the kernel.
- The netlink stack is written in Lua and supports generic netlink,
routing (links, addresses, routes and rules), and nl80211 (interfaces,
stations, access points). netlink.channel multicasts messages to user
space.
- lunatik compile builds chunks for the kernel, using a luac built for
the kernel's own Lua configuration, with either byte order as the
target.
- New struct and class modules provide fixed C struct layouts and
object-style Lua modules.
- eBPF programs can call Lua. With tc, a Traffic Control eBPF program
calls Lua at network ingress and egress. With scx, a sched_ext program
calls Lua for task scheduling.
- Lua scripts can open pinned eBPF maps with bpf. bpf.map exposes a
map as a table that scripts can index, assign and iterate, or as a
queue with push, pop and peek.
- fsnotify places marks on files, directories and mounts and delivers
their events, including permission events, to Lua callbacks.
- lunatik run --percpu creates one runtime per CPU sharing one
registration, so a hook runs on the CPU where it fires.
- A new task module provides access to the Linux task interface.
- New examples include sniclassify, fsmonitor, execguard, linkflap,
netfailover and dropreason.
- The release includes a documentation site with a guide, the
reference for every module and the C API.

Lunatik 5.0 is a major release. Scripts written for 4.x may need
changes. The release notes list these under "Changes to existing
APIs".

A special thanks to Ashwani Kumar Kamal, whose Google Summer of Code
2026 project with LabLua (PUC-Rio) contributed the eBPF map, Traffic
Control and scheduler bindings, along with the task module and the
sniclassify example. Thanks also to all the other contributors who
helped make this release happen.

Repository:
https://github.com/luainkernel/lunatik

Release notes:
https://github.com/luainkernel/lunatik/releases/tag/v5.0

Documentation:
https://luainkernel.github.io/lunatik/

Matrix:
https://matrix.to/#/#lunatik:matrix.org

Regards,
--
Lourival Vieira Neto
Reply all
Reply to author
Forward
0 new messages