Многие компании ненавидят движение OpenSource особенно утилиты GNU и ядро Linux. Коммерческие компании выкупают OpenSource сервисы и компании. В 2018 году был получен контроль над OpenSource-компаниями GitHub, RedHat.

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

Бочка меда


В мае 2015 года состоялся выпуск первой стабильной версии компилятора Rust. Сообщество разработчиков оценили возможности нового языка и повсеместно начали переходить на него.

Mozilla Foundation с Августа 2016 года начала внедрение кода написанного на Rust в Firefox и Thunderbird в рамках проекта «Oxidation» (переводится с английского как окисление).

C Февраля 2017 года Rust стал обязательной зависимостью в Firefox и Thunderbird.

Чуть позже использовать Rust через библиотеку librsvg стали Gnome, Mate, Gimp, LibreOffice.

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

Ложка яда


Rust — переводится с английского как ржавчина. Ржавчина — вещь негативная, деструктивная.
Ржавчина разрушает металл, а не создает его. Странное название для идеального языка программирования, орудия созидания не находите!?

Как известно дьявол кроется в деталях. Посмотрим на отличительные особенности экосистемы компилятора Rust.

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

Во-вторых. В процессе самосборки компилятора и сборки программ из «исходников» происходит загрузка данных из центрального репозитория.

Следствием вышеизложенных особенностей, автономная сборка Rust по аналогии с другими программами для GNU/Linux, например в условиях суверенного Чебурнет — просто невозможна!

К чему приведет невозможность автономной компиляции?


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

Новые версии программ это не только новые баги и ошибки, но также исправление старых. Уязвимости очень часто публикуются в открытом доступе в базе данных Common Vulnerabilities and Exposures (CVE). Злоумышленники могут воспользоваться этим и причинить вам материальный и моральный ущерб.

Как бороться со ржавчиной?

  1. Бить тревогу.
  2. Не использовать зависимые от Rust версии программ.
  3. Патчить и форкать программы чтобы они не зависили от Rust.
  4. Написать альтернативную реализацию библиотеки librsvg на языке C++.

