About Conference

The Lua in Moscow Conference 2019 was held in  Moscow, Russia, on  March 3, 2019.

The main goal of the conference 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 conference has been opened to everyone interested in Lua. The chief guest and speaker of the conference was Roberto Ierusalimschy, the creator of Lua language and Associate Professor of Computer Science at PUC-Rio

The spoken language of the conference was English.

Conference events

Follow us


Large Conference Room

Roberto Ierusalimschy
Julien Desgats
Sergey Lerg
Coffee Break
Michael Filonenko
Roberto Ierusalimschy
Round table
Cinema Hall

Mons Anderson
Sergey Lerg


Roberto Ierusalimschy

  Why (and why not) Lua
Roberto Ierusalimschy PUC-Rio

The design of a programming language, as that of any other artifact, entails many tradeoffs involving conflicting requirements. Different languages solve these tradeoffs in different ways, making each more appropriate for some scenarios and less attractive for other settings.

Lua has its own set of goals, which guides its design. This set prioritizes embeddability, small size, simplicity, and portability. (There are other goals, too, such as performance and ease of use by non-professional programmers.)

In this talk, we will discuss the impact of this set of goals. We will see how these goals impact the language itself, how it impacts its uses, and how it impacts its suitability for different application domains.

Julien Desgats

Resty-threadpool: Reinventing Apache in nginx
Julien Desgats CloudFlare

Asynchronous event loops are a proven way to scale network servers, nginx (among many other successful products) use this technique at its core. However its performance depends on a key assumption: the business logic must not run for too long, otherwise the overall performance collapses quickly.

At Cloudflare[1], we rely heavily on OpenResty[2] (nginx+Lua+libraries) for our edge servers and ensuring a predictable performance is critical. Offloading some complex parts of the processing outside of the event loop is therefore necessary and was usually done by writing microservices. We tried another approach leveraging the nginx thread pool feature [3]. In this talk I will go in detail about the the challenges and results of taking core security features out of the event loop.

Yaroslav Dynnikov

Tarantool team’s experience with Lua developer tools
Yaroslav Dynnikov Mail.Ru Group

Every programming language has its own ecosystem, which is important for community wellbeing. Application development is not only about writing the code, but also about testing it, optimizing and sharing with others. Here in Tarantool we have many developers, who interact with Lua full-time.

I’m going to discuss different aspects of Lua development in our environment. How we write code comfortably with linting. What tools we use for debugging and testing. How we manage documentation and packaging conveniently. And, more importantly, what features we lack.

Sergey Lerg

  Shaders and Lua
Sergey Lerg Spiral Code Studio

It's not possible to write shaders in Lua, but it's possible to control them with Lua. I want to demonstrate how easy it is to make beautiful effects with the power of GLSL and Lua. Additionally I will provide useful tips and tricks of working with shaders in the Defold game engine.

Michael Filonenko

DSL compilation with DynASM
Michael Filonenko Mail.Ru Group

Dynasm is machine code generator for several architectures (x86, x86_64, etc). It contains two parts:
- machine code generator written on c
- and assembler preprocessor on lua.

Original preprocessor works only with c/assembler sources. And there is fork by luapower which can preprocess lua files with assembler code generators. There is case when we want to use logic from user-input. Let's research this toolset and make simple s-expression compilator. The main question is "How comfortable it is to make compilator for user input"
Maxim Bolshov

  Challenges of ‘pairs’ and ‘next’ JIT compilation
Maxim Bolshov IPONWEB

In IPONWEB we have our own Lua implementation. It was forked from LuaJIT 2.0 and inherited all its limitations. In particular, ‘pairs’ and ‘next’ functions were not supported by JIT compiler. However, on our Lua codebase this is a top-3 reason of trace compilation aborts, which imposes some trade-offs between code style and application performance.
In the talk I am going to:
* discuss what it means to make library function call JITable;
* explain implementation specifics of ‘pairs’ and ‘next’ in LuaJIT;
* tell about JIT limitations which makes ‘pairs’ and ‘next’ compilation a not so trivial task;
* demonstrate our progress in solving this task.

Roberto Ierusalimschy

Garbage Collection in Lua
Roberto Ierusalimschy PUC-Rio

In this talk, we discuss how the garbage collector in Lua has evolved, from a simple mark-and-sweep collector to an incremental collector and then to the new generational collector, to appear in Lua 5.4.

Mons Anderson

Tarantool usecases for rich applications
Mons Anderson Mail.ru Cloud Solutions

At first look, Tarantool is a database. And rather hard to see the whole potential of this product as an application server. I will tell and show how to unlock its potential: how to use the built-in LuaJIT server with sockets, fibers, channels, ffi and many more. How to make code to be reloadable on the fly. These themes will be discussed step by step on the example of building the queue server as a sample application.

Sergey Lerg

  Making a simple platformer with Defold
Sergey Lerg Spiral Code Studio

Platformers are a very popular game genre, some are simple, some are rather complex. In this workshop I will demonstrate how to make a basic platformer with the Defold game engine. Most tutorials on this topic tend to oversimplify things with handcrafted levels when they can be generated and with the usage of a physics engine when it's completely unnecessary.


The conference was organized by Alexander Gladysh and the sponsors below. Chair of the Program Committee Anton Soldatov.

Sponsored by

Contact Us