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 должно быть, кстати
Snusmumriken
как это нету? есть: https://www.lua.org/manual/5.3/manual.html lua_newstate() гляньте :)
В ванильной - нету. Это - просто инициализация виртуальной машины. Попробуй туда ещё провесить пайпы и открытие потоков из самой Lua. Кстати, смотри на 5.1: https://www.lua.org/manual/5.1/manual.html#lua_newstate
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, как раз тогда брал себе малинку.
Snusmumriken
Хе-хе, да : ) Но оба - с jit-компиляцией. v8 имеет jit-компилятор, но не настолько БЫСТРЫЙ как у luajit.
Snusmumriken
У ffi ноды - несколько прослоек между ffi и ядром ЯП, которые чуть повышают комфорт но снижают скорость исполнения. Он будет медленнее в любом случае, ибо куча лишних переключений контекста и всё такое. Плюс сам JS не способствует внутренней простоте и скорости, такие дела.
Snusmumriken
Но это важно, в основном, для игрушек и всяких суровых штук типа БД/микроконтроллеров/highload, обычному скриптописателю не нужно, можно продолжать писать на JS.
Snusmumriken
Да, а ещё вышел LuaJIT 2.1.0-beta3.
Vsevolod
да, с gc64
Vsevolod
но вообще v8 вряд ли медленнее luajit
Snusmumriken
Можно провести бенчи : ) Будет домашним заданием.
Snusmumriken
Ну правильно, зачем Майку писать документацию, если с ней - ему перестанут давать деньги всякие циски/гуглы, которые решат что проще самостоятельно впилить ))
fgntfg
за отсутствие пробела просле require предлагаю шлёпать животом по попе
Vsevolod
вряд ли небольшие
Vsevolod
я бы не стал считать чужие деньги
Vsevolod
и особенно деньги Майка
Snusmumriken
Не надо тут обсуждать чей-то заработок, на конференции мейла, я слышал, мол "когда они попросили Майка сделать каку-то огромную фичу, он запросил 20к и пол года", и этого достаточно )) После этого, мейл-ру решил сам мутить свою виртуалку для тарантула и своих сервисов, вроде всё ещё мутят.
Snusmumriken
Это не важно. Тут товарищ хочет чтобы LuaJIT переписали под 5.3, и я сказал примерную сумму.
Snusmumriken
за отсутствие пробела просле require предлагаю шлёпать животом по попе
Это ты ещё не видел рекурсивных вызовов-перевызовов типа: send'192.168.1.1''8080''Wow!''content-type=text''cookie=10' А мне с таким иногда приходится работать : )
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
Впрочем, надо туда поставить 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.