Snusmumriken
Попробуй написать несколько драйверов устройств без линуха )))
Хотя прекол как раз в компиляции в машинный код.
В скомпилированном виде, сишные бинарники = машинный код.
С другой стороны, некоторые вещи можно оптимизировать на асме.
Ну там, ты часто работаешь с 2^(x)? Напиши на асме макрос сдвигающий биты, подставляющийся при умножении/делении на два. Сама по себе сишка - суть набор макросов над асмом.
Alexander
ну да, именно так для меня Си и выглядит, я когда пишу, понимаю, в какие примерно инструкции это будет переводиться, и надеюсь на то,что современный компилятор сам умеет делать оптимизацию битовых операций
Tverd
Кстати, в NetBSD дрова можно на луа писать, старая новость )
Snusmumriken
Я писал дрова для raspberry pi на питоне. Это не совсем драйвер, правда, а больше служба, но мне так проще называть адаптер между другим приложением и железом, который параллельно выполняет кусочек своей работы.
Это, правда, было нужно чтобы подключить хитрую штуку wiringpi, которая позволяет перевести одну из ног малины в режим шиммирования. Это недокументировано, но использовать вместо этого аудио-канал что-то не хотелось.
Tverd
Интересно, еще не ковырял распберри для такого, шлюзом только делал
Alexander
я с распберри не возился, но с iMX6 работаю уже третий год
Tverd
и как он? быстрый?
Alexander
ну как. два параллельных потока FullHD видео обрабатывает без напрягов
Snusmumriken
Cortex-A(7/9), версия quad примерно как малинка.
Хардверное декодирование кодеков, поэтому fullHD аппаратно ускорено.
Snusmumriken
Стоит, правда, дохрена. В три раза дороже малинки. И большая.
Но зато куча интерфейсов, вроде PCI-E, который даёт SSD-жёсткие диски и сетевые платы.
Alexander
ну типа того, да
Tverd
Ага, понятно, значит пока малины хватит, раз дороже
Snusmumriken
Ох, там такие милые описания :)
> 3d graphics with ONE shader!
> Enhanced 3d graphics with FOUR shaders!
Ехехе.
Alexander
собственно к VPU прилагаетсяфирмварь, и если ты хочешь собрать свой собственный стример, то тебе надо эту фирмварь загружать. для gstreamer есть готовый враппер, но под 0.10 вроде.
надо будет глянуть, сделали ли уже для 1.0
Snusmumriken
Малина умеет в шейдеры с кастомными opengl-драйверами.
Включается в raspi-config (стандартная штука, включающая кучку фич типа разгона/кастомных штук)
Tverd
Парни, а кто-нить на луа видел/делал качетственную генерацию мира? Суша, океан, биомы, реки?
fgntfg
fgntfg
возможно там был JS.
Tverd
js не страшно, можно переписать. А где видел?
fgntfg
Я вот посмотрел в своем бложике, найти не могу. Где-то.
fgntfg
http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/
fgntfg
Вот эта статья. Там ссылки на примеры и код, кажется, были.
Tverd
Ага, спасибо, такая есть и перевод уже на хабре есть
Yogurt
Yogurt
А это именно асм или как?
Snusmumriken
Асм, асм
Alexander
Приват я только за 3-ю взялся 😁
vvzvlad
я в тупике. собрал библиотеку https://github.com/edartuz/lua-serial
но не понимаю, как ей пользоваться.
> io.Serial = require'_ul_serial'
> ports = io.Serial:getPorts()
stdin:1: attempt to call method 'getPorts' (a nil value)
stack traceback:
stdin:1: in main chunk
[C]: ?
vvzvlad
или посоветуйте библиотеку для serial, только не luars232 — там нет available()
vvzvlad
разобрался. для тех, кто не оставляет примеров и игнориует стандартные методы загрузки библиотек, существует отдельный котел в аду. надо было сделать require 'ul_serial'(не .so модуль, а lua-шный файлик рядом), а потом обращаться не к ul_serial, а к io.Serial.
Sergey
Много из чата на конфе в Mail.ru?
Yogurt
Много на конфе мейлру из чата?
🦥Alex Fails
Хз, я тольео проснулся
ㅤ
Сложно распознать, они не подписаны.
Tverd
Не в курсе, видео будет с конфы?
ㅤ
Снимают.
ㅤ
lua.moscow
Трансляция.
Tverd
Благодарствую!
ㅤ
В общем, "luajit is dead, let's face it".
Alexander
ㅤ
Не развивается, ограничение на максимум 1 гигабайт памяти не фиксится, совместимость с версиями 5.2 и 5.3 разработчику не нужна, да и выйти с ним на контакт — тот ещё квест.
ㅤ
В общем, всё печально.
ㅤ
Нет, вроде.
Я не развожу панику, просто написал одну из высказанных там неоднократно мыслей.
Alexander
Alejandro Jeditobe
ㅤ
На прошедшем митапе.
Alexander
дайте мне миксер в глаза
ㅤ
Одна компания таки форкнула (второй доклад, Challenges Building Yet Another Lua Implementation), но пилит под себя, а руководство выкладывать форк пока не стремится.
ㅤ
Где-то есть. Сейчас видео с трансляции недоступно.
ㅤ
Роберто начал над версией 5.4 работать пару недель назад. Новый сборщик мусора планируется.
Alexander
а в луа возможно что-то принципиально новое добавить?
Tverd
А есть то, что будет в 5.4. еще? какой-нить милестоун?
Alexander
я имею в виду качественные возможности типа структурного goto из 5.2
ㅤ
Не буду врать, не запомнил. Вроде, ничего ломающего.
Sergey
Новых фич не будет скорее всего
Alexander
Sergey
Мажорной версии может вообще не быть уже.
Sergey
В 5.4 будет модифицированный сборщик мусора.
vvzvlad
Delay бы добавили
Alexander
а, мне не актуально, я под линух пишу, а там select есть
Sergey
Delay в либах есть
Snusmumriken
Delay не нужен (кроме delay в бесконечных циклах на 0.001с), потому что если у тебя есть delay - значит ты что-то делаешь неправильно.
Или ты пишешь на микроконтроллеры и экономишь батарейку / микруху от износа.
Плюс если ты используешь lua по назначению (как встраиваемое приложение) - у тебя уже есть любой delay по вкусу из сишки. Или если ты используешь luajit - тоже есть delay, но уже изнутри luajit.
Tverd
В теории, только на Ардуине и более простых нет претываний по таймеру, если я ничего не путаю. Вот там все работает типа while true -> ...
Tverd
Отсюда и delay или sleep.
Anonymous
Видео с митапа тут http://lua.moscow/conf/2017/ru/index.html
Tverd
Отлично, спасибо!
Snusmumriken
Отсюда и delay или sleep.
Любая асинхронщина работает на event loop, где мы бесконечным циклом проверяем поступление новых событий и выполняем соответствующие колбеки. Тут действительно нужен слип, чтобы приложуля не жрала 100% проца на ожидании новых событий.
Но есть много вариантов получить крошечный слип (в зависимости от оси), и оформить это маленькой милойи функцией.
Tverd
Ну тут слип с ожиданием все таки... То есть если поступает сигнал - все просыпается. Ну или ничего не пришло - что-то делаем и опять в ожидание.
Tverd
плохой слип ))))
Tverd
Я ставлю слип на секунду, а все просыпается через 1.5? )))
Alexander
Не, никаких ожиданий.
Сигналы есть в линуксах, и они там работают довольно специфично (не разбирался точно). Кстати, слип никогда не равен точному времени, сколько ты слипаешь, потому что ось переключает процессор между тучей приложений, ждёт пока в приложении не вызовут слип и переключается на следующее, в зависимости от приоритетов и среднего времени цикла приложения. На самом деле, механизм еще чуть более сложный, чтобы пользовательские приложения не вешали систему полностью.
увы, у луа есть проблемы с сигналами. я пробовал и отступился, ибо можно было иначе, без сигналов решить.
Anonymous
А кто-нибудь из присутствующих имел дело с Lua в NodeMCU?
Snusmumriken
Я, но немного.
Обычная луа, только с либой gpio.
Можно извратиться и подключить флешку с кодом, увеличивая размер программы до бесконечности, подгружая и удаляя модули из оперативки.
Anonymous
Мне вот интересно, 0.9мс на один опрос gpio-ноги это потому что реализация Lua хреновая или потому что контроллер такой слабый?
Anonymous
Да там и штатной памяти на 1-4 Мб за глаза хватает.
Snusmumriken
Anonymous
Ага, только, наверное, gpio.read.
Anonymous
С записью в порт то же самое, кстати.