LINUX.ORG.RU

Embox v0.7.0

 , ,


1

2

В день 16-летия вышла новая версия открытой операционной системы реального времени Embox

Embox предназначена для встраиваемых систем. Главной идей является использование Linux-ПО без Linux. ОС является POSIX-совместимой и кроссплатформенной (ARM, MIPS, x86, RISC-V, Microblaze, SPARC, PowerPC, E2K), имеет аналог ./configure; make; make install, поддерживает C++. Есть поддержка ряда файловых систем: FAT, ext2/3/4, поддержка сетевого, графического и остальных системных стеков. Доступны популярные ЯП: Python, Lisp TCL, Ruby, Lua, JS, Scheme.

ОС написана на языке C, отличается гибкой конфигурируемостью на уровне исходных текстов и распространяется на условиях двухпунктной лицензии BSD.

Embox включена в реестр российского ПО.

Отдельно обращаем внимание на поддержку российских чипов: Миландр (MRD1206FI), Байкал-Электроникс (Baikal-U) и KOMDIV64, а так же на начало работ по поддержке ardupilot и tensorflowlite

>>> подробнее

★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

ОС написана на языке C

Постойте, но ведь выпячивать, на каком языке написан проект - это дурной тон, свойственный только секте раста?

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

«Выпячивать» – это немного про другое.

Когда, например, сообщают, что Rustdesk написан на Rust – это нормально, поскольку это интересный и самобытный проект, прямых опенсорсных аналогов которому особо и нет (проприетарные есть). И никто не дёргается писать про «секту Раста».

А вот когда форсится «срочная замена пакета, написанного на кудах-тахтах небезопасном Си, а вот у нас всё на безопасном Расте» – то это да, то самое выпячивание.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)

Это все очень хорошо и одобряемо. Но что-то я пока не понял, пользоваться-то этим уже можно?

void *const SYSCALL_TABLE[SYSCALL_NRS_TOTAL] = {
	NULL, sys_exit, sys_fork, NULL, sys_write, sys_open, sys_close, NULL, NULL, NULL,    // 0 - 9
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 10 - 19
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 20 - 29
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 30 - 39
	NULL, NULL, NULL, NULL, NULL, sys_brk, NULL, NULL, NULL, NULL,    // 40 - 49
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 50
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 60
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 70
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 80
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 90
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, sys_newfstat, NULL,    // 100
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 110
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 120
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 130
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 140
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 150
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 160
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 170
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 180
	NULL, NULL, sys_mmap2, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    // 190
};

Чот сисколлов негусто... Или это только совместимые с линуксом? Свои как-то по другому работают?

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 2)
Ответ на: комментарий от hobbit

Всё понял. Написали на ларьке грубо: «Пива нет». А нужно было вежливо написать: «Пива нет».

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

Я сейчас именно на раст сделал модуль к электрону для отслежливания хоткеев клавы и мыши нормально с событиями кейдаун, кейап. А официально такой возможности не существовало. Раст охренителен, знаешь ли.

Уж если какой язык реально нужен и полезен, то это раст, по остальным есть варианты для обсуждения.

И то что на отечественных платформах его нет - сильно делать мне грустно. Я в рот имел необходимость писать на си. Си не предназначен для программирования.

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

Работает? Работает. Не течет? Не течет. Чего тебе еще надо?!

https://github.com/Vladgobelen/NSQCuE/blob/main/global-mouse-hook/src/lib.rs

Да раст для меня просто откровением стал. Я 20 лет мучился периодически с си - не написал и трех реально нормально рабочих программ на нем. А раст с первой попытки зашел.

Я как представлю, что придется из за отсутствия раста писать на си, у меня аж волосы дыбом на копчике.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 4)
Ответ на: комментарий от LightDiver

Не лицензируется под GPL - ненужно.

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

Я 20 лет мучился периодически с си - не написал и трех реально нормально рабочих программ на нем

20 лет??.. Ж8-О

Я первое своё рабочее устройство — комплект из 2 разных плат контроллеров на PIC16F877A с «прошивками», написанными мной впервые в жизни на С, помнится, лет с 15 тому назад дней за 10-15 «выдал».

В это время входило и время поиска «косяков» в «железе», которое по капризу начальства —мол, «так скорее выйдет» — делал не я сам, а «третье лицо»...

Как можно годами не суметь ничего написать — не представляю...

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

Надёжный язык, в котором сэкономили на слове return.

Этот код просто неприятно читать, не то что писать на нём.

