Yogurt
Tverd
Ну есть бенчи простого? Я сколько не видел скриптовых - они максимум на VM работают... а то и просто интерпретируемые
Snusmumriken
Не, ест pypy и node.js, которые имеют трассирующие компиляторы. Просто у них оверхед на это большой. Luajit сбалансирован.
Snusmumriken
Как работает jit:
https://youtu.be/9oVZObf2udU
Tverd
pypy и ноду я при всем желании не стал бы использовать в качестве скриптового языка внутри игры... тем более мобильной ))))))))))))
Tverd
Интерьвью очень вялое. Я бы не заинтересовался языком...
Tverd
А так конечно, когда уже умеешь - приятно ) И еще, чаще парня показывают, чем код на экране
Snusmumriken
Да, я ставил на паузу чтобы разглядеть : 3
Tverd
А я вот долго воротил нос от него, ибо синтаксис и не С и не питон, ближе к паскалю. Но по работе пришлось засесть ))) не сожалею ни капли
Tverd
В с++ давно не лазил... только С.
Tverd
а ты Nim видел? )
Tverd
Сюрпризом будет )))
Tverd
https://habrahabr.ru/post/258119/
Tverd
это не оффтоп, nim отлично дополняет lua
Мерль
Если кому-то хочется поизвращаться, попробуйте pony lang
Tverd
неа, ним транслируется в С
Tverd
Пооонятно )
Мерль
нет
Луа бежит внутри виртуальной машины
Tverd
Не, погоди... lua - это интерпретируемый язык, его интерпретатор написан на С. Он не компилируется, хотя можно егойный байткод сохранить в файл. Но это не С. luajit - это тот же луа интерпретатор, но с возможностью трансляции на этапе исполнения сразу в коды процессора... Nim - транслятор... язык переводится в исходный код на С, а там уже что хочешь с ним, то и делай ) как-то так
ㅤ
Мышление меняют языки
ㅤ
Sergey
Перл не курят, его либо шутят, либо кашу варют.
ㅤ
На нём ещё пишут
ㅤ
Tverd
Бывает, особенно под конец дня )))
Sergey
LuaJIT как Java разогревать надо? Или там попроще будет?
Tverd
Snusmumriken
tiny c compiler же
Tverd
а DynASM ему накой тогда?
Мерль
https://github.com/LuaJIT/LuaJIT/blob/master/src/lj_asm.c
Snusmumriken
А, TCC нужен для FFI, насколько я помню.
Мерль
Tverd
Ну вот определились, что бы не распространять дезу ))))
Мерль
Snusmumriken
Карочи, куски луашки транслируются в машинный код ))
Мерль
нет
Snusmumriken
Которые часто используются.
Мерль
Луа только на luajit транслируется в IR (промежуточное представление), над которым делаются агрессивные оптимизации (собсно, luajit и известен очень умным оптимизатором), после чего IR траснлируется в машинный код, после чего участок памяти, куда его записали, помечается как исполняемый
Мерль
Собсно всё
Snusmumriken
Но да, это только у jit.
Ванильная луашка работает примерно раза в полтора быстрее питона.
В love2d используется jit, так что ок.
Tverd
Вот! луаджита мне в короне и не хватает, окромя других ее грехов
Snusmumriken
Хех, кому самый предвзятый в мире бенчмарк на lua с jit и без jit? )))
Snusmumriken
Snusmumriken
А вот нормальный.
http://luajit.org/performance_x86.html
Но предупреждаю что он устарел.
С версией 2.1, некоторые штуки подскочили в скорости до x300.
Sergey
LuaJIT - самый джитистый джит.
Tverd
😆 это да, самый )))
Snusmumriken
Да не, это просто кусок магии который позволяет делать очень стрёмные штуки. Например, вытащить из оси произвольную библиотеку и заюзать в своих грязных целях. Или писать на C на Lua. Сварганить сахарный биндинг на что-нибудь, вместо того чтобы пилить dll/so-либу-прослойку. Ну там, нужен тебе SteamAPI.dll? Взял и заюзал, подключив к lua напрямую, инициализировав изнутри lua header-файл.
Tverd
Кстати, луаджит нормально работает на ios?
Snusmumriken
Ну, процы там - или x86(64) или ARM.
Да.
В чейнжлогах luajit можно углядеть "Улучшена совместимость с psVITA и xbox 360", ололо.
Tverd
Не, там был такой момент, что ios непозволял запускать код из того места, где изначально данные лежали... вот какая проблема была
Snusmumriken
Tverd
Может в x64 были проблемы... уже не помню, ну будем надеяться что и правда все ок
Snusmumriken
У меня сакральный вопрос: нужен ли кому ещё ios?
Потому что мои знакомые яблочники переходят на ведро в лице meizy/xiaomi.
Tverd
игроделам, не? )))))))))
Yogurt
Snusmumriken
Ну, просто в транспорте вижу яблочников с битыми пятыми/шестыми ойфонами и иногда старыми же macbook'ами.
Yogurt
У меня нет метро, но в маршрутках в к время вижу семерки
Snusmumriken
Я не просто серьёзно а очень серьёзно. И на работке тоже все подряд закупают xiaomy.
Tverd
Основная платящая масса - владельцы ios-ов ) Так что пусть будут ))))))))
Snusmumriken
Ну не скажи. Там пропорционально много купленных приложений, но вдоначивается в игровое баблишко примерно столько же. Сама аудитория шире. Да, в ней много нищебродов : 3
Tverd
))) вот! а вот под винду мобильную смысла делать не вижу, это да
Snusmumriken
Игроки не любят покупать приложения на телефон, особенно если учесть что часть приложений стоит >1к рубликов.
А вот вдоначивать в игровые бонусы, много раз но по копеечке - вдоначивают. Иногда сильно больше чем 1к рубликов.
Snusmumriken
А мобильная венда - да.
У мелких чудовищное отношение к разработчикам: чтобы писать на венде, нужно продаться в анальное рабство, и всё что ты напишешь будет принадлежать мелким. И мелкие будут великодушно отсыпать горсточку заработанного.
Вспоминаю эпоху windows mobile 2005/2006, когда можно было катать любую херню, и она работала. Хотя нормальных именно игр там было мало.
marroty
День добрый, уважаемые, а не подскажите маленькую библиотеку таймера для Lua? Задача-раз в секунду получать данные. Os.sleep мне как то не хочется использовать, а вот простой библиотеки что-то не нарыл. Так что если что - потыкайте носом :). Это, собственно, планируется телеграмм бот на лонг поллинге.
Snusmumriken
Хм.
function timer(func)
local time = os.time()
return function()
if os.time() ~= time then
time = os.time()
func()
end
end
end
updater = timer(receive_and_process_data_function)
while true do updater() end
Tverd
как-то не очень...
Snusmumriken
Ну щито поделать :3
В lua нет нормального sleep.
Разве что os.execute'ping 127.0.0.1'
Tverd
писать нормальный синглтон таймера
Snusmumriken
Это не синглтон же.
Можно сделать много таймеров.
marroty
Ну вот именно os.... мне бы и хотелось избежать...😄
Tverd
это понятно
Tverd
libev
marroty
Так я хочу возвести таймер, и по его истечении обратным вызовом вернуть curl, например
B
https://wiki.inspired-lua.org/timer.start
Snusmumriken
Если у тебя есть luajit - можно так:
local ffi = require("ffi")
ffi.cdef[[
void Sleep(int ms);
int poll(struct pollfd *fds, unsigned long nfds, int timeout);
]]
local sleep
if ffi.os == "Windows" then
function sleep(s)
ffi.C.Sleep(s*1000)
end
else
function sleep(s)
ffi.C.poll(nil, 0, s*1000)
end
end
sleep(0.01)
Snusmumriken
Tverd
вообще-то если человек использует слип, то где-то он не правильно думает