Любите ли вы Lua так же, как люблю его я? А вот ребята из компании IPONWEB настолько его полюбили, что даже сделали свою собственную имплементацию Lua! :) Об этом и пойдет речь в этом выпуске. У меня в гостях Антон Солдатов, инженер-программист из компании IPONWEB, где он занимается разработкой и поддержкой их реализации Lua.
В начале по традиции Антон рассказал немного про себя. По образованию он — лингвист, и в начале своей карьеры занимался обеспечением качества технических переводов. Поэтому мы пообщались и на эту тему. Антон рассказал, как происходит процесс перевода текста, какие этапы этого процесса можно и нужно автоматизировать и помогать переводчику делать меньше работы и более качественно.
Компания IPONWEB занимается разработкой в области RTB (Real Time Bidding) систем. Это технология закупки медийной рекламы посредством программируемых онлайн-аукционов. Вначале Антон рассказал про то, что это за системы, какие задачи они решают, какие есть компоненты и сущности в RTB-системах, что такое DSP и SSP, как они устроены и фукнционируют.
Далее Антон рассказал про их RTB-платформу, какие задачи она решает и унифицирует. Рассказал про архитектуру системы и где там нашлось место для Lua. Так же Антон рассказал про то, как развивалась платформа, чем не устраивал существующий на тот момент LuaJIT и как они пришли к тому, чтобы сделать свой форк LuaJIT и развивать его в дальнейшем своими силами.
В процессе беседы мы обсудили и существовавшие на тот момент проблемы LuaJIT, и какие фичи и новые возможности реализовали инженеры IPONWEB в своём форке, и то, как оригинальный проект LuaJIT развивался последние годы, что там есть сейчас нового и интересного. Ссылки на ресурсы по темам выпуска:
- Описание RTB на Википедии
- Еще немного wiki про RTB:
- Книга “Ad Serving Technology”, является отличным введением в индустрию, затрагивающим более широкий круг вопросов, чем собственно RTB.
- Доклад Антона «Challenges Building Yet Another Lua Implementation» с конференции Lua in Moscow
- Доклад Игоря Эрлих «LuaJIT как основа для сервера приложений – проблемы и решения» с Highload++’16
- LuaJIT:
- Описание байт-кода
- Описание промежуточного состояния (IR)
- У LuaJIT можно генерировать т.н. “дамп компилятора” – отладочную информацию о том, как происходит запись трасс, генерация машинного кода и т.д. Ключи командной строки для включения этого режима задокументированы тут: http://luajit.org/running.html, и есть утилита для того, чтобы облегчить визуальное восприятие получившихся данных: https://github.com/cloudflare/loom.
- Тестовая сюита для LuaJIT развивается тут: https://github.com/LuaJIT/LuaJIT-test-cleanup
- Совсем недавно появился RaptorJIT (https://github.com/raptorjit/raptorjit), форк от разработчиков Snabb (https://github.com/snabbco/snabb), если у разработчиков хватит времени на развитие, будет интересно
- Поскольку информации о продукте всё равно мало, то имеет смысл подписаться на список расслыки: http://luajit.org/list.html
- Lua:
- https://github.com/LewisJEllis/awesome-lua – A curated list of quality Lua packages and resources.
- http://www.luafaq.org/ – очень полный список вопросов о Lua
- Доклад Дмитрия Котельникова «Lua Pitfalls» с Lua Workshop 2014 (слайды, видео)
- Коммьюнити у Lua небольшое, но действительно активное. Ещё один список рассылки http://lua-users.org/lists/lua-l/
- Модуль lua-TestMore (https://fperrad.github.io/lua-TestMore/). Он примечателен тем, что поставляется с набором тестов для тестирования реализации языка.
- Ещё одна реализация Lua: https://github.com/dibyendumajumdar/ravi/
- Статья “Goodbye, Lua” о том, как и почему автор перестал использовать Lua
- Описание “Computer-assisted translation” на Википедии
Понравился выпуск? — Поддержи подкаст на patreon.com/KSDaemon а так же ретвитом, постом и просто рассказом друзьям!