Язык программирования luau это язык для роблокса Luau Luau — это быстрый, компактный, безопасный встраиваемый язык программирования с постепенной типизацией, созданный на основе Lua. Полная переработка? Постоянная ссылка Очень большая часть кодовой базы Luau написана с нуля. Нам нужен был набор инструментов для написания средств анализа языка. В Lua есть парсер, интегрированный с компилятором байт-кода, что делает его непригодным для сложного семантического анализа. Что касается компиляции байт-кода, то однопроходный компилятор может обеспечить более высокую скорость компиляции и быть проще, чем полноценный фронтенд/бэкенд, но он значительно ограничивает возможности оптимизации на уровне байт-кода. Таким образом, компилятор Luau и инструменты анализа написаны с нуля и полностью соответствуют синтаксису и семантике Lua. Наш компилятор не является однопроходным. Вместо этого он использует набор проходов анализа, которые выполняются над абстрактным синтаксическим деревом для создания эффективного байт-кода, а затем выполняется некоторая постобработка для оптимизации. Что касается среды выполнения, нам пришлось переписать интерпретатор с нуля, чтобы значительно повысить производительность. Используя комбинацию методов, впервые применённых в LuaJIT, и собственные оптимизации, которые позволяют повысить производительность за счёт контроля над всем стеком (языком, компилятором, интерпретатором, виртуальной машиной), мы смогли приблизиться к производительности интерпретатора LuaJIT, используя C в качестве языка реализации. Сборщик мусора и основные библиотеки претерпели лишь незначительные изменения. Мы использовали Lua 5.1 в качестве основы, но продолжаем переписывать их с учётом требований к производительности. Изначально в Luau не было JIT/AOT, но с тех пор для платформы x64/arm64 была реализована генерация нативного кода в качестве дополнительного компонента.
6 месяцев назад