Взяли худшее из C++ и Ruby и собрали монстра.

    fn is_keyboard_device(device: &Device) -> bool {
        if !device.supported_events().contains(EventType::KEY) {
            return false;
        }
        
        if let Some(keys) = device.supported_keys() {
            let keyboard_key_count = keys.iter()
                .filter(|code| {
                    let code_val = code.code();
                    // Regular keyboard keys (1-255) excluding mouse buttons
                    (code_val >= 1 && code_val <= 255) && !(code_val >= 0x110 && code_val <= 0x117)
                })
                .count();
            keyboard_key_count > 20 // Require more keys to avoid false positives
        } else {
            false
        }
    }
wandrien ★★★
()
Ответ на: комментарий от Somebody

Да я тоже софтину удаленного управления ноутбуком написал на си помню в году еще 2005. Но кааак она текла. То что я писал на си рабочим назвать нельзя ни в каком смысле, даже с учетом того, то они выполняли свои функции.

У меня не было информации о си, не было учебников и учителей. И си отбил у меня все желание программировать на эти 20 лет напрочь. И заново начал я года 2-3 назад с луа. И там пошло уже поехало. А раст - ванлав. Сразу и накрепко зашел.

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

Чего не нравится то? Красиво, понятно, просто. Сразу видно что куда и почему. Хз.

Вот как раз фича с этой экономией мне охренительно понравилась. Ну хорошо же.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Нет, плохо.

Я всю жизнь пишу на языках со {скобочками}, и в каждом новом добавляют очередной $%^&-style маразм.

Можно я не буду пытаться глаза ломать об очередное хакерское поделие латентных любителей Перла. Спасибо.

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

Самое забавное, что перл мне не зашел вообще. А всякие заковыристые конструкции в луа и раст доставляют почти физическое удовольствие.

Вот создаешь их, смотришь и понимаешь, что ПОНИМАЕШЬ что там написано. И это кажется каким то колдунством - сакральным знанием, которое доступно не только лишь каждому.

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

Оооо.. Видел бы ты с десяток вложенных друг в друга переходов тунамбер-тустринг, да еще с математическими формулами.

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

В lua синтаксис простой как палка.

То, что этим синтаксисом еще и удобно пользоваться – заслуга дизайнеров этой «палки».

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Видел бы ты с десяток вложенных друг в друга переходов тунамбер-тустринг, да еще с математическими формулами.

Скорее всего по итогу говнокодом окажется.

С опытом приходит понимание, что структурно код должен быть максимально простым, так растёт его надежность, снижается сложность внесения изменений, а диффы в git становятся наиболее очевидны.

Возможность сувать лямбду в лямбду в лямбу – это именно удобная возможность, а не призыв стрелять себе в ногу.

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

Я 20 лет мучился периодически с си

А плюсы ни разу не попробовал? Если ты пишешь не ядро ОС и не драйвер, си тебе, скорее всего, и не особо нужно.

Я как представлю, что придется из за отсутствия раста писать на си

Да почему, тебе на всех остальных языках РКН писать запретил? Повторюсь, плюсы (например).

hobbit ★★★★★
()

Обсуждение скатилось в растосисрач. И то и то, скажем прямо, для XXI устарело.

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

Она не совсем предназначена для того, чтобы её напрямую в production пихать. Там неспроста написано про «гибкой конфигурируемостью на уровне исходных текстов».

Грубо говоря, через их mybuild ты указываешь, какую часть исходников ты используешь для конкретного проекта. Дописываешь, что тебе нужно, получаешь конкретный проект. И вот это уже production под девизом «ничего лишнего». И да, конкретные проекты у них есть. Как @abondarev проснётся :) он, вероятно, может что-нибудь более конкретное рассказать.

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

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

Да даже если ты пишешь ОС или драйвер, оно тебе тоже не особо нужно.

Да почему, тебе на всех остальных языках РКН писать запретил? Повторюсь, плюсы (например).

Просто не все получают удовольствие от садомазо.

yvv1
()
Последнее исправление: yvv1 (всего исправлений: 1)
Ответ на: комментарий от hobbit

На плюсах вообще рабочий код не вышел ни разу. Чистая сишка хоть кое как работает.

А вообще да, ты очень точно угадал. Уже дважды РКН мне запрещал писать на раст, приходилось писать на Си и ждать пока разбанят креэйтсы.

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

Уже дважды РКН мне запрещал писать на раст, приходилось писать на Си и ждать пока разбанят креэйтсы.

Нифига себе, правда что-ли? А что, зеркал у крейтсов нет, как у линукс дистров? А то выглядит как самая большая уязвимость раста.

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

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

