LINUX.ORG.RU

«Ржавая» IP-камера: прошивка на Rust

 , , ,


2

9

Всем привет.

Мы в Эрливидео решили сделать эксперимент и написать прошивку камеры на Rust. В принципе проект своей прошивки у меня в полудохлом состоянии уже года три как, но его не развивали.

Тут я восхитился идеями раста и решил сделать эксперимент, написав стример на расте.

Детали есть в посте на хабре: https://habrahabr.ru/company/erlyvideo/blog/334912/ тут продублирую суть.

Вокруг сишного SDK с помощью bindgen нагенерен код на Rust, который в unsafe настраивает железо, потом получает оттуда видео кадры. Дальше начинается нормальный Rust, который полученное видео упаковывает в транспортный контейнер и рассылает клиентам через tokio.

Результаты пока радуют: ни единого сегфолта и софт не виснет на 3 подключенных клиентах.

Если интересно, могу дальше рассказывать, как у нас происходит ржавый эксперимент.

Ответ на: комментарий от RazrFalcon

Как альфа?

это можете пояснит, я немного не понял.

Его в расте и быть не может. Разве что паника.

да, но учитывая что мы развертываемся на очень неподдерживаемой архитектуре, что угодно может пойти не так

Вам сюда: https://www.rust-lang.org/en-US/friends.html

спасибо

max_lapshin ★★ ()
Ответ на: комментарий от RazrFalcon

Сегфолта в расте и быть не может.

Вранье, во первых, ты, наверное, хотел сказать, в Safe Rust, а на контроллере там явно есть ансейф и много.

Во вторых, Stack Overflow — разновидность сегфолта, а он еще как может быть.

mersinvald ★★★ ()
Ответ на: комментарий от max_lapshin

У меня на мипсе тоже свои приколы были. Например сишная прилага к которой линкую либу на расте собирается с флагом `-funwind-tables` для бэктрейсов. А раст тоже тянет свои таблицы для паников. Но беда в том что gcc и llvm пишут их по-разному в обьектные файлы. Линкер когда видит это безобразие, сразу выпадает с невнятной ошибкой. Каким-то чудом нашел флаг `-mno-compact-eh`, пересобрал с ним С код, и все заработало.

pftBest ★★★ ()
Ответ на: комментарий от makoven

так нет рантайма. Когда что-то пойдет не так (а оно пойдет не так на первом продакшне), будет очень сложно разобраться в том, что именно происходит, проинспектировать обмен сообщениями внутри и т.п.

max_lapshin ★★ ()
Ответ на: комментарий от anonymous

да. Что бы перенести боль из поддержки в разработку.

Писать серверного демона на С++ — это означает выгребать корки по утрам. Писать на камере – значит не иметь корок вообще

max_lapshin ★★ ()
Ответ на: комментарий от anonymous

Можно взглянуть с другой стороны: зачем писать демона на C/C++? Понятно, что когда нет выбора, пишут хоть в машинных кодах. Понятно, что можно набрать лучших специалистов, дать им побольше времени, ограничить функционал минимально необходимым, грамотно спроектировать архитектуру, описать инварианты в документации, обмазаться тестами на все случаи, провести многократный кодревью, натравить линтеры и получить вполне качественный программный продукт. Только какой во всём этом смысл, если можно за меньшие деньги набрать средненьких растоманов и получить такой же по качеству продукт быстрее? Откуда эта идея, будто инструмент, позволяющий создать того же качества продукт за большие деньги и большими усилиями вдруг является лучшим?

khrundel ()
Ответ на: комментарий от khrundel

ничего, с возрастом у вас это пройдет
а пока можете дальше прикрыв один глаз пытаться отстаивать свою точку зрения

если можно за меньшие деньги набрать средненьких растоманов и получить такой же по качеству продукт быстрее?


сделали мне день, посмеялся от души

anonymous ()
Ответ на: комментарий от khrundel

малыш я пережил тебя на много лет, видел не один раз очередной убийца язык, который все умеет и вот вот всех положит на лопатки, каждые два года появляется очередной убийца язык, но никто так и не сел переписывать ни линукс, ни ядра других ОС, ни тем более весь свой продакшин ни на один из этих горе языков, так же помрет или потеряется и твой руст

anonymous ()
Ответ на: комментарий от anonymous

но никто так и не сел переписывать ни линукс, ни ядра других ОС, ни тем более весь свой продакшин ни на один из этих горе языков, так же помрет или потеряется и твой

переписывать

с таким же успехом можешь азбуку декламировать.

MyTrooName ★★★★★ ()
Ответ на: комментарий от khrundel

Любой крестовик переучится на раст за неделю-две

Но зачем? Ведь современный цепепе божественен, так они сами говорят. Сишники тоже обожают свою сишку, и ниче им больше не надо. Работы для тех и других хватает в отличие от. И получается, что раст - очередное моднявое ненужно для расчесывания ЧСВ бездельников любителей.

bread ()