Conference program Lua in Moscow 2019



    As we reported in the previous announcement , the 3rd international conference Lua in Moscow 2019

    will be held at the Mail.ru Group office on March 3 (Sunday). The conference will be held in 2 streams: reports and seminars.

    All reports and seminars will be in English without simultaneous translation.


    Reports (meeting room # 1)



    image10:30 Start of registration

    11:00 - 11:45 “Why (and why not) Lua / Why Lua (and why not)”, Roberto Jerusalem, PUC-Rio

    When creating a programming language, contradictions in requirements often push authors to compromise solutions. This is a common occurrence in the development world. Different languages ​​come to a compromise in different ways, which makes each language more suitable for some scenarios and less attractive for others.

    There is a set of goals for the Lua language, which determines the direction of design. Priority is given to embeddability, small size, simplicity and portability. There are other goals, such as performance and ease of use by non-professional programmers.

    As part of the report, we will discuss the impact of this set of goals. We will see how these goals affect the language itself, its use, as well as the possibility of its application in various fields.


    12:00 - 12:45 "resty-threadpool: reinventing Apache in nginx / resty-threadpool: new reading of Apache in nginx", Julien Desgats, CloudFlare

    Asynchronous event loops are a proven way to scale network servers. nginx (like other successful products) basically uses this particular technique. However, its performance depends on a key condition: the business logic should not be worked out for too long, otherwise the overall performance drops rapidly.

    In Cloudflare rely heavily on OpenResty (nginx could the Lua + + libraries) in all that relates to edge servers. At the same time, predictable performance is critical. This requires removing some of the complex processing parts from the event loop. As a rule, this was previously done by writing microservices. Cloudflare tried a different approach: use the nginx thread pool function. The report will describe in detail the problems and results of extracting the basic security functions from the event cycle.


    13:00 - 14:00 Lunch

    14:00 - 14:45 “Tarantool team's experience with Lua developer tools / Experience of the Tarantool team with development tools in the Lua language”, Yaroslav Dynnikov, Mail.ru Group

    Each programming language has its own ecosystem, which is important for the well-being of the community. Application development is not only writing code, but also testing it, optimizing and sharing information with other people. There are many developers in the Tarantool project who work with Lua every day.

    During the talk, we will discuss various aspects of the development of Lua in the Tarantool team:

    • How convenient is it for developers to write linted code?
    • What tools do they use for debugging and testing?
    • How to successfully prepare documentation and collect packages?
    • And, just as importantly, what features do they still lack?


    15:00 - 15:45 “Shaders and Lua / Shaders and Lua”, Sergey Lerg, Spiral Code Studio

    It is not possible to write shaders in Lua, but you can control them using this language. The purpose of the report is to demonstrate how you can easily create stunning effects using GLSL and Lua. In addition, useful tips and advice on working with shaders on the Defold game engine will be given.


    15:45 - 16:15 Coffee break

    16:15 - 17:00 “Intro to dynasm from luajit / Introduction to dynasm from luajit”, Mikhail Filonenko, Mail.ru Group

    Dynasm is a machine code generator for several architectures (x86, x86_64, etc.).
    It consists of two parts:

    • machine code generator written in C
    • and assembler preprocessor on Lua.

    The original preprocessor only works with sources in assembler or C.
    In addition, there is a fork from luapower that can pre-process Lua files using assembler code generators.

    In some cases, it is necessary to use the logic from user input. We will look at this toolkit and create a simple s-expression compiler.
    The main question: "How convenient is it to create a compiler for user input."


    17:15 - 18:00 “Challenges of 'pairs' and 'next' JIT compilation / Compilation problems 'pairs' and 'next' in JIT", Maxim Bolshov, IPONWEB

    IPONWEB uses its own implementation of Lua. The project was forked from LuaJIT 2.0 with all limitations. In particular, the functions pairsand nextwere not supported by the compiler JIT. However, in our Lua codebase, this is in the top 3 reasons for interrupting trace compilation, which leads to forced tradeoffs between code style and application performance.

    The report plans:

    • to tell what it means to call a library function JITable;
    • explain the specifics of implementation pairsand nextin LuaJIT;
    • tell JIT restrictions that make compilation pairsand nextnon-trivial task;
    • demonstrate the progress of solving this problem.


    18:15 - 19:00 “Garbage collection in Lua”, Roberto Jerusalem, PUC-Rio

    Bonus report from Roberto.


    19:15 - 20:00 Round table with all speakers

    Seminars (cinema hall)



    14:00 - 15:45 “Tarantool use cases for rich applications / Tarantool use cases for multifunctional applications”, Vladimir Perepelitsa, Mail.ru Group

    At first glance, Tarantool is a database. And it’s quite difficult to see the full potential of this product as an application server.

    The seminar is designed to reveal this part of Tarantool’s capabilities: how to use the built-in LuaJIT server with sockets, fibers, channels, ffi, etc.? How to make code reload on the fly? These topics will be examined step by step on the example of building a queue server.


    16:15 - 18:15 “Making a simple platformer with Defold”, Sergey Lerg, Spiral Code Studio

    Platformers is a very popular game genre. Some of them are simple, others are quite complex. In the framework of the seminar, I will show how to create a basic platformer on the Defold game engine. The authors of most training materials on this topic tend to simplify everything and show the creation of levels manually, while they can be generated automatically, and also use a physics engine when it is completely unnecessary.


    The entrance is free.
    Registration is required.
    Address: office of Mail.ru Group, Leningradsky pr., 39, p. 79.

    We are waiting for you at Lua in Moscow 2019!

    Also popular now: