LINUX.ORG.RU

Redox — операционная система, написанная на Rust

 ,


5

7

Redox — новая UNIX-подобная операционная система с открытым исходным кодом, написанная на Rust.

Основные особенности:

  • микроядерная архитектура;
  • основная часть кода написана на Rust;
  • имеется опционально включаемый GUI Orbital;
  • библиотека Newlib для программ на C (аналог glibc);
  • лицензия MIT;
  • драйверы работают в пространстве пользователя;
  • доступны распространенные команды UNIX;
  • поддержка ZFS (пока в разработке).

Скриншот

Образы для QEMU и VirtualBox, ISO с установщиком

>>> Подробности

Deleted

Проверено: JB ()
Последнее исправление: cetjs2 (всего исправлений: 14)
Ответ на: комментарий от segfault

А я слежу и принимаю участие в системном программировании - модули ядра, мидлварь.

Аналогично.

Посему разбираюсь в этом несколько больше, чем те, кто где-то слышал о «проблемах с безопасностью кода» на С.

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

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

Пишу на С++, «safety» нужна. И что дальше?

Дальше то, что в плюсах она и так есть. Скорее всего, вы пишете не С++ а на С с классами.

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

Чем доступ по «/HW/UserInput/Keyboard/GetInfo» принципиально отличается от доступа по «/HW/UserInput/Keyboard/Info» ?

«Всё есть файл» - это дурь, концептуальная блажь фантазёров из 70-ых.

Ага, как и то самое, что предлагаете вы.

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

Дальше то, что в плюсах она и так есть.

И в С есть или и в расте нет - это как посмотреть. Но если не впадать в крайности, то есть в разной степени.

Скорее всего, вы пишете не С++ а на С с классами.

Не угадал.

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

Ты же не о системном программировании сейчас говоришь, а о целях разработки Rust.

О том что ни системное, ни низкоуровневое программирование не входили в цели разработки rust. Эти unsafe вставки - такой же костыль в языке как ассемблерные вставки в С, с преобразованием форматов на входе и выходе, противопоставлением основным принципам языка, да и при чтении кода выглядят как инородные тела.

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

Берём Windows Registry и превращаем его в «живой API».
Берём Windows Registry

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

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

с преобразованием форматов на входе и выходе

Чего? Я надеюсь, ты в курсе, что unsafe в расте не только для указателей?

О том что ни системное, ни низкоуровневое программирование не входили в цели разработки rust.

Ну конечно. Скажем, возможность отключить рантайм туда попала «совершенно случайно».

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

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

И в С есть

Нет там RAII на уровне языка

Не угадал.

Откуда вы знаете? Человек самостоятельно не способен оценить уровень своей некомпетентности.

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

Посему разбираюсь в этом несколько больше, чем те, кто где-то слышал о «проблемах с безопасностью кода» на С.

Ты уже все переполнения буферов и числовые переполнения поборол в ядре, все кривые указатели выпрямил, все утечки памяти устранил? Нет? Вот когда поборешь, выпрямишь и устранишь, тогда и приходи понтоваться. Ущерб от кривой поделки по имени Си уже превысил госдолг США. Создать язык, который ни низкий уровень не умеет нормально, ни высокий, и объявить его эталоном для системного программирования - это, сука, клиника.

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

Нет там RAII на уровне языка

Во первых, RAII само по себе, ничего не гарантирует. Во вторых, через расширения всё-таки есть.

Откуда вы знаете?

Из твоего определения. Я использую, как минимум, шаблоны. А это уже плохо укладывается в «С с классами».

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

объявить его эталоном для системного программирования - это, сука, клиника

почему ?

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

ни системное, ни низкоуровневое программирование не входили в цели разработки rust

Rust чуть ли не с самого начала позиционировался как systems programming language. Так что в цели это входило.

unsafe вставки - такой же костыль в языке как ассемблерные вставки в С

Как unsafe (чем бы он не являлся) противоречит цели Rust быть языком системного программирования?

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

А как же QNX

Для домохозяек. Её никто не видел. Нигде она не используется.

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

построенная на ней Blackberry

Не имеет никакого отношения к блекбери. Вроде как что-то там пару лет назад произошло - что конкретно никто не знает.

Ну и блекбери сдохла в адских муках и сейчас вроде как выпускает ведроид для домохозяек.

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

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

пришел бы квазимото и убил его заумными портянками

И убежал бы в страхе, в слезах через 5постов срача со мною.

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

Всем пофиг.

не спрашиваю зачем ты споришь, если пофиг, но зачем споришь с ним? :)

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

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

Если сразу сжечь всех еретиков — скушно небось становится.

П.С. 666 комент в этом треде, символичненько.

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

Переключение автоматическое, чтобы не было соблазнов ,)

Но регистры все равно приходится сохранять, как только дело доходит до написания планировщика ОС...

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

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

Я слышал про три системы, которые названы, экзоядерными: Aegis, XOK и , внезапно, Embox...

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

shkolnick-kun ★★★★★
()
Ответ на: комментарий от tailgunner

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

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

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

Зашибись логика. «Пока не получается - значит, не нужно».

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

Но не нужно в обработчиках FIQ и, иногда, IRQ, что уже хлеб. Особенно для RT, когда хочется получить максимально быструю предсказуемую реакцию на прерывание. А то, что будет массовый push general-purpose регистров и PSR при переключении тасков — это естественно. Оно и в любом случае будет.

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

Упадёт - значит упадёт. Дальше оно работать не сможет, а обработчика не будет. Что делать? Или опять «обработчик 100% должен быть»?

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

а когда это было нельзя и при чем тут микроядра ?

Переключение контекста - сохранение регистров в стек, оно делается быстро, медленно делается переключение адресного пространства и загрузка/выгрузка данных в кеши, ещё медленно делается копирование данных.

От копирования данных спасают мапы гранты и т.д., от накладных расходов при переключениях адресного пространства спасает оптимизация карты памяти (например, как это сделано в Linux), от кеш-промахов, насколько я понимаю, тоже.

отлично если язык безопасный

Ну и сколько экзоядерных ОСей написано на «безопасном»?

shkolnick-kun ★★★★★
()
Ответ на: комментарий от DarkEld3r

В присваиваниях:

Отлично, только зачем? В конечном итоге ничего так и не было показано.

  __auto_type res = ({
    __auto_type a = 10;
    __auto_type b = 10;
    a + b;
  });
Ну смогли-смогли.

Пишу на С++, «safety» нужна.

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

И что дальше? И нет, жавой/шарпом заменить не предлагать.

Что значит не предлагать? Это решает все твои проблемы.

registrant27492
()
Ответ на: комментарий от shkolnick-kun

Это действительно не нужно.

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

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

Ну так там можно докучи сделать «использование после освобождения», «использование не инициализированного „указателя“», ну и на потокобезопасность забить с пробором.

Так что:

#rust, #nogc, #memorysafety

А еще когда-то приделают обратно GC, и #noqc тоже рипнется.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от registrant27492

Отлично, только зачем?

Чтобы переменная была константной, например. В плюсах это делается костылями или выносом инициализации в функцию.

Но вопроса «зачем» не было. Был вопрос, «где ещё может пригодится», на него я ответил, а ты опять изворачиваешься.

Ты пишешь гуйню для домохозяек и твоё мнение ничего не стоит.

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

Это решает все твои проблемы.

Мимо.

DarkEld3r ★★★★★
()
Ответ на: комментарий от shkolnick-kun

Ну так там можно [...]

Там - нельзя. Но ты можешь придумать свое определение термина «memory safety» и использовать только его. Хотя... ты ведь так и делаешь.

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

Требуется некоторый багаж опыта и знаний,

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

и готовность менять привычки.

Я предпочитаю изучать предметные области, в которых работаю, и повышать квалификацию, изучение Rust не даст мне ни того, ни другого.

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

Про новейшие возможности микроядер отмапить память посмотри тут

https://en.wikipedia.org/wiki/Shared_memory

Переключение контекста - сохранение регистров в стек, оно делается быстро

https://en.wikipedia.org/wiki/Context_switch#Performance

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

Ну так там можно докучи сделать «использование после освобождения», «использование не инициализированного „указателя“», ну и на потокобезопасность забить с пробором.

В безопасном коде? Покажи.

А еще когда-то приделают обратно GC, и #noqc тоже рипнется.

Если я к С GC прикручу, то весь язык внезапно станет со сборкой мусора? Ерунду говоришь.

DarkEld3r ★★★★★
()
Ответ на: комментарий от shkolnick-kun

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

So true.

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

Про новейшие возможности микроядер отмапить память посмотри тут

Since both processes can access the shared memory area like regular working memory, this is a very fast way of communication (as opposed to other mechanisms of IPC such as named pipes, Unix domain sockets or CORBA).

Ты читаешь статьи, на которые ссылаешься?

https://en.wikipedia.org/wiki/Context_switch#Performance

Видимо, нет...

Context switching itself has a cost in performance, due to running the task scheduler, TLB flushes, and indirectly due to sharing the CPU cache between multiple tasks.[4]

TLB flushes происходят при переключении адресного пространтства.

Поэтому написано:

Switching between threads of a single process can be faster than between two separate processes, because threads share the same virtual memory maps, so a TLB flush is not necessary.[5]

shkolnick-kun ★★★★★
()
Ответ на: комментарий от DarkEld3r

В том, что инстанс - это абстракция сделанная руками ваятеля. Если её нет - упадёт все, а если она есть - не упадёт всё, но для этого она должна существовать, а она не существует. И это уже изменение начальных условий.

registrant27492
()
Ответ на: комментарий от shkolnick-kun

На любом ЯП общего назначения можно, в т.ч. и на Rust.

Причем здесь машина Тьюринга? Речь шла об определениях терминов. Всё, что ты предлагаешь, нарушает memory safety в том смысле, котором его понимают разработчики Rust. А твои добавки к этому термину - они твои личные.

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

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

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

В безопасном коде? Покажи.

На любом достаточно мощном ЯП можно «сэмулировать» все, что угодно, например, «нибизапасный доступ к памяти», Rust не исключение.

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

Ни единого unsafe при этом написано не будет.

И если Rust станет более-менее распространенным, этим обязательно воспользуются «индусы», чтобы обойти ограничения/

Если я к С GC прикручу, то весь язык внезапно станет со сборкой мусора?

Мне тут крестогеи в прошлом треде говорили, что в крестах есть бежопашность и даже ГЦ, ну ты понел.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от DarkEld3r

Не волнуйся - все сообщения где было что-то серьёзное от меня - были потёрты. Прочитать ты их можешь в удалённых.

Там было не так везде, где только можно. Каждое сообщение юлёж, балабольство и игнорирование всего, что неудобно.

registrant27492
()
Ответ на: комментарий от shkolnick-kun

На любом достаточно мощном ЯП можно «сэмулировать» все...

Ну то есть доказать ты не можешь ничего, но «нутром чуешь»? Понятно.

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

И как это относится к «использование после освобождения», «использование не инициализированного „указателя“»?

ну ты понел.

Нет, если честно.

DarkEld3r ★★★★★
()
Ответ на: комментарий от shkolnick-kun

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

а когда это было нельзя и при чем тут микроядра ?

Переключение контекста - сохранение регистров в стек, оно делается быстро

Про новейшие возможности микроядер отмапить память посмотри тут
https://en.wikipedia.org/wiki/Shared_memory

Ты читаешь статьи, на которые ссылаешься?

нездоровится чтоли ?

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

Прочитать ты их можешь в удалённых.

Спасибо, но нет.

Каждое сообщение юлёж, балабольство и игнорирование всего, что неудобно.

Кто бы говорил...

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

Только это не имеет никакого отношений к утверждению «Пользователь не станет менять машину ради ваших тормозов».

Ещё как имеет. Менять-то не на что. Серверный ксеон в ноутбук не запихнёшь.

пользователи постоянно меняют железо на более мощное на:

— Коммуникаторах и планшетах — Ноутбуках

Никто так не делает. Только если вместе с самим ноутбуком/планшетом. Разных Эдиков не берём, они, может и меняют, но и погоды не делают.

— Игровых десктопах

Не каждый игрун обновляет десктоп регулярно. И не все готовы это делать ради очередной новинки. В своё время, даже выход DirectX 9.c не заставил меня обновить систему. Если помните, разница между 9.0 и 9.с была колоссальная. И да, так получилось, что игры у меня были исключительно лицензионные: лицензия стоила дешевле интернета, а позже — религия не позволяла перейти на пиратку.

Сегодня же 4Гб мало даже чтобы просто комфортно сёрфиться в Интернете.

4.2 Гига памяти хватает с запасом.

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

Добрые дяди удаляют твой мутный поток сознания. Говори по делу.

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

И как это относится к «использование после освобождения», «использование не инициализированного „указателя“»?

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

Подробности

Нет, если честно.

Если Rust ... ... то индусы будут массово использовать ГЦ, #nogc, дефакто, рипнется, что тут непонятного?

shkolnick-kun ★★★★★
()
Ответ на: комментарий от DarkEld3r

Спасибо, но нет.

Слив засчитан.

Кто бы говорил...

Мило. Ни один ещё не поймал, но ты можешь попытаться.

Я просил «где перегрузка?» - ты мне потом балаболишь о том, что я утверждал, что её нет. Т.е. ты врёшь. При этом эта пререгрузка просто убога, ибо я так и не понял - есть ли там перегрузка функций, есть ли там point *= 1 и прочее.

Да и выглядит тонна это убого лапши как говно.

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

*p - это тоже mul?

Понимаешь в чём штука - всё, что правильно - то логично. То понятно - ибо всё выводится просто. В сишке, да и в тех же крестах я просто выводу нужные мне конструкции даже не зная о них.

Т.е. я спокойно писал на сишке/крестах видя их впервый раз, как и раст.

Но тут же убогое нагромождение невнятной херноты, которая не поддаётся никакому объяснению и классификации - просто куча неведомой херни, которую сгребли в кучу и назвали «синтаксис».

registrant27492
()
Ответ на: комментарий от shkolnick-kun

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

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

дефакто, рипнется, что тут непонятного?

Да примерно всё. Думаешь на С или тем более плюсах мало «индусов» пишут? Но ты ведь не по их поделкам качество языка оцениваешь?

DarkEld3r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.