И вот представь, я пытался через впн качаь по одному модулю вручную для софтины. А надо выкачать где то 290-360… на 50-60 я сдался и написал на си. А через пару дней и разбанили креэйтсы.

Думаю у тех же питона и js та же уязвимость по сути плюс минус. Может не настолько критично, но всеравно.

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

Уже дважды РКН мне запрещал писать на раст, приходилось писать на Си и ждать пока разбанят креэйтсы.

Ну вот, собственно, причина, по которой я не тороплюсь прыгать на Раст. Причём мы оба понимаем, да, что «РКН» тут понятие условное, я могу, например, просто уехать в глухую деревню с никаким интернетом и там писать.

В случае с сишкой или плюсами я могу решить вопрос статически, запастись срезом репозиториев условного дебиана или альта с кучей всяких lib***-dev, и мне этого хватит очень, очень надолго.

Кстати, @yvv1 мог бы вместо того, чтобы заниматься клоунадой, мог бы рассказать (технически!), что в таком случае сделать для Раста.

На плюсах вообще рабочий код не вышел ни разу. Чистая сишка хоть кое как работает.

Странно. У меня плюсы основная рабочая лошадка (да, усиленные кутями, но бывает, что и на чистых пишу). На Си тоже могу то же самое писать, но там просто для прикладных задач придётся писать куда больше кода, и он более трудночитаем будет.

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

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

Да, можно работать отверткой и ручным лобзиком, но я работаю шуруповертом.

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

Вот ты так же сможешь прожить какое то врем без электричества. Но жить так на постоянной основе уже мало кто сможет и захочет.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от hobbit

Есть там зеркала, но и без них можно через git напрямую, и локальный срез крейтов сделать.

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

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

Так и с растом - он дает удобства, автоматизацию.

Я понимаю, что более высокая технология имеет уязвимости, но она уже вокруг нас и без нее никуда.

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

Кстати, @yvv1 мог бы вместо того, чтобы заниматься клоунадой, мог бы рассказать (технически!), что в таком случае сделать для Раста.

Выход вижу один: распределённый регистр крейтов. Т.е. единый регистр - это хорошо, но хранить его нужно в распределённой ДБ. Это не проблема языка, это проблема экосистемы, так-то карго позволяет тянуть крейтсы откуда угодно.

А клоунадой я занимаюсь только седи клоунов, не мешай.

