Lua Workshop 2018

The Lua Workshop 2018 will be held in Kaunas, Lithuania, on September 6–7, 2018, cortesy of CUJO.

As in previous workshops, the main goal of the workshop is to allow the Lua community to get together and meet in person and talk about the Lua language, its uses, and its implementation.

The workshop is open to everyone interested in Lua. Register now to reserve a seat.

Please make your own travel and accommodation arrangements. See the tips in the local page. Contact us if you need help or have special requirements.


Registrations are now open. There is no registration fee but registration is required because space is limited.

To register to attend the workshop, send a message to including your full name and the name of your company or organization, if applicable. As confirmation, your name will appear in the list of participants.


The program is available here and also below.

We shall have a plenary talk by Roberto Ierusalimschy (Lua's chief architect) and several contributed talks. There will also be plenty of time for getting together and chatting about Lua.

If you'd like to speak at the workshop, send a tentative title and a short abstract with your registration.

Thursday, Oct 6th

8:45 registration and badge pick-up
9:00 Garbage collection in Lua
Roberto Ierusalimschy

10:00 coffee break
10:30 Rewriting LuaJIT: Why and How?
Anton Soldatov
11:15 Scripting Linux system calls with Lua
Pedro Tammela
12:00 lunch
14:00 Pallene
Gabriel Ligneul
14:45 Lua (and Fortran) in thermomechanical simulations
Vadim Zborovskii
15:30 coffee break
16:00 How do you use your Lua skills to start making games
workshop with Björn Ritzl and Oleg Pridiuk
17:00 end of first day

Friday, Oct 7th

9:00 warm up
9:15 Machine learning for HTTP requests with OpenResty and Torch
Kipras Mancevičius
10:00 coffee break
10:30 Effil: yet another way for multithreading in Lua
Mikhail Kupriyanov
11:15 New features in LuaRocks 3.0
Hisham Muhammad
12:00 lunch
14:00 LuaMemory - Writable byte sequences in Lua
Renato Maia
14:45 The route to ARM
Javier Guerra
15:30 coffee break
16:00 LabLua in the Google Summer of Code
Ana Lucia de Moura
16:45 end of second day


The workshop will be held at the CUJO AI Headquarters in Zemieji Sanciai:

A. Juozapavičiaus pr. 31B
Kaunas 45257

See the precise location in the map.


The workshop is organized by CUJO and the Lua team.

The organizers can be contacted at

Sponsored by CUJO


Registered participants are listed here. If you have sent a registration and your name does not appear here in a couple of days, please let us know.


Garbage collection in Lua slides
Roberto Ierusalimschy (PUC-Rio /

How do you use your Lua skills to start making games - workshop slides
Björn Ritzl and Oleg Pridiuk (King)

This no-slides workshop guides you of how to quickly start making games without much experience in gamedev, but with good Lua skills. We'll start with an empty project and by the end of the workshop we'll have a small game running on mobiles and the browser. We'll give people the kick-start and supply them with a demo-project so they can experiment at home. So we won't require attendees to follow us on their laptops during the workshop.

Rewriting LuaJIT: Why and How? slides
Anton Soldatov (IPONWEB)

In our company, we have used Lua for more than 10 years to describe the business logic of our projects. The long journey started with PUC-Rio Lua, went through LuaJIT, and finally led us to our own implementation based on LuaJIT 2.0. In my talk, I would like to discuss:

The route to ARM slides
Javier Guerra (Cloudflare)

At Cloudflare, ARM servers are coming. We're in the midst of a project to port all our services from the current Intel-only to a more diverse environment. Given that roughly half of each CPU's time is spent running LuaJIT code and the huge number of machines we deploy to, we have to follow and investigate many corner cases. This talk will present a few of the challenges and lessons learned so far.

Effil: yet another way for multithreading in Lua slides
Mikhail Kupriyanov (Kaspersky Lab)

Multithreading is one of the eternal problems of script languages. Lua suffers from this problem too: no native support of OS threads and interpreter state lock. Existing solutions that work with threads in Lua use different approaches and do not cover all our needs at once. This talk explains how Effil solves this problem. The Effil is a multithreading library for Lua. It aims to provide high level abstraction of threads usage and interaction. Based on multiple interpreter states approach, Effil reimplements a set of Lua mechanisms (tables, metatables, GC) from scratch to make objects live outside of Lua state and be transmittable between threads. In sum with other features this library makes thread usage simple and efficient.

Scripting Linux system calls with Lua slides
Pedro Tammela (CUJO AI)

Recent versions of the Linux kernel introduced a feature to offload TLS encryption/decryption to kernel space, letting users use send/recv system-calls transparently. Kernel scripting is a paradigm in Operating Systems that allows users or programs to modify, at run time, kernel tailored behaviors using scripts in high level languages like Lua. Inspired by the new TLS feature, in this talk we explore system-call scripting, using Lua scripts in a kernel-scripted Operating System, to modify the behavior accordingly. We present a prototype implementation and discuss possible real world use cases.

New features in LuaRocks 3.0 slides
Hisham Muhammad (Kong)

LuaRocks 3.0 is out, and it contains a bunch of new features which are easy to miss out if you're used to the typical LuaRocks workflows. In this talk, we'll take a tour around the features of this new release, including the changes and simplifications of the rockspec format, and the introduction of project-based workflows, where you can install a separate set of rocks for a project and work with a private rocks tree without disturbing your main system.

Lua (and Fortran) in thermomechanical simulations slides
Vadim Zborovskii (SRC RF TRINITI)

The talk covers the use of Lua as an extension and glue language for the computer codes which perform engineering thermomechanical analysis. One of the applications is specification of the physical material properties, boundary conditions, volume sources and other input parameters by the user. Those values can depend on many variables and be defined as constant, tables, formulae or algorithms. A database of user functions written in Lua is one of the feasible solutions. We describe the architecture and some implementation details, including Lua bindings to Fortran-2003/2008. Another topic is development of the thermomechanical simulation software where the control logic written in Lua serves as a glue for the computational modules written in Fortran, C and other static high-performance languages.

LuaMemory - Writable byte sequences in Lua slides
Renato Maia (CUJO AI)

Lua strings can handle binary data, but as they are immutable it is usually necessary to create temporary strings with partial data prior to compose the desired final byte sequence. LuaMemory provides an alternative to strings by use of memory areas, which work as writable byte sequences that can be used to compose the binary data and avoid the creation of temporary objects. In this talk, we present how to use the Lua module to create and manipulate memory areas. We also show how to use the provided C API to manipulate these memory areas from C, and also how to use it to write or adapt current libraries that handle strings to be able to handle memory areas interchangeably.

Pallene: designing a statically typed language around Lua slides
Gabriel de Quadros Ligneul (CUJO AI)

Pallene is a companion language for Lua aimed to archive good performance by relying on a static-type system and an ahead-of-time compiler. Pallene is also designed to seamlessly interoperate with Lua, hence performance-sensitive code can be written in one language and the scripting in the other. In this talk we are going to focus on the design of arrays in Pallene, a single data structure that is shared between the two languages.