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

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6000
ОС: gnu/linux

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

Сообщение rssbot »

Майк Полл (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[i]"), краткий синтаксис лямбд ("|x| -> expr"), оператор отложенного выполнения "defer" в стиле Go/Zig и присваивание в условии ("if local x = ... then").


Появление расширений вызвало и критику: часть участников отметила, что нововведения окончательно превращают LuaJIT в отдельный язык, несовместимый с эталонным Lua 5.1. На это Полл ответил, что "этот корабль уплыл уже очень давно".


Документацию по языку планируется консолидировать в отдельное самостоятельное описание, в котором каждое расширение будет помечено версией, в которой оно появилось.




Источник: https://www.opennet.ru/opennews/art.shtml?num=65795
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 29.06.2026 11:12, всего редактировалось 1 раз.
Причина: Updated upstream
Спасибо сказали: