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)

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

Как из первого следует второе?

Ага, значит и это ты не понимаешь. Подсказка: этот Output может использоваться для указания типа , ну как vector::value_type и подобные ему.

Читай выше.

Читал, ничего такого не нашёл.

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

GUI Meditation Error :-)

GURU Meditation Error же, лол :-)

press middle button to чего-то там

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

Если просто, то как-то так.

Может и не совсем тебя понял, давай попробуем прояснить. Эта штука (в общем случае) транслируется как раз в обычные функции. Это всё ещё будет «рантайм обёртка»?

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

А кажется он тебе простым или сложным, интуитивным для тебя или неинтуитивным - дело твоего вкуса.

Я бы даже сказал, что не «вкуса», а «опыта». Синдром утёнка и всё такое. Говорю как «пострадавший» от плюсов.

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

бессовестная ложь евангелистов.

Дык, ложь у тбея в голове существует, в основном. Хотя, конечно, есть и такие, кто «слишком радостно» язык принял и вообразили себе очередную серебряную пулю. Ну что поделать - это так же объективно, как считать, что лучше С ничего быть не может.

Достаточно понять простую идею: раст делает совершение определённых ошибок более сложным, то есть их становится (более) сложно сделать случайно. Всё.

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

Конечно лучше, если цель у нас «побыстрее написать какой-то код».

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

А, либа что ли, которая идет в поставке с компилятором? Так там же написано для чего это было сделано. И даже в примере подключили libc вместо нее.

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

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

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

Да нет, вики прямо говорит, блекбери - QNX family. Значит — микроядро.

Ну и блекбери сдохла в адских муках

0,3% рынка, что сравнимо с популярностью всех дистрибутивов GNU/Linux вместе взятых

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

чище стало, аккуратнее

ему уже написали, что в ответ на пост про язык Си он привёл кусок из стандарта С++?

Не имеет никакого отношения к блекбери.

блекбери купил QSSL когда-то. но это ему не особо помогло.

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

вся суть царя

А как же QNX

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

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

длань-чело-потѣшная.лубок

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

В нагромождениях конструкций и всяком хардкоре я посильнее много.

да уж, нагромодил ты, громодянинъ.

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

дак не понимаешь же. ну вот тебе вопрос на понимание. как создать объект этого самого 'function object type' из стандарта (да, сишечки, а не плюсов?) ???

не создавая указателей на, то есть, уже производного типа?

чтобы чисто всё в компайл тайме отработало? с 0 рантаймом (runtime system, есличо)?

ну например: напиши мне функцию, которая принимает имя функции и возвращает функцию, возвращающую функцию (то есть, карринг, ну либо другой пример — замыкание)

не так как ты bind(f,...) написал — у тебя там возвращается значение от применения функции, а не сам функциональный тип.

например, мы хотим что-то сделать с типом, и уже во времени компиляции.

то есть, указатели на нас не устраивают — хочется работать с самим типом-функция, а не типом указатель на эту функцию.

указатель нам не нужен — нам нужен объект времени компиляции, то есть, сам тип. в рантайме его не должно быть (стираются типы же).

приведи код, а. ты же можешь, же ну.

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

не так как ты bind(f,...) написал — у тебя там возвращается значение от применения функции, а не сам функциональный тип.

У него возвращался именно функциональный тип. Передерг был в другом - этот bind умел привязывать только список начальных аргументов variadic-функций.

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

У него возвращался именно функциональный тип.

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

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

Передерг был в другом - этот bind умел привязывать только список начальных аргументов variadic-функций.

ну теоретически может и на этом можно что-то изобразить в стиле BOOPSI, например:

MyWindow = MUI_NewObject(MUIC_Window,
                         MUIA_Window_Title, "Hello",
                         WindowContents, MyGroup,
                         TAG_DONE);

и интроспекцию через извещения

DoMethod(MySlider,
         MUIM_Notify, MUIA_Slider_Level, MUIV_EveryTime,
         MyGauge,
         3,
         MUIM_Set, MUIA_Gauge_Current, MUIV_TriggerValue);

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

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

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

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

Его можно было вызвать.

И да, завязывай оффтоп с BOOPSI.

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

Его можно было вызвать.

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

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

Его можно было вызвать.

в рантайтме. а вот как его же вызвать в компайлтайме?

anonymous
()

драйверы работают в пространстве пользователя

Это как? Простите, просто недостаток профильного образования. Обьясните, кто более грамотный. Просто интересно.

ЗЫ: Нет, я догадываюсь, что речь о правах юзера, но блин, как? То-есть дрова может править простой юзер с ограниченными правами? А, простите, нафига ему это?

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

Разве что низэнько-низэнько. Или драйвера ты напишешь?

А для чего писать драйвера под всё многообразие существующего железа. Железо надо покупать под свою систему а не пытаться запустить систему на чём угодно. Apple же вполне себе процветает не озадачиваясь написанием драйвером под всё что можно и работает вроде только на intel core процессорах.

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

Наверное это означает что не происходит копирования из kernel space в user space.

iluha16
()

Игрушка с претензиями на серьезность. Звучит так, будто собирались хелловорлд от мира операционок родить, дабы доказать, что руст тоже может. А потом решили костылить дальше, вдруг линуксокопец получится.

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

Разве что низэнько-низэнько. Или драйвера ты напишешь?

А для чего писать драйвера под всё многообразие существующего железа.

А что, неужели драйвер некоего устройства написать так уж сложно? Я не уверяю, я гарантию даю, что это гораздо проще, чем писать софт для недокументированной железке. Там всё производителем железобетонно задокументировано, все порты и команды к устройству, чтобы ни один ушлый юрист не докопался.

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

