Anonymous
Это кроссплатформенность убивает
Snusmumriken
Поэтому свой сервер поднять — может оказаться эффективнее всего.
Anonymous
Потому что если на линуксе ещё хоть как-то можно сделать список обычных зависимостей типа make, gcc, whatever, то на винде компилировать чужой код это мазохизм обычно.
Snusmumriken
Собсно, луарокс сам по себе ничего не хранит, только ссылки на репы конкретных пакетов. И автоматом качает из репы/собирает на месте. Типа, такая кроссплатформа + всегда самые новые версии.
Wsevolod
Лучше: он раздаёт сорцы и инструкции к сборке.
К некоторым либам же пишется использовать кастомный сервер для стягивания — т.е. они можут раздавать уже .so?
Wsevolod
например lua-formatter
Snusmumriken
Ща чекну
Snusmumriken
К некоторым либам же пишется использовать кастомный сервер для стягивания — т.е. они можут раздавать уже .so?
Не, не оно. Возможно, получится держать бинари в репозитории, и ставить их луароксом через rockspec, но я пока не проверял.
Snusmumriken
Не, не оно. Возможно, получится держать бинари в репозитории, и ставить их луароксом через rockspec, но я пока не проверял.
Кстати, имхо неплохая затея, использовать гит как халявный файл-сервер. Просто сгружаешь бинари для разных версий в разных папочках и выдаёшь юзеру. Для закачки нужен только луасокет+луасек.
Snusmumriken
Покаж
Anonymous
Не, не оно. Возможно, получится держать бинари в репозитории, и ставить их луароксом через rockspec, но я пока не проверял.
Для этого всё равно придётся делать какой-то список blessed либ, не могу же я их все захостить. А так уже проще их встроить.
Snusmumriken
Ну ды, берёшь и делаешь список blessed-либ )) Встраивать — потребуется несколько мега/гигабайт.
Aydar
Покаж
https://luarocks.org/modules/iZarif/flvk/1.1-0 если ткнуть на ссылку "src" можно качнуть архив с сорцами (не с гита)
Anonymous
Ну ды, берёшь и делаешь список blessed-либ )) Встраивать — потребуется несколько мега/гигабайт.
Я надеюсь, у меня не такой здоровый список будет Я ещё посмотрю, сколько из этого нужно компилировать, а сколько pure lua
Anonymous
В основном я хочу парсер HTML и какое-нибудь расширение стандартной библиотеки (penlight?) чтобы самому split не реализовывать
Snusmumriken
Кста, вот для этого можешь заюзать 7z или аналог, оно всё неплохо сжимается. Типа, держишь архив с blessed-либами, по нужде разжимаешь.
Snusmumriken
А то и вовсе переопределяешь require на чтение потока из архива и loadstring/loadlib, не на всё сишное сработает, но на луашное — запросто.
Snusmumriken
(я так делал, было круто, архив ещё был зашифрован а require переопределён с сишной стороны с поролем на архив, гы)
Anonymous
А то и вовсе переопределяешь require на чтение потока из архива и loadstring/loadlib, не на всё сишное сработает, но на луашное — запросто.
Вот это самый интересный вариант, да Я в идеале хочу оставить всё одним бинарником — если смогу заставить lua читать просто строки из памяти вместо файлов, то встроенные либы смогу с собой таскать прямо в бинаре
Snusmumriken
По технологии rarjpeg, можно сшить исполняемый файл и архив.
Anonymous
По технологии rarjpeg, можно сшить исполняемый файл и архив.
Можно просто весь луашный код положить в .rodata, мне не сложно
Snusmumriken
Ух, сколько я трюков знаю-то, самому страшно становится
Snusmumriken
Чтобы не ломать логику require, кста, можно просто новый loader добавить, который будет грабить содержимое архивов http://lua-users.org/wiki/LuaModulesLoader
Snusmumriken
(и даже сделать его сетевым, динамически реквайря луашные либы с гитхаба, но потребуется тот же луасокет/луасек или хотя бы установленный курл, с вызовами через io.popen, в десятой венде он есть с 2019 года)
Anonymous
Чтобы не ломать логику require, кста, можно просто новый loader добавить, который будет грабить содержимое архивов http://lua-users.org/wiki/LuaModulesLoader
Вау. Тогда я могу написать просто лоадер, который будет прямиком из бинарника отдавать код модулей, спасибо. Осталось только понять, что делать с сишными.
Anonymous
Технически, я могу с ними слинковаться, и предоставлять свой собственный бинарь как бинарь библиотеки, наверное.
Snusmumriken
Или рядом плюхнуть, подгружая loadlib'ом или обычным require, благо сишных либ в идеале немного.
Snusmumriken
Или при том же require — проверять, есть ли эта либа в архиве сишных либ, и разархивируя рядом же.
Anonymous
Или рядом плюхнуть, подгружая loadlib'ом или обычным require, благо сишных либ в идеале немного.
У меня нет никакого особого «рядом» — один бинарник он и есть один бинарник
Anonymous
В идеале хочется всё в памяти проделывать
Snusmumriken
Оки, тогда народ как-то линкует сишное и пихает в package.preload, надо глянуть как.
Anonymous
Основная проблема это парсер HTML, потому что вряд ли он есть на чистом Lua
Snusmumriken
Есть https://github.com/msva/lua-htmlparser Но не особо быстрый в сравнении с сишкой
Snusmumriken
Его автор кстати тут сидит, привет @mva_name
Anonymous
Сурово А есть какие-то бенчмарки?
Anonymous
Я не то чтобы паршу гигабайтами HTML, в целом
Anonymous
Упс, LGPL
Snusmumriken
Я тестил со своим рабочим парсером который выдран из хромиума, и хромиумный быстрее раз в сорок (5.1 без jit), кажется, и почти нечувствительный к ошибкам в хтмл, сам фиксит косяки хтмлы.
Aydar
Оки, тогда народ как-то линкует сишное и пихает в package.preload, надо глянуть как.
Сишную либу статически линкуешь, таблицу луашного модуля добавляешь в таблицу _LOADED. Я так делал, правда примера не осталось но там несложно.
mva
Его автор кстати тут сидит, привет @mva_name
я не совсем автор. Я его "подхватил" когда оригинальный автор забросил :) Поэтому и лицензию обратно на MIT не могу сменить. Изначальный автор её намеренно с MIT'а сменил :)
mva
Упс, LGPL
а что не так с L GPL? :)
Aydar
а что не так с L GPL? :)
Линковать статически нельзя же
mva
> линковать статически > pure lua-код
mva
ну, такое
mva
ну и там есть исключение для иоси
Aydar
> линковать статически > pure lua-код
Ну там в лицензии вроде растяжимое понятие линковки, типа если луа код вшить в основную приложуху это тоже может быть линковкой (у юзера должна быть возможность самостоятельно заменять части приложения которые под lgpl)
mva
ну, я могу официально пообещать что лично я не буду преследовать тех, кто будет нарушать lgpl по отношению к либе
mva
за изначального автора не могу сказать 😃
Anonymous
а что не так с L GPL? :)
В концепции «один бинарь» мне не поможет то, что он L
Anonymous
И даже если бы я хотел лицензировать свой код под LGPL, я бы не смог, потому что это форк репы на Apache/MIT
Anonymous
Интересно, а «предоставить полный исходный код, инструкции по сборке и возможность замены в исходном коде» не считается за соблюдение условий лицензии?
Wsevolod
Кто каким форматтером пользуется?
Aydar
Кто каким форматтером пользуется?
Не пользовался но есть такой https://github.com/Koihik/LuaFormatter
Wsevolod
Не пользовался но есть такой https://github.com/Koihik/LuaFormatter
Не нахожу, как сделать, чтобы вызов функи форматился как func( arg1, arg2 ) вместо func(arg1, arg2)
Wsevolod
С табами сообще выходит за 80
Yaroslav
С табами сообще выходит за 80
А что за редактор, ide?
️ ️️
С табами сообще выходит за 80
ооо тоже конфиг на луа
Aydar
Aydar
Не нахожу, как сделать, чтобы вызов функи форматился как func( arg1, arg2 ) вместо func(arg1, arg2)
Там на странице список опций есть, я ж говорю сам не юзал. Может --chop-down-parameter сработает как надо?
Aydar
Да
Очевидно бага, поройся в ишьюсах. Но это лучшее из того что есть, остальные вообще конфигурировать нельзя.
Snusmumriken
Не нахожу, как сделать, чтобы вызов функи форматился как func( arg1, arg2 ) вместо func(arg1, arg2)
Это форматируется очень просто. function foo(args) local a = args.foo or 1 local b = args.bar or 2 return a + b end foo{ foo = 10, bar = 20 }
Wsevolod
Это форматируется очень просто. function foo(args) local a = args.foo or 1 local b = args.bar or 2 return a + b end foo{ foo = 10, bar = 20 }
Я же внешний тулинг / библиотеки использую, не могу сигнатуру менять
Wsevolod
Когда-то мб напишу форматтер, на условном megaparsec-е
Snusmumriken
Та мне всё время казалось, что аргументы функций в столбик — это какой-то жуткий костыль, резко снижающий читаемость.
Wsevolod
Зато декларация функции конфигурируется
Snusmumriken
(лично я прост вообще всё вручную формачу, или обычными регулярками по острой необходимости заформатить конкретный аспект, потому что ни один форматер не умеет вот так, а вид того что уже наформачено мной — портится)
Snusmumriken
Notepad++, я под вендами.
️ ️️
фуу, но ладно
Snusmumriken
Snusmumriken
У меня ещё WSL есть.
Luсky
лайт годный
Luсky
ничто не отвлекает от погромиоования