yvv1
()
Последнее исправление: yvv1 (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Всё-таки повторно рекомендую присмотреться к плюсам. Да, если работать со строками, например, Си – это отвёртка.

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

поделие латентных любителей Перла.

Вот щас прям обидно было. Думаю, что выскажу общее мнение любителей Перла любых видов — мы к расту не имеем никакого отношения.

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

А клоунадой я занимаюсь только седи клоунов, не мешай.

Ты пришёл в тему, никакого отношения к расту ВООБЩЕ не имеющую, и начал клоунаду с самого первого комментария. По-хорошему, я должен был снести его сразу по 4.1. Но зачастую люди искренне не понимают, за что снесли, поэтому я вместо этого сделал пояснение, спокойное, с примерами.

Корм оказался не в коня, вижу. Теперь здесь вместо Embox обсуждают Rust.

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

Я последние три года на 99% работаю с данными в луа. Таблицы, строки, символы, ручная обработка utf8, ручные реализации различных структур на основе таблиц.

["Шеф"] = {
		["таймер"] = "buVe/^n`@e<|j6Q`]VeZAYEAisQk^wao|k2cb^0eghe+(`Org9hbO(k*cg8Vitct4he{hfWQcc^gF^b^0asQlRFf`@@_F",
		["monoObjects"] = {
			"0ka0ka00t00t0ka0ka0ka0ka00t00t00t0ka00t0ka0ka00t0ka0ka00t00t00t00t00t0ka0ka0ka0ka00t0ka0ka00t0ka0ka0ka0ka0ka00t0ka0ob0ka0ka0ka00t00t00t0ka0ka0ka0ka0ka00t00t0ka0ka0ka00t0ka0ka0ka0ka00t0ka00t0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka0ka0ka00t00t0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka00t00t", -- [1]
			" Bk +X1A[12M F) G< G8 G4 [1 }O14> G812z G$ G;11F GY G7 }+ {N10w12912_ F1 GB GF F611c Dt Cs 'S D` D{ D{ F0 FL124 Db Ch 9(  1  1 [v [d '6  1  1  1  1  1 ]A [%  1  1  1 }{  1  1  1  1 [+  1 [$  1  1 [[  1  1  1  1  1  1  1  1  1  1 }a ['  1  1  1  1  1 ]3  1  1  1  1  1  1  1  1 ]J  1  1  1  1  1 [2 'a", -- [2]
			"nilnilnilnilnilnilnilnil00t00t00tnilnilnilnil00tnilnil00t00t00t00t00tnilnilnilnil00tnilnil00tnilnilnilnilnil00tnilnil0kanilnil00t00t00tnilnilnilnil0ka00t00tnilnilnil00tnilnilnilnil00tnil00tnilnil00tnilnilnilnilnilnilnilnilnilnil00t00tnilnilnilnilnil00tnilnilnilnilnilnilnilnil00tnilnilnilnilnil00t00t", -- [3]
		},
		["нуклеотиды"] = "ARGBCRTRGBARGRT",
		["00h"] = {
			["4NIL"] = "                                                                                                                                                                                                                                                                                                            ",
			["4"] = "0hp0hp0hp0hp0hp0hp0hp0hp0hpstl0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hp0hpstl",
		},
		["pets"] = {
			["bbb"] = "",
		},
	},

Мне просто негде пока работать с плюсами. Если надо что то простенькое сделать, проще взять раст, питон, луа и не заморачиваться.

Правда в последнее время плотно занялся node.js и ява-скриптом в целом. Спасибо РКН, запилил свой групповой войс: https://ns.fiber-gate.ru/

А для работы с плюсами просто нет подходящих проектов. Нечего на них делать такого, что бы нельзя было сделать на других инструментах.

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

Да, кстати, регистр растовых крейтсов это всего лишь гит репа, так что её можно склонировать и прописать в конфигах тянуть локальную версию. Сами пакеты тоже легко скопировать. Так что упомянутая проблема только от незнания.

По-хорошему, я должен был снести его сразу по 4.1. Но зачастую люди искренне не понимают, за что снесли

Да я бы понял, без проблем. Простите, больше так не буду.

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

@hobbit Спасибо большое.

Она не совсем предназначена для того, чтобы её напрямую в production пихать. Там неспроста написано про «гибкой конфигурируемостью на уровне исходных текстов».

Да все верно, нас лучше сравнивать не с ОС (под которыми тоже понимают разное, кто то Дистрибутив, кто то FreRTOS, кто то ядро и тд), а скорее с подходом принятом в Embedded Linux для построения конечных дистрибутивов YoctoProject и аналогами, Но в отличие от Линукс подхода, где есть Ядро (KBuild), RootFS (OpenEmbedded), DevTree и наверное еще и компилятор суда стоит отнести. В Embox строится общий граф для всех частей системы (на основе Mybuild (специализированный язык описания (требований и свойств модулей). И по факту получается более оптимальный образ, который включает только требуемые исходники (функционал), с заданными характеристиками.

Применяется все шире, поскольку есть хорошая переносимость с ПО Линукс, и это позволяет существенно ускорять упрощать разработку. Сферы применения можно увидеть по нашим релизам, АСУ-ТП, роботы, связь….

abondarev ★★★
() автор топика
Ответ на: комментарий от gns

Это по другому работает. Для того чтобы понять, лучше собрать и запустить, добавить модуль. Коротко, есть язык описания системы и модулей и по ней строится граф системы (программная модель), дальше внутри строится внутренняя среда для разработки, и уже в ней собирается система, строго ориентированная на цели системы. По аналогии, YoctoProject (OpenEmbedded + KBuild + DevTree + Библиотеки )

abondarev ★★★
() автор топика
Ответ на: комментарий от Somebody

А поддержки PIC10F200 по-прежнему нет… :( ;P ;))

К сожалению да :( ;P ;)) Смотрим скорее на будущее. И вот любим поддерживать российские чипы, надеемся за ними тоже будущее!

abondarev ★★★
() автор топика
Ответ на: комментарий от VladimirP

Да, ряд компаний, конечно это конечные продукты, а не просто скачанные исходники :)

abondarev ★★★
() автор топика
Ответ на: комментарий от LightDiver

Си не предназначен для программирования

«ну вы блин даёте» (с)

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

заковыристые конструкции в луа

Типа if a = b then print(a) end

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

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

Rp2040… :(

Ох, тоже руки не доходят :( даже лежит. Но как и другие члены сообщества, которые рвались поддержать, загружены по полной, и на поковыряться времени пока не хватает :( Надеюсь все таки поддержим (может даже в следующем релизе)

abondarev ★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.