Может и не сложно, смотря какое устройство. Но думаю имелось ввиду именно то что бы поддерживать всё многообразие устройств. Если OS имеет какое то преимущество перед существующими не такая проблема купить сетевую карту из списка ей поддерживаемых. А с недокументированными железками лучше вообще не связываться, надо читать информацию перед тем покупать проприетарный чёрный ящик.

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

В принципе, согласен с тобой. Но на самом деле, какое ОС имеет преимущество? Лично для меня, ОСь не имеет, ну просто, никакого значения. Разве что, в линуксе гораздо меньше вирусов. Точнее, практически нету. Но на самом деле это и в винде не самая большая проблема. Самая большая проблема - кривые ручки. Точнее, очень кривые ручки пользователей ПК. Сколько раз ты слышал фразу «я ничего не делал, оно само»? Вот-вот. Я эту фразу слышу почти ежедневно.

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

Дык, ложь у тбея в голове существует, в основном.

https://doc.rust-lang.org/book/

Welcome! This book will teach you about the Rust Programming Language. Rust is a systems programming language focused on three goals: safety, speed, and concurrency. It maintains these goals without having a garbage collector, making it a useful language for a number of use cases other languages aren’t good at: embedding in other languages, programs with specific space and time requirements, and writing low-level code, like device drivers and operating systems. It improves on current languages targeting this space by having a number of compile-time safety checks that produce no runtime overhead, while eliminating all data races. Rust also aims to achieve ‘zero-cost abstractions’ even though some of these abstractions feel like those of a high-level language. Even then, Rust still allows precise control like a low-level language would.

while eliminating all data races

all data races

all

Нет.

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

Пользователи работают с окружением. Если же говорить о ядре то можно подумать что т.к. rust ориентирован, по крайней мере судя по утвержедниям создателей, на safety, speed, concurrency, ядро может быть более надёжным при сохрании быстродействия. Однако ядро linux, да и другие современные ядра, довольно надёжны. Единственный раз когда я видел kernel panic это когда не включил в ядро драйвер для диска с которого происходила загрузка. Security Advisory касающиеся ядра так же довольно редки, в основном они отсносятся к user spaceу.

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

А обьясни мне, какое это отношение это имеет к операционной системе? Вот именно, что пользователи работают со свом блядским Word и Excel. Не вижу в этих продуктах ничего плохого. Я конечно в курсе, что офисные продукты майкрософта, причём интегрированные в IE. Но, повторюсь, неправда. Не майкрософт виноват, а исключительно личный долбоебизм пользователей.

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

А что там за проблемы? Настройки какие то запутанные добавляют? Так можно снести ~/.config/libreoffice (или где там хранятся конфиги) или вообще забекапить эту папку. Лично мне, к счастью, редко надо что то печатать, поэтому пользуюсь libreoffice крайне редко, но соглашусь что запутанные эти все офисные програмки. К OS естественно никакого отношения это не имеет.

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

Его можно было вызвать.

Только пока фрейм функции, в которой макр заюзан, есть на стеке. Нет, потом, конечно, тоже можно, но

хардкор на пороховой бочке

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

У него возвращался именно функциональный тип

В терминологии стандарта - нет. Возвращался указатель на функциональный тип. Но это придирки.

bind умел привязывать только список начальных аргументов

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

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

хардкор на пороховой бочке

В Си лучше не сделаешь (хотя это был не стандартный Си).

Что ты понимаешь под списком начальных аргументов? И причём здесь они?

Невозможно привязать 2 и 3 аргументы 3-аргументной функции, например. Они здесь при том, что приличный bind должен это уметь.

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

как создать объект этого самого 'function object type'

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

чтобы чисто всё в компайл тайме отработало?

Ну, функции вообще чисто в компайл-тайме создаются.

напиши мне функцию, которая принимает имя функции и возвращает функцию, возвращающую функцию (то есть, карринг, ну либо другой пример — замыкание)

нам нужен объект времени компиляции

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

Ты ещё можешь, конечно, заговорить за CTFE, но тогда жду от тебя примеры языков, где CTFE умеет в замыкания. Тоже с пруфцами и с асмом.

Если же ты хочешь сослаться на растовские инстанциируемые функциями генерики, можно худо-бедно заменить кодогенерацией:

#include <stdbool.h>
#include <inttypes.h>
#include <stdio.h>

#define MAP(fn, input, output, len) \
    for (size_t _i = 0; _i < (len); _i++) { \
        (output)[_i] = (fn)((input)[_i]); \
    }

#define LEN(a) (sizeof(a)/sizeof(*(a)))

bool is_even(int32_t n)
{
    return (n%2 == 0);
}

int main(void)
{
    static const int32_t nums[] = {0, 1, 2, 3, 4, 5, 6, 8, 8, 9};
    bool nums_even[LEN(nums)];
    MAP(is_even, nums, nums_even, LEN(nums));
    for (int32_t i = 0; i < LEN(nums); i++) {
        printf("%"PRIi32" is %s\n", nums[i], nums_even[i] ? "even" : "odd");
    }
}
anonymous
()
Ответ на: комментарий от tailgunner

Ахаха, о вау.

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

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

Тебе не идет этот жаргон, дедуля. Выглядит маразматичненько

Так и задумано, внучек.

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

транслятор типа Вайна, только не Win to Linux, а Linux

Это называется трансляция API. в BSD, вон есть, и чо?

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