The evolution of Lua, continued [pdf] 💬 Длинная дискуссия
Созданный в 1993 году в Бразилии, Lua стал одним из ведущих скриптовых языков, особенно в разработке игр. С 2007 года язык эволюционировал через серию Lua 5, добавив современные функции: сопрограммы для многопоточности, полную лексическую область видимости и метатаблицы для расширяемой семантики. Важные изменения включают введение целочисленного типа, улучшение сборки мусора с детерминированной финализацией и эволюцию глобальных переменных.
Lua сохраняет лёгкость и встраиваемость, будучи компактной C-библиотекой, что позволяет легко интегрировать его в хост-программы. Версии Lua 5.x несовместимы на уровне ABI, требуя перекомпиляции для встраивания, но сохраняют стабильность в рамках одной версии. Социальным маркером стало широкое принятие либеральной лицензии MIT и влияние LuaJIT, который продлил жизнь версии 5.1. Практический вывод: баланс между инновациями и стабильностью ключевой для долголетия языка.
Комментарии (161)
- Обсуждаются преимущества Lua как легкого, быстрого и удобного для встраивания языка, особенно в сравнении с JavaScript и Python.
- Упоминаются проекты для запуска Lua в браузере (например, Fengari, Nelua) и проблемы взаимодействия с DOM.
- Затрагивается история развития языков программирования в 90-х годах и место Lua среди них.
- Обсуждаются особенности Lua, такие как 1-индексация, отсутствие
continue, метатаблицы, а также новые версии (Lua 5.5, Luau). - Участники делятся ресурсами для изучения Lua и областями его применения (игры, Neovim, Roblox, скриптование в C++).
Luau – Fast, small, safe, gradually typed scripting language derived from Lua
Lua_u_
Lua_u_ (строчная u, /ˈlu.aʊ/) — это быстрый, компактный, безопасный, постепенно типизированный встраиваемый язык сценариев, основанный на Lua.
Мотивация
Примерно в 2006 году Roblox начал использовать Lua 5.1 в качестве языка сценариев для игр. Со временем мы значительно развили реализацию и язык: для поддержки растущей сложности игр на платформе Roblox, увеличения размеров команд и написания большого объёма кода (более 1 млн строк к 2020 году) нам пришлось инвестировать в производительность, удобство использования, инструменты языка и ввести постепенную систему типов. Подробнее…
Песочница
Luau ограничивает набор стандартных библиотек, доступных пользователям, и реализует дополнительные функции песочницы для возможности запуска непривилегированного кода (написанного разработчиками игр) вместе с привилегированным кодом (нашим). Это создаёт среду выполнения, отличающуюся от традиционной для Lua. Подробнее…
Совместимость
По возможности Luau стремится быть обратно совместимым с Lua 5.1 и одновременно включает функции из более поздних версий Lua. Однако Luau не является полным надмножеством более поздних версий Lua — мы не всегда согласны с решениями Lua и имеем другие варианты использования и ограничения. Все функции Lua после 5.1, а также их статус поддержки в Luau, документированы здесь.
Синтаксис
Luau синтаксически обратно совместим с Lua 5.1 (код, действительный для Lua 5.1, также действителен для Luau); однако мы расширили язык набором синтаксических функций, делающих его более привычным и эргономичным. Синтаксис описан здесь.
Анализ
Для упрощения написания корректного кода Luau включает набор инструментов анализа, которые могут выявлять распространённые ошибки. Они состоят из линтера и проверки типов, интегрированных в исполняемый файл командной строки luau-analyze. Проверки линтера описаны здесь, а руководство по проверке типов можно найти здесь.
Производительность
В дополнение к полностью кастомному фронтенду, реализующему парсинг, линтинг и проверку типов, среда выполнения Luau включает новый байткод, интерпретатор и компилятор, сильно оптимизированные для производительности. Интерпретатор Luau может конкурировать с интерпретатором LuaJIT в зависимости от программы. Также доступен опциональный компонент для ручной JIT-компиляции на платформах x64 и arm64, который может значительно ускорить определённые программы. Мы продолжаем оптимизировать среду выполнения и переписывать её части для ещё большей эффективности. Хотя наша общая цель — минимизировать время, которое программисты тратят на настройку производительности, некоторые детали о характеристиках производительности предоставлены для любознательных.
Библиотеки
Как язык Luau является полным надмножеством Lua 5.1. Что касается стандартной библиотеки, некоторые функции пришлось удалить из встроенных библиотек, а некоторые — добавить; обратитесь к полной документации для подробностей. Когда Luau встраивается в приложение, сценарии обычно получают доступ к дополнительным функциям библиотек, специфичным для приложения.
© 2025 Roblox.
Комментарии (74)
- Переход на Luau обусловлен системой типов, но язык имеет шероховатости и слабую документацию, а сообщество практически отсутствует.
- Luau значительно сложнее и объёмнее стандартного Lua, что связано с реализацией системы типов и дополнительных возможностей.
- Существуют альтернативные реализации и среды выполнения Luau, такие как Lune, предназначенные для использования вне Roblox.
- Сообщество отмечает проблемы обратной совместимости между различными форками Lua (LuaJIT, Luau, PUC Lua), что создаёт фрагментацию.
- Luau сравнивают с Teal, но они fundamentally разные: Teal — это транспилятор, а Luau — полноценный форк Lua с собственной средой выполнения.
- Разработчики Roblox работают над улучшением поддержки Luau вне своей платформы, включая создание standalone-рантаймов.
- Несмотря на критику, инженерные решения в Luau, особенно в области производительности, оцениваются как впечатляющие.
How do I get into the game industry
Краткий путь в геймдев
-
Делай игры.
Не жди вакансий — пили прототипы, моды, демо. Любой код, который запускается, уже плюс в карму. -
Показывай.
Заливай на GitHub, пиши посты, записывай гифки. HR ищут не диплом, а живые примеры. -
Учись у сообщества.
Discord, Reddit, форумы. Задавай вопросы, ревьюь чужой код, участвуй в джемах. -
Специализируйся.
Выбери узкое: AI, рендер, сетевой код. Глубина ценится выше широты. -
Отправляйся в инди.
Маленькие студии берут джунов без опыта, если видят портфолио. Зарплата ниже, но опыт растёт быстро. -
Не сдавайся.
Отказов будет много. Каждый «нет» — шанс улучшить портфолио и попробовать снова.
Формула: игра в релизе > тестовое задание > резюме.
Комментарии (137)
- Войти в индустрию сейчас проще технически, но сложнее выделиться: рынок переполнен, зарплаты и студии сокращаются, особенно в США.
- Работодатели требуют показать небольшие законченные проекты (от «Виселицы» до «Тетриса») и подтвердить навыки онлайн-вниманием.
- Специализация в дефицитных нишах (физика, рендер, движки) повышает шансы, как и платформы вроде Roblox с готовой аудиторией.
- Корпоративная разработка игр требует «рабского» ритма; многие советуют остаться инди или вообще не лезть в AAA.
- ИИ и «holodeck-генераторы» пока вызывают споры: кто-то видит конец профессии, кто-то — лишь новый инструмент.
Librebox: An open source, Roblox-compatible game engine
Librebox-demo — репозиторий движка Librebox: открытой альтернативы Roblox.
Цель — совместимость с Roblox-играми и инструментами, но без проприетарных ограничений.
Ключевое
- Язык: C++ + Lua
- Лицензия: MIT
- Статус: ранняя альфа
- Сборка: CMake + vcpkg
Быстрый старт
git clone https://github.com/librebox-devs/librebox-demo.git
cd librebox-demo
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/librebox
Функции
- Загрузка
.rbxlи.rbxm - Базовый рендер OpenGL/Vulkan
- Серверный режим headless
Планы
- Поддержка плагинов
- Web-клиент
- Мобильные порты
PR и issue приветствуются.
Комментарии (66)
- Librebox — это пока демо с очень ограниченным подмножеством API Roblox; серверов и сети нет.
- Пользователи надеются на Linux-клиент и сохранение творений Roblox, но опасаются юридических проблем.
- GitHub и Discord проекта выглядят странно: разработчики скрыты, активности мало, но код реально пишется.
- Некоторые считают, что такие проекты важнее для Roblox, чем борьба с хищниками на платформе.
- Есть предложения переименовать в OpenBox из-за лицензии MIT, но другие напоминают, что MIT — это тоже «свободно».