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)
Ответ на: комментарий от shkolnick-kun

Так в коде ОС они употребляются более одного раза или нет?

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

А я смотрю на код линукса и вижу - половина безопасна, из оставшегося как минимум попловину можно сделать безопасной.

Так сделай, кто мешает? Или ты хочешь, чтоб это сделали ребята из kerneldev-а? Ну предложи, потом расскажешь как далеко тебя отправили со своей «безопасностью».

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

Надо смотреть быстродействие памяти, а оно ЕМНИП выросло не так сильно. Хотя в целом согласен. Когда-то читал об идее реализовать в процессоре переключалку регистрового файла по команде. Вот только быстрой памяти под регистры нужно будет больше, можно процессорный кеш для этого дела заюзать.

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

А я смотрю на код линукса и вижу - половина безопасна, из оставшегося как минимум попловину можно сделать безопасной.

Так сделай, кто мешает?

Не «кто», а «что». Задача неподъемная для одного человека // К.О.

потом расскажешь как далеко тебя отправили со своей «безопасностью».

И это докажет... что именно?

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

Цифры примерные

цифры неверные

Частота переключения тоже

с чего вдруг ?

100 раз в секунду

планировщик без прерываний и без системных вызовов в задачах ? крутая система :)

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

Расходы на переключение контекста фиксированные. Частота переключения тоже. Соответственно, если у тебя переключение жрёт, скажем, 10000 тактов и переключаешь контекст ты 100 раз в секунду, то на 4МГц на процессы переключения уйдёт 25% процессорного времени. Но на 4ГГц на те же процессы уйдёт уже только 0.025% времени.

Нам надо исполнить какую-то операцию и записать её куда-то. Во времена 4МГц мы делали это 100раз в секунду - сейчас 4к раз. Ты понимаешь где дыра в твоём объяснении?

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

Ты хочешь поспорить, что передача указателя на функцию как аргумент функции менее популярно, чем ООП на коленке?

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

Тогда в чём проблема?

В костыльном синтаксисе их объявления.

В твоих куллязычках

функция - это абстракция над тем, что можно вызвать. Лямбда-функции - тоже функции. Кстати, в твоих сишках функция - тоже абстракция над адресом кучки команд, заканчивающихся ret'ом.

я подумаю.

Ввести ФП в сишку?

всякие map и прочее

Которые в сишке реализуются только через жёппу?

Типичный пример - тебе не ясно что значит src, а то dest

Это вырожденный случай.

Хотя ладно - почему n не константная - это же то же входящий аргумент.

Если уж на то пошло, src и dest тоже неконстантные. Константа - то, на что указывает src.

Сошлёшься на семантику передачи по значению? И тут же обделаешься.

Почему? Если я скопировал переменную, какое мне дело, что с ней будут делать в функции, на вызывающую сторону это никак не повлияет.

А это разные понятия и в этом и проблема

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

что втои примеры это не одно место

Я тебе написал пример с массивом, где тип - в одном месте.

А (2 + 2) * 2 - то наверное то же кастыль?

Нет. (2 + 2) * 2 - логично. (void (void))* states[] - логично. void (*states[])(void) - костыль.

Чем мощнее синтаксис, тем больше смысла через него можно выразить.

Переходи на китайский язык. Там вообще охеренное количество смысла на строку.

Чем меньше избыточности в коде - тем он проще и понятней.

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

Нет смысла в чём-то в сравнении с чем-то, если это что-то имеет больше требований, чем иное.

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

Если у тебя инициализируется вся память - мне тебя жаль, как и твой рантайм.

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

Всё работает так, как должно и не существует никаких уб.

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

это логические ошибки в огранизации этой самой многопоточности.

Окей, раст предотвращает класс логических ошибок.

ОС ну нежна. ОС - это пускался всякой готовой херни.

Ты прям с бутлоадера сюда пишешь?

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

Ты мантру перепутал. Этот аргумент против GC работает, который только память убирает. А RAII работает с любыми видами ресурсов.

Я знаю что такое RAII, и мне в С ее очень не хватает. Вот только не ценой разделения всего кода на «безопасные» и «небезопасные» участки.

Если уж говорить о внедрении RAII в сишный код, то проще всего будет портировать его на плюсы. Продолжая писать на С, используя из плюсов лишь объекты. То же касается и новых проектов, ибо последний аргумент «за rust» отпадает.

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

И это докажет... что именно?

То что сишникам и прочим глубоким системщикам нафиг не вперся rust в качестве низкоуровневого языка.

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

Когда-то читал об идее реализовать в процессоре переключалку регистрового файла по команде.

На Z80 так было. Правда, не для многозадачных систем делали, а для лёгких обработчиков прерываний (что, в общем, почти то же самое :)) — типа, в обработчике просто переключил набор регистров, отработал, переключил назад, вернул управление программе. Экономия на сохранении регистров. Кончилось тем, что в обработчиках прерывания пришлось, порой, сохранять оба набора. Т.к. их активно стали использовать (оба) как в основной программе, так и в обработчиках прерываний :D

Надо смотреть быстродействие памяти, а оно ЕМНИП выросло не так сильно.

Со времени PC XT линейная скорость тоже где-то порядка на три выросла. Точных цифр не помню, но где-то с ~16Мб/с до нынешних топовых ~16Гб/с.

Вот время доступа к памяти сейчас отстаёт. Тогда, в среднем, один такт ждали или даже меньше, сейчас — 7-9 тактов. Но даже при случайном доступе прирост более чем на два порядка будет.

Вот где прирост относительно слабый — это в скорости интерфейсов HDD. На XT это были единицы (скорее даже единица) мегабайт в секунду, а сегодня — сотни мегабайт в секунду и то у SSD, а не HDD (твёрдотельные носители во времена XT тоже были куда быстрее HDD, только на практике не использовались не считая BIOS и ROM-дисков).

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

Во времена 4МГц мы делали это 100раз в секунду - сейчас 4к раз

Ок, будет не 0.025% потерь, а 1%. Я об этом писал в своём сообщении.

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

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

В расте просто можно использовать блок вместо выражения. Где конкретно - твоё личное дело.

Я не критикую ваш руст - мне он не интересен.

Стоп. А что кричал, что эта наша safety никому не нужна?

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

Кто где такое утверждал?

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

А сегфолт за них всех сразу это порешал.

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

То что сишникам и прочим глубоким системщикам нафиг не вперся rust в качестве низкоуровневого языка.

Боюсь, ты используешь термины «сишник» и «глубокий системщик» там, где правильнее было бы использовать другие термины - например, «зашоренный невежда» или даже универсальное «тролль». А так, есть люди, которые занимаются (глубоким) системным программированием и пишут на Си, но при этом понимают, что Си - беспомощное говно по сегодняшним меркам и ему нужна современная замена. Проекты проде Mirage, OSv и даже, не к ночи будет помянута, Singularity - доказательства тому. Ну и Redox тоже, да, хотя тут без шансов.

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

Тогда поцчему эта новость не мини?

Не знаю. Но если ты и JB записал в евангелисты Rust, прими таблетки от паранойи.

И поцчему вот это прикреплено?

Напиши статью о настройке Emacs для Си++ и предложи прикрепить. Я поддержу, если статья будет годной.

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

Но на 4ГГц на те же процессы уйдёт уже только 0.025% времени.

Ага память у нас может обеспечивать выдачу информации за 1 такт....

Не очень смешная шутка.

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

Не знаю. Но если ты и JB записал в евангелисты Rust, прими таблетки от паранойи.

Но зачем? Я и так нахожу окружающий мир весьма интетесным XDXDXD

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

Ок, будет не 0.025% потерь, а 1%. Я об этом писал в своём сообщении.

ipc как был неюзабелен - так и остался.

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

Это естественно можно исправить и реально ipc так никто юзать не будет, но всё равно - это уже будет не микроядро. Т.е. все эти подходы имеют высокую летенси, что не совместимо с этим миром, где всем надо постоянно долбить.

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

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

Ололо, с начала 80х годов причем. Ищут такие замену, ищут, никак найти не могут.

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

Попадались тут измерения скорости переключения контекста на P2 и P4. На P4 всего в 3 раза быстрее, при в 14 раз бОльшей частоте.

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

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

беспомощное говно
современная замена

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

Проекты проде Mirage, OSv и даже, не к ночи будет помянута, Singularity - доказательства тому. Ну и Redox тоже, да, хотя тут без шансов.

А существование проекта «PHP-OS» - неоспоримое доказательство того, что ядро надо писать на PHP

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

Ок, будет не 0.025% потерь, а 1%. Я об этом писал в своём сообщении.

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

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

с начала 80х годов причем

Не помню, я тогда маленький был.

Ищут такие замену, ищут, никак найти не могут.

...но я рад, что ты согласен с тем, что Си нужна замена.

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

хотелось бы каких-то более убедительных аргументов.

Ты не слышал о sparse и smatch? Надо же.

А существование проекта «PHP-OS»

Извините, Евгений Ваганович, что не сразу узнал вас.

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

