Highly Likely
Highly Likely
Highly Likely
Не помню конкретный корнер-кейс, но помню, что там придется объявлять функцию отдельно от определения
Alexey
Highly Likely
Alexey
function Foo:boo() return self:boo() end
Highly Likely
Alexey
проблема только с local foo = function() return foo() end
Ну и вариация с конструктором таблицы
Highly Likely
Andrey
Коллеги, помогите пожалуйста
:match('(%d%d\.%d%d\.%d%d%d%d)')
ругается на точку, как экранировать точку ?
Andrey
Consider removing backslash from escape sequence '\.'. - но если я уберу бэкслэш то он под точкой будет принимать любой символ а мне нужна именно точка
Snusmumriken
%.
Andrey
точно. и %d неверно
Snusmumriken
str:match'(%d%d%.%d%d%.%d%d%d%d)'
fgntfg
Snusmumriken
Хмм, обычно проблем не вызывает )
Leon174
Новость, пролетевшая в дефолдовской ветке. Прощайте, нелепые костыли! А Lua рискует подвинуться. Хотя причастным в PUC, похоже, пофиг.
https://luau-lang.org/2021/11/03/luau-goes-open-source.html
Александр
Александр
Roy
Roy
Таких проектов уже хватает
Roy
https://github.com/terralang/terra
Roy
Вот к примеру еще один
Александр
Таких проектов уже хватает
Только не каждый развивает это в коммерческой среде в течение десятка лет и пишет документацию
Roy
Roy
Убрать сборщик мусора оттуда и сделать чтоб все вручную аллоцировалось, сделать скриптам точку входа и можно юзать
Timur
Timur
очень неудачный синтаксис констант
R
Snusmumriken
Snusmumriken
Во-первых, нечего перекидывать луа на плюсы. Сишка многократно лучше портируется и стабильно функционирует. Потеряешь несколько десятков платформ и разрастёшь бинарь раз в тридцать. А ещё он начнёт требовать visual c++ пяти разных версий.
Во-вторых, у тебя уже есть десяток плюсовых интерфейсов, начиная с tolua заканчивая всякими SOL'ами.
В третьих, PUC-Lua имеет отличный, стандартизированный, превосходно комментированный сорц. Открываешь первый попавшийся файл и сразу понимаешь что тут происходит, настолько качественного кода ты мало где увидишь, тем более на сишке.
Александр
Snusmumriken
Нет, такие примеры на самом деле есть. Просто это делается дёрганьем из луа сишных функций: "дай кусок памяти", "запиши сюда вот это" и "освободи тут".
Snusmumriken
Snusmumriken
А отсутствие loadstring'а отпиливает использование шаблонов в бекенде, например что-то такое. А писать отдельный интерпретатор луа кода на луа — увольте ))
Отсутствие debug отпиливает в том же бекенде профилирование, отсутствие io — понятно что, в том же бекенде — ЛОГИ.
Так что считайте что это весьма узкий инструмент исключительно для встраивания в "заскриптуйте своё приложение, экспортируйте функции и дёргайте".
Leon174
Вот к примеру еще один
Terra нифига не аналог Luau по назначению. Системная, компилируемая, с ручным управлением памятью и прям совсем не встройка.
Leon174
А отсутствие loadstring'а отпиливает использование шаблонов в бекенде, например что-то такое. А писать отдельный интерпретатор луа кода на луа — увольте ))
Отсутствие debug отпиливает в том же бекенде профилирование, отсутствие io — понятно что, в том же бекенде — ЛОГИ.
Так что считайте что это весьма узкий инструмент исключительно для встраивания в "заскриптуйте своё приложение, экспортируйте функции и дёргайте".
Ага, как js получилось, по тем же соображениям. Может свою ноду запилит кто-нибудь. Глядишь, в геймдеве свой кусок откусит. Ничего лучше-то не предлагается. Ravi и Terra какие-то свои задачи решают, Teal (накормить, обнять и плакать) и прочие транспиляторы свои, кто-то лучше, кто-то хуже. Посмотрим, что дальше будет.
Alexey
не нашел под какие платформы они его собирали и бенчмарки с разных плфторм. я что-то упустил?
Alexey
больше всего интересует web, конечно, emscripten упоминается только раз и то в местах слабо связанных непосредственно с кодом
Snusmumriken
mva
Leon174
mva
mva
в Lua итак есть сандбоксинг
mva
setfenv ДЛЯ КОГО СУЩЕСТВУЕТ, А
Leon174
Вырезали они от души. Обоснования понятны, конечно, но да, standalone вариант отваливается. Если только Node.luau не появится.
Alexey
Но все равно интересно рассмотреть как альтернативный вариант т.к. выглядит ну очень интересно. Быть может попытаемся втянуть в движок как экстеншен или еще как-то, найти бы время на это.
Кстати, автор русскоязычный.
Tverd
Всем привет, кто-нить пробовал Luau? Интересует, можно ли запускать существующий код без переделок, производительность, такая же простая встраиваемость, в смысле ничего не изменилось в интерфейсах?
mva
1) нет,
2) нет,
3) нет,
4) удалена половина системных либ
mva
ну а смысл тогда в нём, если он соревнуется с LJ, если можно взять сразу LJ?
mva
они просто переизобрели setfenv
Tverd
в общем спасибо за инфу, не буду дергаться
mva
mva
но даже 5.3 фичи в LJ уже завезли, емнип. И даже не в последние месяцы.
Tverd
Тут такой момент, лично мне нужна обработка __newindex если даже есть в таблице такой ключ. Насколько я помню в 5.3 или 5.4 такое сделали
Tverd
понятно дело это можно сделать и на 5.1 функциями, но если __index ссылается на таблицу, это должно работать быстрее. Кстати можно проверить тестами...
Daniil
mva
mva
ну, пр айфоны - не надо
mva
я знаю про W^X там
mva
а про веб - таки расшифруй
Daniil
Ну, честно если, я плотно вот сейчас не изучал вопрос, но, например для движка Defold (луашная тема), луаджит поддерживается на всём, кроме айфонов и HTML5.
Ну и остаточная инфа какая-то осталась, когда в своём двигле ещё LJ ковырял, что далеко не везде его получается прикрутить.
Alexey
на ios luajit можно собрать и работает как интерпритатор байткода, быстрее чем чистая луа
а вот в вэб только 5.1 (причин не знаю)
mva
mva
если да, тогда да, lj там нет
mva
а вот на веб-серверах lua есть и сайты (бекенд-часть) вполне прекрасно пишутся с оглядкой на то, что интерпретатор - luajit
Alexey
собрать используя emscripten
mva
а lj внутри js нет по той же причине
mva
W^X
Alexey
нет, фронтенд. именно работа в браузере.
наш движок использует Lua как язык для программирования логики и работает на всех платформах, в том числе web (html5)
mva
W^X
для ленивых: означает жёсткий запрет страницам памяти быть одновременно записываемыми из запущенного процесса и исполняемыми
mva
т.е. jit работать не может
mva
а не-jit нету потому что никто не портировал
mva
потому что там не просто ассемблер, а специальное изобретение Майка, Динамический Ассемблер
mva
компилятор которого тоже надо портировать
mva
в общем, вопрос количества вложенного бабла