Hacker News Digest

Тег: #luau

Постов: 2

The evolution of Lua, continued [pdf] (lua.org) 💬 Длинная дискуссия

Созданный в 1993 году в Бразилии, Lua стал одним из ведущих скриптовых языков, особенно в разработке игр. С 2007 года язык эволюционировал через серию Lua 5, добавив современные функции: сопрограммы для многопоточности, полную лексическую область видимости и метатаблицы для расширяемой семантики. Важные изменения включают введение целочисленного типа, улучшение сборки мусора с детерминированной финализацией и эволюцию глобальных переменных.

Lua сохраняет лёгкость и встраиваемость, будучи компактной C-библиотекой, что позволяет легко интегрировать его в хост-программы. Версии Lua 5.x несовместимы на уровне ABI, требуя перекомпиляции для встраивания, но сохраняют стабильность в рамках одной версии. Социальным маркером стало широкое принятие либеральной лицензии MIT и влияние LuaJIT, который продлил жизнь версии 5.1. Практический вывод: баланс между инновациями и стабильностью ключевой для долголетия языка.

by welovebunnies • 07 октября 2025 г. в 12:54 • 213 points

ОригиналHN

#lua#luajit#mit-license#coroutines#metatables#fengari#nelua#luau#neovim#roblox

Комментарии (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 (luau.org)

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.

by andsoitis • 18 сентября 2025 г. в 13:38 • 166 points

ОригиналHN

#luau#lua#roblox#typescript#sandbox#jit#performance#linting#type-checking

Комментарии (74)

  • Переход на Luau обусловлен системой типов, но язык имеет шероховатости и слабую документацию, а сообщество практически отсутствует.
  • Luau значительно сложнее и объёмнее стандартного Lua, что связано с реализацией системы типов и дополнительных возможностей.
  • Существуют альтернативные реализации и среды выполнения Luau, такие как Lune, предназначенные для использования вне Roblox.
  • Сообщество отмечает проблемы обратной совместимости между различными форками Lua (LuaJIT, Luau, PUC Lua), что создаёт фрагментацию.
  • Luau сравнивают с Teal, но они fundamentally разные: Teal — это транспилятор, а Luau — полноценный форк Lua с собственной средой выполнения.
  • Разработчики Roblox работают над улучшением поддержки Luau вне своей платформы, включая создание standalone-рантаймов.
  • Несмотря на критику, инженерные решения в Luau, особенно в области производительности, оцениваются как впечатляющие.