Каким будет софт будущего, FreeWare или OpenSource, зависит от тебя! Вызов брошен!

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


  1. Gorthauer87
    02.04.2019 11:34
    +13

    Первое апреля было вчера.
    А вообще слишком толсто и много манипуляций чтобы пытаться спорить.


  1. pewpew
    02.04.2019 11:40
    +6

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


    1. b0r1s Автор
      02.04.2019 11:46
      -5

      Я собираю свой дистрибутив Linux на случай наступления Суверенного Чебурнета и опубликовал свои замечания к экосистеме Rust и преждевременному внедрению зависимостей от него.


      1. SergeyMax
        02.04.2019 11:49

        Чем в случае наступления суверенного чебурнета ваш дистрибутив будет лучше моего любого другого?


        1. b0r1s Автор
          02.04.2019 11:58

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

          Также отсутствует зависимость от Интернет-репозитория. Можно дисками обмениваться, создавать свои репозитории.


          1. PsyHaSTe
            02.04.2019 12:13
            +1

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


            1. b0r1s Автор
              02.04.2019 12:18

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


              1. saipr
                02.04.2019 16:49

                В Китае нашли диски, но пока никто не знает что на них.


            1. deitry
              02.04.2019 12:20
              +1

              Распечатать исходники на золотых пластинах


          1. Jamim
            02.04.2019 13:43
            +1

            Разрабатываемый мной дистрибутив основан на исходниках, а не бинарниках.
            ок, но чем он должен быть лучше Gentoo или других source-based дистрибутивов?


            1. b0r1s Автор
              02.04.2019 15:34

              Разрабатываемый дистрибутив основан на Linux From Scratch и содержит ассистент-сервисы, упрощающие процесс сборки пакетов и выполнение команд.


          1. saipr
            02.04.2019 16:47

            Что же, удачи вам!


      1. Neikist
        02.04.2019 11:51
        +2

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


      1. Gorthauer87
        02.04.2019 12:01
        +1

        cargo vendor и еще какие то тулзы и хелперы из инфрастуктуры федоры.


      1. Oz_Alex
        03.04.2019 01:12
        +1

        А обои, какие обои в вашем дистрибутиве? Они ведь нескучные?


        1. b0r1s Автор
          03.04.2019 03:48

          В условиях Чебурнета не будет повода для радости и счастья.


          1. roscomtheend
            03.04.2019 09:41
            +1

            А как же счастье от осознания себя единым народом, идущим к светлому будущему и радость от лицезрения лика Вождя на стене?


    1. PsyHaSTe
      02.04.2019 12:40

      Там еще смешнее, раст назван в честь грибов, а не коррозии :) Что там грибы эти разрушают и кому мешают жить — непонятно…

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


      1. kahi4
        02.04.2019 16:36

        Что там грибы эти разрушают и кому мешают жить — непонятно…

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


      1. Sychuan
        02.04.2019 16:36
        +2

        Что там грибы эти разрушают и кому мешают жить — непонятно…

        Ну правды ради гриб как раз разрушают много чего. Как говорит вики «Rusts are considered among the most harmful pathogens to agriculture, horticulture and forestry. Rust fungi are major concerns and limiting factors for successful cultivation of agricultural and forestry crops. White pine blister rust, wheat stem rust, soybean and coffee rust are examples of notoriously damaging, economically important crops»
        Ну а сам Rust конечно замечательный.


        1. PsyHaSTe
          02.04.2019 16:44

          Ну, это все спекуляции из разряда агента Смита, про сравнение людей с паразитами и т.п. Разрушение и созидание — вопрос точки зрения. Например, с точки зрения растений зодчие по дереву истинные вредители.


          1. Sychuan
            02.04.2019 20:16

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


  1. PsyHaSTe
    02.04.2019 12:12
    +1

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


    1. b0r1s Автор
      02.04.2019 12:30
      -6

      Люди которые используют хакинтош либо пиратскую винду с пиратским антивирусом по поводу OpenSource не заморачиваются. Главное кряки под рукой иметь и серийники. Им не до компиляции из исходников.

      В условиях Чебурнета ценность лицензионных версий отсутсвует. Что с лицензией баги не фиксятся что с пираткой.


      1. PsyHaSTe
        02.04.2019 12:36

        Я пользуюсь виндой, которая у меня куплена, и полученной когда-то подпиской на MSVS professional. Пишу на расте опенсорс, например порт opencv cv-rs. Где тут кряки и серийники? Или я "ненастоящий шотландец"?


        1. yarston
          02.04.2019 14:05

          Какой профит от переписывания opencv на раст?


          1. PsyHaSTe
            02.04.2019 15:08
            +1

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

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


  1. vvadzim
    02.04.2019 12:14

    А где вариант — «положительно, я пользователь linux»?


  1. NickViz
    02.04.2019 12:22

    а раст действительно нельзя собрать из исходников?


    1. n0dwis
      02.04.2019 12:31

      Да вроде можно.
      И из зависимостей только g++ и python.


    1. vvadzim
      02.04.2019 12:33

      Ну вроде да. Как и gcc. Для того чтобы собрать компилятор, нужен компилятор, а он блоб.


    1. pewpew
      02.04.2019 12:33

      Rust написан на Rust, и соответственно его нельзя собрать, не имея бинарника Rust.

      Since the Rust compiler is written in Rust, it must be built by a precompiled «snapshot» version of itself (made in an earlier stage of development). As such, source builds require a connection to the Internet, to fetch snapshots, and an OS that can execute the available snapshot binaries.
      Однако, автор сильно загибает, предполагая гипотетическую ситуацию, когда он остался один во всём мире с единственным рабочим компьютером, на котором увы, нет бинарника Rust, но по каким-то причинам есть исходники.
      Да собственно, какая кому разница будет в Чебурнете?


      1. NickViz
        02.04.2019 12:42

        вообще говоря, конечно, как-то кривоватенько. Требование дозагрузки из интернета может весьма негативно влиять на закрытые системы. А нет бутстрапера какого либо — на сях например, который бы минимальный Rust компилятор делал бы? Которым уже можно дальше полноценный собрать…
        Т.е. я могу представить людей, которые идут от двоичных кодов простейшего ассемблера, к более-менее рабочему асму, далее small-c, далее (возможно с промежуточным каким-то билдом) gcc, ну и далее везде.

        В с другой стороны — и gcc собирают уже готовым блобом gcc :-)

        ну вот ozkriff уже подсказал, что вроде можно.


      1. saluev
        02.04.2019 14:00

        Зависимость компилятора от своего собственного бинарника — это плохо.

        Ken Thompson — Reflections on Trusting Trust


        1. Gorthauer87
          02.04.2019 16:08

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


          1. Psychopompe
            02.04.2019 17:07

            А можно больше деталей?


          1. Mingun
            02.04.2019 21:43

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


            1. jaiprakash
              02.04.2019 22:40

              Две последние уже с применением новых оптимизаций, их умеют все три, просто первая собрана ещё без них, и она отличается по коду, но не функционалу.


    1. ozkriff
      02.04.2019 12:35
      +1

      Можно еще вспомнить https://github.com/thepowersgang/mrustc как замену блобу компилятора для раскрутки, правда mrustc в последние версии ржавчины (пока?) не умеет, надо через много промежуточных версий будет пробутстрапиться.


  1. Jogger
    02.04.2019 13:48
    +2

    То есть линукс БЕЗ rust вы можете собрать, не имея блоба компилятора? Научите меня как.


    1. b0r1s Автор
      02.04.2019 14:06

      Линукс БЕЗ rust по инструкциям изложенным в книге LFS собирается на ура. А вот со сборкой rust обязательно возникнут проблемы:

      As with many other programming languages, rustc (the rust compiler) needs a binary from which to bootstrap. It will download a stage0 binary and many cargo crates (these are actually .tar.gz source archives) at the start of the build, so you cannot compile it without an internet connection.


      1. stetzen
        02.04.2019 14:16

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


      1. Jogger
        02.04.2019 14:49
        +5

        Я понял. Для вас если нельзя собрать по инструкции — то нельзя собрать вообще. Да, это действительно проблема. Вам остаётся надеяться что кто-нибудь напишет для вас инструкцию как собирать rust без подключения к интернету.

        Вот читаю по вашей ссылке «The LFS system will be built by using an already installed Linux distribution». То есть не имея блоба компилятора в уже установленной системе Linux — собрать линукс БЕЗ rust невозможно, даже следуя инструкции! Ужас-ужас, это не опенсорс, заговор масонов, нас хотят оставить без линукса!


      1. andreymal
        02.04.2019 15:12
        +4

        не имея блоба компилятора

        Открываем LFS и читаем:


        The LFS system will be built by using an already installed Linux distribution
        2.2. Host System Requirements
        Your host system should have the following software
        GCC-5.2

        Ой.


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


  1. Sabubu
    02.04.2019 14:48
    +1

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


    Это какая-то гуглизация (огугливание?) свободного ПО. Сегодня мы раст не можем собрать без бинарника, Хромиум не можем использовать без одобрения Гугла, а завтра нам ОС будет не установить без регистрации и полученитя ключей API в проприетарном сервисе (но, конечно, это будет хороший проприетарный сервис, а не такой как другие).


    1. MikailBag
      02.04.2019 15:04
      +4

      Нет, вполне можете. Просто вам придется пройти через сравнительно длинную цепочку.
      Сначала вы с помощью gcc собираете mrustc.
      Далее, с помощью mrustc собираете rustc 1.19
      И дальше собираете следующие версии rustc через предыдущие.


      Принципиальных отличий от сборки gcc нет.


      1. Sabubu
        02.04.2019 17:17
        +1

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


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


        1. PsyHaSTe
          02.04.2019 17:28
          +2

          Если гцц откажется предоставлять блоб гцц, то как жить с этим?


          1. iandarken
            02.04.2019 18:57

            Откатиться к паскалю, как и было изначально. И им уже собрать свой первый сишный компилятор.
            Блоб паскалевого компилятора я могу вам… wait… oh


        1. MikailBag
          02.04.2019 20:06

          По поводу российских процессоров. Насколько я понимаю архитектуру rustc, разработчики процессоров должны портировать на них LLVM, а раст заработает сам. И сборка компилятора все равно будет куда проще, чем написание качественного llvm-бэкенда.
          Ничего проприетарного в блобе нет. Вы можете взять его у любого человека с той же архитектурой компьютера и ОС. Это блоб той же природы, что и компилятор C/C++, Roslyn, CoffeeScript и так далее. Всякий раз, когда компилятор языка Х пишется на языке Х, неизбежно возникает длинная цепочка бутстрапа.


    1. PsyHaSTe
      02.04.2019 15:11
      +3

      Как альтернативный вариант с помощью OCaml собираете первые версии раста, и проходите с него всю цепочку компиляции.

      Все в ваших руках, при желании.


      1. 0xd34df00d
        02.04.2019 16:50

        А чем собрать компилятор окамля?


        1. PsyHaSTe
          02.04.2019 17:15

          Окамл собрать гцц, гцц собрать с ассеммблера, ну а в ассемблер все верят.


          1. 0xd34df00d
            02.04.2019 17:24

            А, и даже не возникает вопросов про верификацию микрокода?


            1. PsyHaSTe
              02.04.2019 17:27

              Мы тут уже обсудили. Дальше можно взять RISC-V который тоже открытый. Ну а в конце остается только взять собственную мануфактуру где и произвести процессоры, на которых затем все это дело собирать.


              1. 0xd34df00d
                02.04.2019 17:29

                Станки для мануфактуры, естественно, тоже самому произвести.


                1. PsyHaSTe
                  02.04.2019 17:31

                  И железо свое добыть, обязательно.


                  1. Mingun
                    02.04.2019 18:53
                    +1

                    Планету, планету забыли! А то вдруг железа ржавое


    1. Gorthauer87
      02.04.2019 16:11

      Манипуляция фактами, gcc абсолютно точно так-же невозможно собрать без имеющегося закрытого бинарника gcc. Фактически вы подменяете возможность бутстрапинга тем фактом, что программа обязательно должна уметь собираться при помощи gcc и если так не происходит, то о ужас печалька.
      Rust тут ведет себя строго так-же как и gcc, который при сборке обновления некоторые по три раза собирают.
      Да и тут неоднократно давали ссылку на mrust, который можно собрать с помощью gcc, а уже с помощью mrust собрать полноценный rustc.


      1. JTG
        02.04.2019 21:04

        gcc абсолютно точно так-же невозможно собрать без имеющегося закрытого бинарника gcc
        4.7 возможно


        1. Gorthauer87
          02.04.2019 21:14
          +2

          А еще его можно собрать закрытым бинврником tcc. Ну или при помощи clang. Но проблемы это не меняет


    1. Jogger
      02.04.2019 16:28
      +4

      А с чего вы взяли, что бинарник закрытый? Он вполне себе открытый. Просто чтобы его собрать из открытых исходников — нужен этот бинарник. Так что если действительно половина не понимает о чём речь — то и вы в этой половине.


      1. JTG
        02.04.2019 22:16
        -2

        Что есть «открытый бинарник»? Теоретически же возможна ситуация, когда этот-самый открытый бинарник, видя, что компилирует сам себя, будет добавлять в результат компиляции закладку? Именно об этом пишет Кен Томпсон в очень старой статье статье «Reflections on Trusting Trust»: читать исходники бесполезно, если вы не можете их понять и собственными руками транслировать их в бинарный код.

        Да, это вполне можно считать «крайне маловероятным сценарием атаки», «радикальной столлмановщиной» и т.п., но тем не менее существуют bootstrappable.org и reproducible-builds.org. Есть проекты «бутстрапа с нуля» вроде asmc или stage0, авторы которых пытаются создать тулчейн, позволяющий начать с минимального загрузчика (который действительно можно понять и набрать хоть в машинных кодах) и последовательно собирать инструменты всё возрастающей сложности, заканчивая компилятором C, способным собрать gcc 4.7, способным собрать gcc 4.7+, способным собрать что угодно*.
        * кроме Rust

        Статья «переходит на личности» в отношении Rust, однако шевеление проблемы compiler bootstrapping — хорошее и полезное дело. Оно может пригодиться, если вы делаете процессор из песка и камушков или пишете какую-нибудь Haiku OS под Байкал (не сарказм).

        P.S. mrustc описанную Томпсоном проблему «trusting trust attack» решает частично т.к., если я правильно понимаю, результатом работы mrustc будут собираемые, но не слишком читаемые транслированные исходники на С (но это уже из разряда философии).


        1. Jogger
          02.04.2019 22:56
          +1

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


  1. Oz_Alex
    03.04.2019 01:21
    +1

    Я вот давно уже смотрю на подобные статьи и думаю — что же с этими людьми произошло?
    Вроде писал нормальные статьи, а потом резко крыша поехала и всё. Ещё такие же — Imonin и butt--head


    1. b0r1s Автор
      03.04.2019 04:21

      Чем статья-то не нравится? То что минусы тролли наставили? Правда никому не нравится. Угроза того что останешься как старуха у разбитого корыта, если врубят Суверенный Чебурнет или сделают закрытый доступ к GitHub, static.rust-lang.org и Crates.IO — очень велика.

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


      1. Jogger
        03.04.2019 08:19
        +2

        Статья плоха тем, что она полна паранойи, передёргиваний и теорий заговоров. Если вопрос, как сделать оффлайн репозиторий — то это скорее на тостер. Если разобрались как, и есть готовое решение — тогда да, можно написать статью «Как перенести rust в оффлайн на случай отключения интернета». А в таком виде как сейчас — не нужна никому, кроме автора.


      1. poslannikD
        03.04.2019 09:03

        Чем статья-то не нравится? — она высосана из пальца.
        То что минусы тролли наставили — тролли писали эту статью и я уверен что они не минусовали свою статью)
        Правда никому не нравится — только в статье ее нет, начиная прям с первого предложения :)
        если врубят Суверенный Чебурнет — как старухи у разбитого корыта остануться все. А it сектор в частности здорово сдаст свои позиции, вакансии за 300$ в Москве станут верхом желания. Не секрет что основная прибыль, приходит от работы с западом, да часть компаний останется на плаву(эльбрусы, альт линуксы и им подобные, сори названий именно компаний не помню поэтому назвал продукты) Но все остальные закроются, ибо столько ит спецов сколько есть сейчас рынку снг не надо, а с другими рынками работать будет низя.
        Иначе за попытку шпионажа соединения с заграничным сервером уголовную статью впаяют. — если так боитесь этого сценария, спросите совет их есть у меня:
        1) Что бы не волноваться, закуриваете астру или беломорканал. Пыхаете пару колечек дыма.
        2) Жену, детей, родителей, внуков, правнуков, сестру и брата дислоцируете в гараж.
        3) Снимаете с вешалки давно пылившиеся ключи.
        4) Двигаете в гараж к родне.
        5) Расчехляете транспартное стредство.
        6) Вставляете ключики.
        7) Заводите.
        8) Пересекаете границу
        9) Оборачиваетесь назад.
        10) Делаете жест ручкой, вытираете сопли о березку.
        11) Глушите трактор возле серверов, линукса, раста ну по вкусу.
        12) Разбиваете палатку
        13) И живете без всяких угроз.


      1. roscomtheend
        03.04.2019 11:30

        > Правда никому не нравится.

        Правда в том, что подобное высказывание — ложно.

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

        > если врубят Суверенный Чебурнет

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