Как мы сообщали в предыдущем анонсе, 3 марта (воскресенье) в офисе Mail.ru Group пройдёт третья международная конференция Lua in Moscow 2019.
Конференция будет проходить в 2 потока: доклады и семинары.
Все доклады и семинары будут на английском языке без синхронного перевода.
Доклады (переговорная #1)
10:30 Начало регистрации
11:00 — 11:45 «Why (and why not) Lua / Почему именно Lua (а почему нет)», Роберто Иерусалимский, PUC-Rio
При создании языка программирования противоречия в требованиях часто толкают авторов на компромиссные решения. Это обычное явление в мире разработки. В разных языках к компромиссу приходят по-разному, что и делает каждый язык более подходящим для одних сценариев и менее привлекательным для других.
Для языка Lua есть свой набор целей, определяющий направление проектирования. Приоритет здесь отдается встраиваемости, малому размеру, простоте и портируемости. Есть и другие цели, такие как производительность и простота использования непрофессиональными программистами.
В рамках доклада мы обсудим влияние этого набора целей. Мы увидим, как эти цели влияют на сам язык, на его использование, а также на возможность его применения в различных областях.
12:00 — 12:45 «Tarantool team’s experience with Lua developer tools / Опыт работы команды Tarantool'а со средствами разработки на языке Lua», Ярослав Дынников, Mail.ru Group
У каждого языка программирования есть своя собственная экосистема, важная для благополучия сообщества. Разработка приложений — это не только написание кода, но и его тестирование, оптимизация и обмен информацией с другими людьми. В проекте Tarantool есть много разработчиков, которые каждый день работают с Lua.
В ходе доклада мы обсудим различные аспекты развития Lua в команде Tarantool:
- Как разработчикам удобно писать код с линтингом?
- Какие инструменты они используют для отладки и тестирования?
- Как успешно готовят документацию и собирают пакеты?
- И, что не менее важно, каких функций им пока не хватает?
13:00 — 14:00 Обед
14:00 — 14:45 «Processing FEA data with Lua / Обработка данных методом конечных элементов (FEA) с помощью Lua», Вадим Зборовский, ГНЦ РФ ТРИНИТИ
Программные пакеты для анализа методом конечных элементов (FEA) известны разнообразием и сложностью файлов данных. Файлы могут содержать сетку, постановку задачи, а также результаты моделирования. Серийные пред- и постпроцессоры предназначены для наиболее распространенных сценариев использования, и им иногда не хватает гибкости для решения определенных задач. В таких случаях на помощь приходит Lua.
Мы обсудим три реальные истории о моделировании ядерного топлива, когда Lua используется вместе с программным обеспечением по методу конечных элементов.
В первой истории описывается создание качественной сетки для расчета межузлового контакта двух тел. Вторая история посвящена связи коммерческого кода FEA с внутренним кодом для термомеханического анализа тепловыделяющего элемента. В третьем случае речь пойдет о подготовке входных файлов и преобразовании файлов результатов для свободного кода FEA CalculiX.
15:00 — 15:45 «Shaders and Lua / Шейдеры и Lua», Сергей Лерг, Spiral Code Studio
Невозможно писать шейдеры на Lua, но можно управлять ими с помощью этого языка. Цель доклада — продемонстрировать, как можно с легкостью создать потрясающие эффекты с помощью GLSL и Lua. Кроме того, будут даны полезные советы и рекомендации по работе с шейдерами на игровом движке Defold.
16:15 — 17:00 Кофе-брейк
17:00 — 17:45 «Intro to dynasm from luajit / Введение в dynasm из luajit», Михаил Филоненко, Mail.ru Group
Dynasm — это генератор машинного кода для нескольких архитектур (x86, x86_64 и т.д.).
Он состоит из двух частей:
- генератор машинного кода, написанный на C
- и препроцессор ассемблера на Lua.
Оригинальный препроцессор работает только с исходниками на ассемблере или С.
Кроме того, есть форк от luapower, который может предварительно обрабатывать файлы Lua с помощью генераторов ассемблер-кода.В некоторых случаях необходимо использовать логику из пользовательского ввода. Мы рассмотрим этот набор инструментов и создадим простой компилятор s-выражений.
Основной вопрос: «Насколько удобно создавать компилятор для пользовательского ввода».
18:00 — 18:45 «Challenges of ‘pairs’ and ‘next’ JIT compilation / Проблемы компиляции ‘pairs’ и ‘next’ в JIT», Максим Большов, IPONWEB
В IPONWEB используется собственная реализация Lua. Проект ответвили из LuaJIT 2.0 со всеми ограничениями. В частности, функции
pairs
иnext
не поддерживались компилятором JIT. Тем не менее, в нашей кодовой базе на Lua это входит в топ-3 причин прерывания компиляции трассировки, что приводит к вынужденным компромиссам между стилем кода и производительностью приложения.В докладе планируется:
- рассказать, что значит вызвать библиотечную функцию
JITable
;- объяснить специфику реализации
pairs
иnext
в LuaJIT;- рассказать об ограничениях JIT, которые делают компиляцию
pairs
иnext
нетривиальной задачей;- продемонстрировать ход решения этой задачи.
19:00 — 19:45 «resty-threadpool: reinventing Apache in nginx / resty-threadpool: новое прочтение Apache в nginx», Julien Desgats, CloudFlare
Асинхронные циклы событий — это проверенный способ масштабирования сетевых серверов. nginx (как и другие успешные продукты) в своей основе использует именно эту методику. Однако её производительность зависит от ключевого условия: бизнес-логика не должна отрабатываться слишком долго, иначе общая производительность быстро падает.
В Cloudflare в значительной степени полагаются на OpenResty (nginx + Lua + библиотеки) во всём, что касается пограничных серверов. При этом предсказуемая производительность имеет решающее значение. Для этого требуется выносить некоторые сложные части обработки из цикла обработки событий. Как правило, раньше это делалось путем написания микросервисов. В Cloudflare попробовали иной подход: использовать функцию пула потоков nginx. В докладе будет подробно рассказано о проблемах и результатах извлечения основных функций безопасности из цикла событий.
19:15 — 20:00 Круглый стол со всеми докладчиками
Семинары (кинозал)
14:00 — 15:45 «Tarantool use cases for rich applications / Варианты использования Tarantool'а для многофункциональных приложений», Владимир Перепелица, Mail.ru Group
На первый взгляд, Tarantool — это база данных. И довольно сложно увидеть весь потенциал этого продукта в качестве сервера приложений.
Семинар призван раскрыть эту часть возможностей Tarantool'а: как использовать встроенный сервер LuaJIT с сокетами, файберами, каналами, ffi и т.д.? Как сделать так, чтобы код можно было перезагружать на лету? Эти темы будут рассматриваться шаг за шагом на примере построения сервера очередей.
16:15 — 18:15 «Making a simple platformer with Defold / Создание простого платформера на Defold», Сергей Лерг, Spiral Code Studio
Платформеры — это очень популярный игровой жанр. Одни из них простые, другие довольно сложные. В рамках семинара я покажу, как создать базовый платформер на игровом движке Defold. Авторы большинства обучающих материалов по этой теме склонны всё упрощать и показывают создание уровней вручную, в то время как их можно генерировать автоматически, а также используют физический движок, когда это совершенно не нужно.
Вход бесплатный.
Регистрация обязательна.
Адрес: офис Mail.ru Group, Ленинградский пр., 39, стр. 79.
Ждём вас на Lua in Moscow 2019!
Автор: Елена Шебуняева