Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

28.06.2026 21:57 (MSK)

Майкл Полл (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. На это Полл ответил, что "этот корабль уплыл уже очень давно".

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

  1. Главная ссылка к новости (https://github.com/LuaJIT/LuaJ...)
  2. OpenNews: Доступен язык программирования Lua 5.5
  3. OpenNews: Lunatik - инструментарий для создания в ядре Linux обработчиков на языке Lua
  4. OpenNews: Открыт код Luau, варианта языка Lua с проверкой типов
  5. OpenNews: Компания Microsoft опубликовала реализацию Lua VM, написанную на языке Go
  6. OpenNews: Выпуск LuaJIT 2.0.3, JIT-компилятора для языка Lua
Автор новости: uriid1
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65795-lua
Ключевые слова: lua, luajit
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (19) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:26, 28/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Lua это плохо, JIT это плохо. А минус на минус как известно даёт двойной минус.
     
     
  • 2.15, 1 (??), 00:18, 29/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Минус на минус как известно дает плюс, как минимум в математике.
    Это конечно скорее всего не относится к LuaJIT, но тем не менее.
     

  • 1.2, Аноним (1), 23:28, 28/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто где применяет lua и зачем?
     
     
  • 2.4, anonismeshnie (?), 23:32, 28/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    OpenResty -> Kong -> Tarantool
    Vactor собирает логи, там тоже lua

    А сорсы пишу на NeoVim и там там тоже lua.

     
     
  • 3.5, anonismeshnie (?), 23:40, 28/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    *Vector
     
  • 3.7, Аноним (7), 23:51, 28/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    и зачем?
     
     
  • 4.12, Аноним (12), 00:03, 29/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Может затем, что нет зоопарка из ЯП-ов? Или из-за может дело в магии трасс жита, не знаю, знаю...
     
  • 2.9, devrdskc0t0d0s1 (-), 23:57, 28/06/2026 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Много кто, и много где. Достаточно поиском пройтись. Но конечно, этим заниматься грех, а то софта много найдётся. И в том числе, использующего X11.
     
     
  • 3.20, Аноним (20), 00:35, 29/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Поиск по заборам где что-то написано сомнительное занятие. Нужны реальные люди. Но даже в комментах только друг маминой подруги это где-то в роблоксе видел и даже юзал.
     
     
  • 4.23, Аноним (23), 00:42, 29/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Популярность != Качество
     

  • 1.3, Аноним (3), 23:30, 28/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Наконец, луажит конечно стрёмный, но намного полезнее обычного никчёмного луа. Только не подходит для недоверенного кода, угу.
     
     
  • 2.6, Hedgehog (??), 23:41, 28/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    https://luajit.org/faq.html
    > In general, the only promising approach is to sandbox Lua code at the process level and not the VM level.

    Landlock (https://landlock.io) повесить на все треды jit'ом и норм

     
  • 2.8, Аноним (8), 23:53, 28/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    а что подходит для недоверенного кода простите
     
     
  • 3.14, AkhIL (-), 00:18, 29/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > а что подходит для недоверенного кода простите

    Luau (Roblox), судя по описанию, проектировался для возможности запуска не доверенного пользовательского кода.

     
  • 2.10, Аноним (10), 23:58, 28/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Наконец, луажит конечно стрёмный, но намного полезнее обычного никчёмного луа.

    Чем полезнее-то?

    LuaJIT - это игрушечное поделие, которое несовместимо не только с современными версиями оригинального Lua, но и с предыдущими версиями самого себя. И вместо того, чтобы делать хоть какие-то поползновения в сторону совместимости, персонаж предпочитает наваливать тонны хлама типа "obj?.:method" и "a ~>> b".

    Как и NIM, это просто игрушка одного сумрачного гения, малопригодная для реальных проектов.

     
     
  • 3.13, Аноним (12), 00:06, 29/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > игрушка одного сумрачного гения, малопригодная для реальных проектов.

    Cloudflare, Kong, Tarantool, IPONWEB, Roblox, WireShark, Nmap и ещё куча всего "игрушечного".

     
     
  • 4.19, Аноним (-), 00:24, 29/06/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.21, Аноним (21), 00:36, 29/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У первой - самый глючный интернет, про остальные никто даже не слышал.
     
  • 4.22, Аноним (20), 00:36, 29/06/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру