Привет, Хабр! У нас есть внезапные новости!

image

Пьер Швейцер, один из основных разработчиков операционной системы ReactOS, сделал в своем твиттере резонансное сообщение. Теперь новые билды операционной системы можно собирать, пользуясь исключительно средствами этой ОС и ее официальной среды сборки RosBE. Сама среда сборки так же собирается из исходников при первом запуске сценария сборки.

Таким образом, ОС ReactOS достигла состояния, называемого Self-Hosted. Символично, что данное событие происходит в тот момент, когда проект, по некоторым расчетам, достигает своего полного совершеннолетия по человеческим меркам (21 год). На скриншоте ниже показан заключительный этап сборки и смонтированный средствами ОС, только что собранный, новый образ Live-дистрибутива ReactOS. Официальная инструкция по сборке обновлена в соотвествии с новым положением дел.

image

В целом, это эпохальное событие стало возможно благодаря совместной целенаправленой работе Томаса Фабера над контролером кеша и Пьера над драйвером файловых систем FastFAT и CDFS непосредственно. О чем будет рассказано гораздо подробнее к в анонсе к грядущей версии 0.4.9. За поддержанием возможности самосборки теперь будут постоянно следить, поэтому следующим этапом будет установка билд-бота для регулярной сборки публичных тестовых образов ReactOS на ReactOS.

Одним из последних, недостающих для самосборки компонентов, стала несовершенная реализация алгоритма qsort в библиотеке msvcrt.dll. Это обнаружилось при очередных попытках скомпилировать ReactOS в ReactOS, когда сборка останаливалась из-за сбоя в подготивтельном этапе компиляции компонета USB-стека библиотеки USBD. Правильную реализацию qsort быстро перенесли из FreeBSD, за что этому проекту выражается отдельная благодарность.

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

Состояние self-hosted достигалось и ранее в 2003 и 2009 годах. Но оба раза утрачивалось, так как не являлось приоритетным. В первом случае — из-за экспоненциального роста функционала и объема кодовой базы, а во втором — из-за значительной модернизации средств среды сборки и формата исходников (переход с rbuild на cmake)

Релиз 0.4.9 станет первым в новейшей истории проекта, который будет полностью поддерживать самосборку. Хотя до выхода 0.4.9 еще около месяца — для предварительного тестирования уже доступен релиз-кандидат, впечатляющий своей стабильностью работы по сравнению с предыдущими выпусками ОС.

Комментарии (70)


  1. sumanai
    06.06.2018 21:28

    Поздравляю!

    Состояние self-hosted достигалось и ранее в 2003 и 2009 годах. Но оба раза утрачивалось, так как не являлось приоритетным.

    А как теперь? Было бы здорово, если теперь все билды, выкладываемые на сайте, будут self-hosted, чисто для морального удовлетворения. Да и сам сайт было бы неплохо хостить на ReactOS )


    1. Nexon
      09.06.2018 05:32

      Многие вещи, например PHP, уже давно не поддерживаются на WinXP.


      1. mister_fog
        09.06.2018 07:58

        Только вот ReactOS это не WinXP.


        1. Nexon
          09.06.2018 08:19

          Что особо не помогает, ограничения те же.


          1. mister_fog
            09.06.2018 08:34

            И что же помешает добавить в ReactOS то, что нужно, для совместимости с более поздними версиями Windows?


  1. boblenin
    06.06.2018 21:32

    Интересно а получится ли запустить ReactOS внутри VirtualBox, который будет крутиться в docker контейнере, который запущен в wsl, на windows 10?


    1. alexr64
      06.06.2018 22:04
      +1

      Для начала, запустите докер под wsl.


      1. latonita
        08.06.2018 09:04

        А докер под ReactOS есть шанс запустить?


    1. awesomer
      06.06.2018 22:06
      +1

      Docker из под WSL не работает.


      1. boblenin
        06.06.2018 23:42
        -1

        Нативный виндовый типа «работает». Т.е. можно все комманды вызывать из него. Как раз сейчас смотрел статью на эту тему blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows


        1. urtow
          07.06.2018 10:31

          Там от докера одно название


      1. PsyHaSTe
        07.06.2018 12:31

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


    1. AlexanderS
      06.06.2018 22:13
      +1

      А если звук работать не будет, то обращаться куда надо будет?)


      1. mwizard
        07.06.2018 00:35
        +4

        По традиции, к психиатру!


        1. AlexanderS
          07.06.2018 23:36

          В оригинале — к санитарам. Но да, ответ в целом правильный)


      1. pewpew
        07.06.2018 09:45
        +1

        В исходный код


    1. Arris
      07.06.2018 21:53
      +1

      С проблемами со звуком — к санитарам!


  1. Merkat0r
    06.06.2018 23:55

    оук… 21 год, а оно еще даже не в хоть каком-то стейбле.
    Не, мне реально нравится идея реактося, но с таким подходом и темпами оно имеет огромные шансы морально устареть, что называется *в нулину* до выхода v1.0


    1. mwizard
      07.06.2018 00:36
      +1

      Ну я так понимаю, ReactOS это moving target, они целятся на все более поздние и поздние винды, поэтому устареть, скорее всего, не устареет.


      1. Areso
        07.06.2018 07:20

        Ну я так понимаю, ReactOS это moving target, они целятся на все более поздние и поздние винды, поэтому устареть, скорее всего, не устареет стать стабильным, скорее всего, не станет.

        Fixed

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


    1. AllexIn
      07.06.2018 09:43

      Как вы себе представляете моральное устаревание?
      Вот есть РеактОС, которая появилось во времена Вин 9х.
      Прошел 21 год. 9х устарел более чем полностью.
      ReactOS выглядит вполне нормально в этом плане.
      Что должно произойтие с ReactOS чтобы она устарела?


      1. impwx
        07.06.2018 09:59

        Я бы сказал так — разница между последней версией ReactOS и последней версией Windows в каждый текущий момент времени растет или сокращается?


        1. Crafter2012
          07.06.2018 10:47

          Думаю есть неточность в вашем сравнении. Реакт ос, насколько понимаю целится в пк-сегмент, а «последняя» виндоус скоро и на табуретке пойдет. Поэтому реактос скорее всего никогда не догонит «последнюю» винду по всему спектру ее функционала. Более логичным был бы вопрос сокращается ли разрыв с функциональной нагрузкой последней винды под пк-сегмент. Сравнивать можно например с Windows Ltsb, без ентерпрайзного функционала. Но кто ж его знает кроме мейнтейнеров и пользователей)


        1. sizziff
          07.06.2018 11:22

          Я бы сказал — сокращается.
          Windows 8..10 уже не становится лучше настолько, насколько это было во времена Windows 95,2000,XP,7.
          До тех пор, пока ReactOS догоняет Windows — ей нет необходимости тратить огромные ресурсы на поддержание огромного парка оборудования, тех поддержки(обновлений безопасности), маркетинга, бюрократов, сэйлов.
          Да и идти по проторенной дороге всегда легче (например нет необходимости тратить время на изобретение плиток и метро).


          1. NiTr0_ua
            07.06.2018 12:31

            речь не о «лучше», а о WinAPI.


        1. u007
          07.06.2018 14:02

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

          Но у догоняющих всегда будет бонус — им не нужно реализовывать всё, что внедряют Майки. Те сами не знают, взлетит ли новая технология. Сколько уже примеров, когда они тратят силы и время, пиарят, продавливают, рекомендуют нам, а потом выбрасывают в корзину: «не взлетело» (


          1. sumanai
            07.06.2018 14:10

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

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


            1. sizziff
              07.06.2018 14:42

              Считаю что ВЕСЬ хлам поддерживать нет необходимости.

              Ну не будет она 100% совместима. 100% не совместима винда относительна винды (32/64/ru/en, обновления, фреймворки, поколения и проч.)
              Не взлетит одна программка, взлетит другая, от конкурентов.

              На домашних ПК — сейчас большинство приложений — это WEB (кроме игр).
              На офисных… Представим, что функционал реакт будет удовлетворять требованиям по софту для всего 50-70% раб мест, остальным таки придется ставить Windows — уже огромный выхлоп.


              1. GeekberryFinn
                07.06.2018 17:58
                +1

                Категорически не согласен!
                Потому что имеются старые любимые игры для запуска которых DosBox недостаточен, потому что они под Windows.


          1. GeekberryFinn
            07.06.2018 18:03

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

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


            1. u007
              07.06.2018 18:48

              Мне кажется, нужные штуки пробьются со временем. Если в РОС чего-то нет, найдутся люди и компании, которые напишут недостающее для себя, ну и с сообществом поделятся. А разработчиков софта это заставит задуматься: а так ли мне мне нужна в программе эта новая проприетарная фича от МС, или, может, есть что-то более универсальное?


          1. Godless
            08.06.2018 01:10

            вы меня простите великодушно за оффтоп, но Майки — это же с оранжевой повязкой и пиццей))


  1. numitus2
    07.06.2018 02:51
    +1

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


    1. Areso
      07.06.2018 05:16
      +1

      3 и 4 неплохо работают в WINE


      1. numitus2
        07.06.2018 12:35

        Я HoT запускал. Он что-то под вайном не идет


        1. sw0rl0k
          07.06.2018 15:56

          HoT? Если Вы про HotA, то всё(в версии 1.5.1) прекрасно работает под вайном(3.0) на маке.


  1. Areso
    07.06.2018 07:19

    3 рюмки водки этому товарищу! Ему 21, уже можно!


  1. vk2
    07.06.2018 09:23

    А почему вы не выкладываете готового файла для vmware/virtualbox/parallels? Какой-нибудь OVA ведь несложно генерировать автоматически?


  1. stanislavskijvlad
    07.06.2018 09:38

    Doom 1 на React 21


  1. u007
    07.06.2018 09:54

    Как там с USB движется? Или не движется? С live-флешки уже можно запускать?


    1. x86corez
      07.06.2018 17:35
      +2

      Можно, но пока нет. :)

      На онлайн конференции разработчиков в марте этого года обсуждали состояние готовности нового USB стека: reactos.org/project-news/march-2018-meeting-minutes


  1. defecator
    07.06.2018 10:09
    -2

    Было бы клёво, если бы ReacOS смогли запустить на Raspberry!


    1. mayorovp
      07.06.2018 10:42

      А смысл? Под ARM не так много виндовых программ сделано…


      1. defecator
        07.06.2018 11:20

        ну так не только линуксы смогут работать на малинке.
        Винда десятая, которая IoT, вполне себе работает на малинке


        1. defecator
          07.06.2018 12:03
          -3

          кто тут такой нервный минусует? напишите, что не нравится, а не тихой сапой


          1. DrAleck
            08.06.2018 00:34
            +1

            Я не минусовал, но предположу, что толку для обычного пользователя от windows iot на малинке чуть меньше, чем никакого. Для разработчиков — да, но что там делать обычному пользователю? А вот linux на малинке вполне выполняет офисные функции


  1. danfe
    07.06.2018 10:57

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


  1. qlkvg
    07.06.2018 11:23

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


  1. hzs
    07.06.2018 12:32

    А Космические Рейнджеры пойдут?
    А то под wine за лет 10 так и не нашёл способа писать кириллицей в информационном центре.
    Да и вообще, можно попробовать ребёнку на комп поставить, это же не винда, так что идеологически можно, тем более что по идее должна завестись куча развивающих игрушек для детей.
    Под винду такого добра значительно больше, чем под никсы.


    1. Psionic
      07.06.2018 13:54
      -1

      Решили лишить ребенка детства? Ставьте виндовс, нельзя давать ребенку в руки заведомо не доведенный продукт — завтра у него при игре с друзьями по сети откажет дискорд или тимспик или игра не стартует, и его засмеют в школе, и за что? Что родители линуксоиды поставили заведомо кривую ос которой до релиза которой, как до луны?


      1. hzs
        07.06.2018 14:04
        +2

        Ребёнок с трёх лет на линуксе.
        Сейчас ему 4,5 года.


        1. untilx
          07.06.2018 16:46
          -1

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


    1. ksenobayt
      07.06.2018 13:55

      Там всё очень просто решается, просто нужно зафорсить локаль: даже HD собиралась в Borland Delphi 7, и, как следствие, все строки и весь ввод был в ANSI.

      Ларчик, собственно, открывается очень просто:

      env WINEPREFIX="/home/<имя_пользователя>/.wine" LANG=ru_RU.utf8 wine C:\\windows\\command\\start.exe steam://rungameid/214730

      Между прочим, я это даже в документации к «Революции» указывал прямым текстом :)


      1. hzs
        07.06.2018 14:06

        О_0
        Сколько локалями игрался, ничего не получалось.
        Попробую вечером.


  1. untilx
    07.06.2018 13:18
    +2

    FreeBSD прям донор кода для всех: для Реакта — сортировку, для HaikuOS драйверы ethernet, ну, и так, по мелочи, там, четвертинку от макоси, TCP/IP для винды…


  1. khdavid
    07.06.2018 16:12

    А можно подробнее, что там было не то с сортировкой в msvcrt?


    1. x86corez
      07.06.2018 17:40

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

      Если что, вот ссылка на коммит: github.com/reactos/reactos/commit/2dfe5e3f463ca4d7eb920d25c2a33b29a70f3e27


  1. Lsh
    07.06.2018 18:16

    А насколько ядро ReactOS совместимо с ядром винды? Я это к чему…
    Вот раньше был проект coLinux, такое специальное ядро, которое можно было запускать под виндой и оно эффективно использовало ресурсы (в отличии от виртуальной машины, например память только та, что реально занята). Было бы здорово иметь coWindows ядро. Чтобы для всего, что выше ядра, оно было неотличимо от настоящего, а работало поверх Linux. Ну, что-то вроде теперешнего WSL.
    Можно было бы загружать рядом стоящую винду с подменой ядра и эффективным использованием ресурсов.
    Я бы винду вообще не загружал и с удовольствием пользовался только Linux. Но некоторый софт заставляет поступать иначе. Под Wine работает не всё, в виртуалке часть ресурсов уходит в никуда.
    (как-то я об этом уже писал в подобной теме. ЕМНИП, ничего конкретного не ответили)


    1. untilx
      07.06.2018 19:16

      Было несколько проектов (сходу могу только Lindows/Linspire вспомнить), но все под вопросом. А под wine никто не мешает заменить часть библиотек на оригинальные виндовые через настройки.


      1. Lsh
        07.06.2018 19:39

        А получится ли таким способом получить «винду»? Если бы всё было так хорошо, то софт от той же Adobe работал бы без проблем.

        Lindows/Linspire

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


        1. untilx
          08.06.2018 08:33

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


    1. sumanai
      07.06.2018 20:33

      и эффективным использованием ресурсов.

      Откуда оно возьмётся? Ядро винды достаточно хорошее и оптимизированное. Весь жор идёт в юзерспейсе, и этого не избежать, если нужна совместимость.
      А для запуска прог от Linux и Windows одновременно проще использовать упомянутый WSL, так как сделать совместимость с открытой ОС на закрытой проще, чем с закрытой для открытой.


      1. Lsh
        07.06.2018 20:48

        Откуда оно возьмётся?

        Я имел в виду отсутствие накладных расходов от виртуальной машины. Памяти потребялется столько, сколько надо приложениям, а не сколько выделено (да есть механизмы для решения проблемы). Нет тормозов из-за файловой системы в файле и т.п.
        проще использовать упомянутый WSL

        Это понятно. Но у меня основная причина, что винда не нравится. Чем меньше её будет, тем лучше.


        1. sumanai
          07.06.2018 20:59
          +2

          Тогда Wine. Гибридное ядро тут никак не поможет и не даст никаких преимуществ перед вином, так как основная проблема в закрытой реализации.


          1. Lsh
            08.06.2018 01:01

            Ну, может быть и так… А насколько полно wine реализует API ядра и низкоуровневых компонентов? Можно всё, что выше перенести из винды и получить более высокую совместимость, чем через просто wine?


            1. sumanai
              08.06.2018 11:08

              Переносите, но это возможно нарушает лицензию Windows, но под свою ответственность вы можете делать что угодно.


              1. Lsh
                08.06.2018 13:30

                Не всё так просто:

                Native versions of these DLLs do not work: kernel32.dll, gdi32.dll, user32.dll, and ntdll.dll. These libraries require low-level Windows kernel access that simply doesn't exist within Wine.

                wiki.winehq.org/Wine_User%27s_Guide
                Думаю, что кроме этих ещё многие настоящие dll откажутся работать.


  1. sebres
    07.06.2018 19:22

    А вот вопрос: оно у вас всё-еще древним mingw (с msys) собирается? Я собственно не про сам msys/mingw а про build-tools в нём и gcc в частности… Т.е. вот этим вот?


    $ gcc --version
    gcc (GCC) 3.4.4 (msys special)

    А то оно же и правда старое, и медлючее...


    Собирать с новыми build-tools не пробовали? Например:


    $ export PATH=/c/mingw-w64-32/bin:$PATH
    $ gcc --version
    gcc.exe (i686-win32-dwarf-rev0, Built by MinGW-W64 project) 7.3.0

    Да 7.x чуть капризнее (можно запросто UB словить где раньше не было), но зато рвёт все остальные компиляторы как тот Тузик ту грелку, особливо если O3, march=native и т.д…
    У меня в некоторых довольно больших проектах после перехода (и вычистки всех UB;) прирост скорости был 15%-30% (а местами до 50%) по performance-тестам.


    1. Extravert34
      08.06.2018 00:33
      +1

      Сейчас в официальной среде сборки (RosBE) gcc версии 4.7.2. Периодически возникают разговоры об обновлении, но пока вроде не планируется в ближайшее время.
      Есть люди, которые компилят на других версиях, в том числе и на clang, но пока официально не поддерживается. Можете прислать фикс :)

      Вообще, сейчас речь про перфоманс особо не стоит, сделать бы чтобы оно просто стабильно работало.


  1. valentinoshm
    08.06.2018 00:33
    +1

    То, как должен выглядеть Windows здорового человека