Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

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

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 2007
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 59 раз
Поблагодарили: 28 раз

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

Сообщение root:# »

Автор LuaJIT вернулся к разработке и планирует выпуск LuaJIT 3.0
Майкл Полл (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. На это Полл ответил, что "этот корабль уплыл уже очень давно". Документацию по языку планируется консолидировать в отдельное самостоятельное описание, в котором каждое расширение будет помечено версией, в которой оно появилось.
Источник: https://www.opennet.ru/opennews/art.shtml?num=65795