Igor
Igor
https://github.com/ceifa/wasmoon
Luсky
Anonymous
Да
ну мне интересна производительность. именно Си ВМ.
Anonymous
Igor
Igor
берёшь, запускаешь на своей железке в wasm'e comparsion.js и смотришь результаты, потом делаешь тоже самое на стендалоне, выполняя heapsort.lua просто
anton
о/ а есть ли какой либо инструмент по поиску утечек в луа? (или как это называется, когда где-то лежит ссылка на объект, и сборщик не может его удалить)
anton
луа 5.2, не jit, работает внутри приложения на C++
Snusmumriken
А так — обычный дебаггер вроде того что в vs.
anton
anton
просто там много кода, написанного большим количеством людей
Sergei
Есть тут кто писать свои статические анализаторы lua или что-то делал на основе существующих?
R
Есть.
Sergei
Короче, таска вытащить всевозможные обращения к таблицам в коде. Например:
a = foo["bar"]
b = a["bar2"]
Хочу понять, что, вероятно, будет обращение к foo["bar"]["bar2"]
Очевидно, задача невозможная в общем случае, но я в поисках решения очевидных/частых кейсов (как пример)
Sergei
Поэтому ищу анализатор, который можно подхачить или мб самому аст обходить
R
Берёшь https://github.com/andremm/lua-parser , строишь ДАС, обходишь рекурсивно.
R
Минификатор пишешь?
Sergei
Не, это буквально и есть задача, дальше отвлеченные вещи с этим делаю
Sergei
Типа бойлерплейт для обработки скоупа переменных и т.д.
R
Можно поковырять LuaCheck, но там разобраться будет сложнее, чем своё написать.
Sergei
Эх, понял, спасибо
Hello, World! 🎄
Sergei
Нет, понять, какие ключи в каких таблицах могут дергаться
Hello, World! 🎄
Sergei
Да, это самый простой кейс
Hello, World! 🎄
Тебе нужно в функции через цикл и ipairs перебирать и функцию (если table['key'] not nil) вызывать снова, и передавать в функцию table['key'].
Ну и в другую таблицу записывать ключи.
Hello, World! 🎄
Через рекурсию перебираешь и записываешь ключи
jesus-2.6.tar.gz ☮︎
Давайте напишем brainfuck на lua, а потом на этом brainfuck напишем lua?
Hello, World! 🎄
Hello, World! 🎄
Я brainfuck на lua делал
jesus-2.6.tar.gz ☮︎
Hello, World! 🎄
У меня даже ide для bf есть, сам делал
jesus-2.6.tar.gz ☮︎
Hello, World! 🎄
BrainF*ck IDE
jesus-2.6.tar.gz ☮︎
Hello, World! 🎄
R
У меня на собесах стандартная задача: реализовать Форт на Луа.
jesus-2.6.tar.gz ☮︎
Hello, World! 🎄
mva
Hello, World! 🎄
Если с большого экрана смотреть, то все видно
mva
jesus-2.6.tar.gz ☮︎
Hello, World! 🎄
Hello, World! 🎄
Хватит уже смайликами из однокласников чат засорять
jesus-2.6.tar.gz ☮︎
Hello, World! 🎄
R
Snusmumriken
R
Какие мета, когда задача статическая, без запуска.
Sergei
Угу, задача статическая
Snusmumriken
А в чём разница в данном случае? )
Sergei
Snusmumriken
А у тебя нет тестов?
Sergei
Код может быть любым. Я, конечно, знаю, на каких примерах я буду запускать, но их слишком много
Highly Likely
Sergei
Да
Highly Likely
Highly Likely
Одним «строишь ДАС, обходишь рекурсивно» можно обойтись только для какого-то подозреваю узкого круга кейсов
Highly Likely
(Но это неточно)
R
R
Highly Likely
Highly Likely
Ну вообще, тут какой-то классический data-flow-analysis, кажется
Highly Likely
Это на уровне AST разруливается в довольно простых кейсах, когда явно известно, что правая сторона — таблица
Luсky