Мир меняется, баззворды приходят и уходят, а переносимый ассемблер будет актуален ещё много-много лет.

Почему?

Потому, что есть ниша, в которой на нем можно работать более продуктивно, чем на этих ваших растах.

Почему?

Потому, что на Си я напишу двухсвязный список на несколько десятков строчек, а на Rust надо написать несколько сотен, а процедуры отладки и тестирования занимают примерно одинаковое время.

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

Потому, что есть ниша, в которой на нем можно работать более продуктивно, чем на этих ваших растах.

Такая продуктивность дорого обходится.

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

Ты не слышал о sparse и smatch? Надо же.

Ты действительно решил, что раз для rust нет статических анализаторов кода, то это означает его совершенство? Лично мне напрашивается другой вывод...

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

объясни мне, что общего у морды Windows 7 в браузере и Mirage unikernel?

Объясняю: не взлетит.

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

Ты не слышал о sparse и smatch? Надо же.

Ты действительно решил, что раз для rust нет статических анализаторов кода

фейспалм

Объясняю: любой статический анализатор фактически вводит свой _ограниченный_ диалект исходного языка. Существование sparse и smatch доказывает, что даже хардкорно угоревшие по Си разрабы ядра понимают, что голого Си мало.

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

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

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

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

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

Нет, они понимают, что быдлокодеров стало слишком много

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

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

А еще кормить с ложечки и давать производить дефекацию строго через контролируемый шланг.

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

Петросян II, объясни мне, что общего у морды Windows 7 в браузере и Mirage unikernel?

Смотрю, ты намека не понял. Ладно, разъясню: на любой более-менее известный компилируемый язык можно найти несколько концептуальных ОС, на нем писанных. И та же ситуация с каждым вторым интерпретируемым. Что ты хотел доказать, приведя таковые для rust?

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

Объясняю: любой статический анализатор фактически вводит свой _ограниченный_ диалект исходного языка. Существование sparse и smatch доказывает, что даже хардкорно угоревшие по Си разрабы ядра понимают, что голого Си мало.

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

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

Пруфом тому является популярность ждавы и прочих ЯП. Ибо Ъ-ынтерпрайз давно уже определил цену производительности в вечнозеленых и сравнил со стоимостью докупки железа.

С другой стороны, с ростом числа инсталляций компромисс в выборе ЯП плавно движется в сторону ассемблера.

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

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

Довольно точная формулировка одной из целей Rust.

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

В расте просто можно использовать блок вместо выражения. Где конкретно - твоё личное дело.

Это не важно. Где ещё его использовать, кроме как не в циклах/ифах?

Стоп. А что кричал, что эта наша safety никому не нужна?

Она не нужна там, где сейчас пишут на сишке и на прочих unsafe, а там, где она нужна - там есть жабка/сишарпик/жс и прочее.

В мире гуйни для домохозяек и одного юзера - там можно что угодно ваять и меня этот мир мало волнует. Я говорю про unsafe rust, который мне пытаются выдать за замену сишки на основании какой-то неведомой херни.

Кто где такое утверждал?

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

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

Пруфом тому является популярность ждавы и прочих ЯП.Ибо Ъ-ынтерпрайз давно уже определил цену производительности в вечнозеленых и сравнил со стоимостью докупки железа.

Кровавый тырпрайс — совершенно другая ниша, в которой когда-то доминировало Страусячье поделие.

Так что ваши доказательства - не доказательства.

С другой стороны, с ростом числа инсталляций компромисс в выборе ЯП плавно движется в сторону ассемблера.

Дада, процессор моего телефона мог бы управлять всей орбитальной группировкой ВКС РФ, но его едва хватает на то чтобы запускать птиц в свиней :(

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

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

да всем пофиг что тебе это доказывает - может это говорит о том что кроме Си и не надо никаких новых ЯП ?

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

Потому, что на Си я напишу двухсвязный список на несколько десятков строчек, а на Rust надо написать несколько сотен, а процедуры отладки и тестирования занимают примерно одинаковое время.

А я в две.

extern crate collections;
use collections::linked_list::LinkedList;
anonymous
()
Ответ на: комментарий от anonymous

> А далее любое приложение запрашивает, скажем, /HW/UserInput/Keyboard - «дай свой API». В этом API есть две стандартных (для ОС) функции GetInfo и GetKey.

Что же мне это напоминает? Да это же Plan9!

Ну если хорошенько покурить, то и Обама чем-то напоминает Майкла Джексона! Но на деле разница существенная. Почитай что ли ещё раз описание, ибо пустая голова, поверхностно «образованная» википедией - не самый лучший инструмент для обдумывания.

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

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