Автор LuaJIT вернулся к разработке и планирует выпуск LuaJIT 3.0

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 1808
Зарегистрирован: 20.08.2022

#

Автор LuaJIT вернулся к разработке и планирует выпуск LuaJIT 3.0
Дата публикации:Sun, 28 Jun 2026 21:57:26 +0300

Майкл Полл (Mike Pall), создатель JIT-компилятора LuaJIT, отошедший от активной разработки проекта в 2015 году и ограничивавшийся с тех пор редким сопровождением ветки 2.1, вернулся к активной работе над проектом и опубликовал план синтаксических расширений будущей ветки LuaJIT 3.0.
Среди предлагаемых для LuaJIT 3.0 расширений:
  • Битовые операторы в виде встроенного синтаксиса вместо вызовов функций "bit.*": "~a" (NOT), "a & b" (AND), "a | b" (OR), "a ~ b" (XOR), "a << b`, "a >> b" (логический сдвиг) и "a ~>> b" (арифметический сдвиг). XOR обозначен как "~", поскольку символ "^" в Lua занят возведением в степень. Альтернативные ("привычные") операторы в стиле C/JavaScript: "!" (not), "&&" (and), "||" (or) и "!=" (~=). Оператор целочисленного деления "//" с округлением в сторону минус бесконечности и метаметодом "__idiv" (как в Lua 5.3+). Тернарный оператор "a ? b : c" с поддержкой сокращённого вычисления. Оператор безопасной навигации "?." ("a?.field", "a?.[key]", "f?.(...)", "obj?.:method(...)"), возвращающий "nil", если левый операнд равен "nil". Оператор объединения с nil "a ?? b", возвращающий "b", только если "a" равно "nil". Составные операторы присваивания: "+=", "-=", "*=", "/=", "//=", "%=", "&=", "|=", "~=", "<<=`, ">>=", "~>>=", "..=" и "??=". Индексное выражение в левой части вычисляется однократно. Оператор "continue" для перехода к следующей итерации цикла, оформленный как "мягкое" ключевое слово (можно продолжать использовать как имя переменной). Объявление "const" - блочная неизменяемая привязка локальной переменной; запрещены переприсваивание и повторное объявление в той же или вложенной области видимости (также "мягкое" ключевое слово).
В обсуждении дополнительно затрагиваются ещё не вошедшие в спецификацию идеи: выражение сопоставления с образцом через ключевое слово "in", индексируемый тип для vararg ("...varg", "varg"), краткий синтаксис лямбд ("|x| -> expr"), оператор отложенного выполнения "defer" в стиле Go/Zig и присваивание в условии ("if local x = ... then").
Появление расширений вызвало и критику: часть участников отметила, что нововведения окончательно превращают LuaJIT в отдельный язык, несовместимый с эталонным Lua 5.1. На это Полл ответил, что "этот корабль уплыл уже очень давно".
Документацию по языку планируется консолидировать в отдельное самостоятельное описание, в котором каждое расширение будет помечено версией, в которой оно появилось.

Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=65795

Жизнь за Нер'зула!

Ответить