Snusmumriken
Для многопоточности - Lanes.
Для json - lua-cjson или pure-lua-либы.
Для сети - Luasocket (https - Luasec).
Всё это есть на luarocks.
Vsevolod
а я json в lua читаю через ucl :)
Revertron
как это нету? есть:
https://www.lua.org/manual/5.3/manual.html
lua_newstate() гляньте :)
Snusmumriken
Для игрулек - CryEngine, Corona SDK и LOVE.
Чатик по LOVE - рядом: https://t.me/love2d_ru
Я там есть, и меня можно спрашивать.
Vsevolod
https://rspamd.com/doc/lua/ucl.html - даже в luarocks должно быть, кстати
Vsevolod
lua_newstate и в 5.1 можно создавать per thread
Vsevolod
сам интерпретатор lua, к счастью, thread safe
Snusmumriken
как это нету? есть:
https://www.lua.org/manual/5.3/manual.html
lua_newstate() гляньте :)
А ты попробуй сделать что-то такое в 5.3:
Thread = require'thread'
local audiothread = {}
audiothread.func = [[
require'love.sound'
require'love.audio'
require'love.timer'
local sound = love.audio.newSource('sound.ogg')
while true do
data = thread:pop() -- threads has access to special object
if data == 'play' then
sound:play()
thread:push('Yea!')
end
love.timer.sleep(.01)
end
]]
function audiothread.receive(msg)
print(msg)
end
-- name, thread function and set of callbacks {receive, finish}
music = Thread('Music', audiothread.func, {receive = audiothread.receive})
music:send('play')
while true do
music:update()
end
Вот так выглядит многопоточность из-Lua в Love2d: код треда подгружается как строка и отправляется на исполнение новому LuaState.
Но в 5.3 так не получится, там вместо многопоточности - корутины (такие же как в 5.1).
Snusmumriken
Lanes делает похожие вещи, но там частично выгребается байткод функций из текущей виртуальной машины, и пересаживается в другую.
(https://github.com/LuaLanes/lanes)
И оно, кстати, работает с Luajit, 5.1-5.3.
mihacooper [МСК -2]
Для многопоточности есть кое что получше
https://github.com/effil/effil
Snusmumriken
На ARM-процах не очень работает, помнится :<
С год назад компилил или это или что-то похожее для raspberry pi, тогда не зашло.
mihacooper [МСК -2]
точно не это) т.к. этому меньше года
mihacooper [МСК -2]
но на ARM может не зайти, да
Snusmumriken
Не, таки в начале 2017, как раз тогда брал себе малинку.
Dika
Snusmumriken
Хе-хе, да : )
Но оба - с jit-компиляцией.
v8 имеет jit-компилятор, но не настолько БЫСТРЫЙ как у luajit.
Dika
Snusmumriken
У ffi ноды - несколько прослоек между ffi и ядром ЯП, которые чуть повышают комфорт но снижают скорость исполнения. Он будет медленнее в любом случае, ибо куча лишних переключений контекста и всё такое.
Плюс сам JS не способствует внутренней простоте и скорости, такие дела.
Snusmumriken
Но это важно, в основном, для игрушек и всяких суровых штук типа БД/микроконтроллеров/highload, обычному скриптописателю не нужно, можно продолжать писать на JS.
Dika
Snusmumriken
Да, а ещё вышел LuaJIT 2.1.0-beta3.
Vsevolod
да, с gc64
Vsevolod
но вообще v8 вряд ли медленнее luajit
Snusmumriken
Можно провести бенчи : )
Будет домашним заданием.
Snusmumriken
Ну правильно, зачем Майку писать документацию, если с ней - ему перестанут давать деньги всякие циски/гуглы, которые решат что проще самостоятельно впилить ))
fgntfg
за отсутствие пробела просле require предлагаю шлёпать животом по попе
Vsevolod
вряд ли небольшие
Vsevolod
я бы не стал считать чужие деньги
Vsevolod
и особенно деньги Майка
Snusmumriken
Не надо тут обсуждать чей-то заработок, на конференции мейла, я слышал, мол "когда они попросили Майка сделать каку-то огромную фичу, он запросил 20к и пол года", и этого достаточно ))
После этого, мейл-ру решил сам мутить свою виртуалку для тарантула и своих сервисов, вроде всё ещё мутят.
Snusmumriken
Это не важно. Тут товарищ хочет чтобы LuaJIT переписали под 5.3, и я сказал примерную сумму.
fgntfg
fgntfg
Ставь пробелы, будь няшечкой
Snusmumriken
Как я тогда буду поддерживать ореол быдлокодера?
Может ещё предложишь вместо этого непонятно писать?
n = false
if #tostring(n) == 4 then
...
elseif #tostring(n) == 5 then
...
else
...
end
?
fgntfg
надо непонятнее.
_AMD_
if tostring(n)[1] == "t" then
_AMD_
Хотя нет, так проще
fgntfg
это условие можно добавить
fgntfg
чтоб наверняка
Snusmumriken
Тут нет взятия символа по индексу.
Придётся вырезать букву.
if tostring(n):sub(1, 1) == 't' then
fgntfg
Есть тут одна табличка с t и f в поле..
fgntfg
моё чувство прекрасного страдает от такого
_AMD_
Snusmumriken
Но можно добавить метатаблицами )))
debug.getmetatable('').__index = function (self, key)
if type(key) == 'number' then
return self:sub(key, key)
end
return string[key]
end
print(("qwerty")[2]) --> w
Snusmumriken
Snusmumriken
Ох уж эти метатаблицы.
Во, трестрочник:
debug.getmetatable('').__index = function (self, k)
return type(k) == 'number' and self:sub(k, k) or string[k]
end
Elias
debug.getmetatable('').__index = function (self, k) return type(k) == 'number' and self:sub(k, k) or string[key] end
Вот однострочник /s
Elias
:DD
Нужна команда для бота в чатике "/s", которая будет что-нибудь печатать
Snusmumriken
Например: "Не тыкай на всякую фигню"
Elias
😆
Elias
Команда /exitchat нужна
Вспоминаются все шутки про то, как людей в онлайн-играх троллируют, чтобы нажать Alt+F4
fgntfg
А я так и в чатах делал.
Snusmumriken
Команда /remove_all_i_wrote_at_last_month.
fgntfg
/remove_all_crap_i_wrote_drunk
Elias
/ban_me
Elias
/praise_roberto
Snusmumriken
/kill_everyone_I_know, но это уже следующее поколение ботов.
Вроде Т800.
Elias
/яхашуотписаццаатвашейгруппы
Snusmumriken
Только латиница, извини.
Elias
:CC
Elias
/test.test
(Интересно, а точки работают?)
Elias
Эх, нет
А то можно было бы делать вид, что ссылку кидаешь
fgntfg
/r/reddit
fgntfg
а так не робит
Elias
Я помню как-то на одном IRC канале не так ввёл команду логина и в итоге слил всем в чатик свой пароль. Теперь меня вечно напрягают команды, которые вводятся в чатик :DD
Group Butler [beta]
Hi Kirill!
Ilya
Ilya
Ilya
Собственно, в нем-то главная и трабла, что он как-то не так модули компилировал. Хотя хз, может надо просто попробовать еще раз - вдруг "оно само" заработает =))
Ilya
У меня винда и так крутится на виртуалке с линуксом, куда там Юникс еще %)))
Ilya
Впрочем, надо туда поставить Windows subsystem for Linux %)
Ilya
чисто по приколу
Snusmumriken
Ну и компилиться будет под линь.
Вендовая инструкция луарокса - гуглится без особых проблем, на самом деле.
https://github.com/luarocks/luarocks/wiki/installation-instructions-for-windows
Snusmumriken
Прописываем в пути всё что можно, ставим в конфиге - MINGW и вот нам либы.
Как вариант - можно качать уже готовые бинари, есть свалки вроде LuaForWindows.
Anonymous
щас бы винду юзать в 2к18
Anonymous
щас бы без виртуалок под обе ОС сидеть в 2к18
Snusmumriken
Щас бы быть подключённым к интернету в 2к18.
Щас бы не суициднуться ещё в 2к17.
Щас бы не щас бы в 2к18.
Anonymous