Pull to refresh

Comments 70

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

Когда не к чему придраться, придеритесь к слову.
Я собираю свой дистрибутив Linux на случай наступления Суверенного Чебурнета и опубликовал свои замечания к экосистеме Rust и преждевременному внедрению зависимостей от него.
Чем в случае наступления суверенного чебурнета ваш дистрибутив будет лучше моего любого другого?
Разрабатываемый мной дистрибутив основан на исходниках, а не бинарниках. Если есть доступ к исходникам — есть возможность накладывать патчи исправлять ошибки, добавлять новый функционал.

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

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

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

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

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

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

А обои, какие обои в вашем дистрибутиве? Они ведь нескучные?
В условиях Чебурнета не будет повода для радости и счастья.
А как же счастье от осознания себя единым народом, идущим к светлому будущему и радость от лицезрения лика Вождя на стене?
Там еще смешнее, раст назван в честь грибов, а не коррозии :) Что там грибы эти разрушают и кому мешают жить — непонятно…

Причем сохранились записи обсуждения и выбора названия, тыц.
Что там грибы эти разрушают и кому мешают жить — непонятно…

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

UFO just landed and posted this here
Ну, это все спекуляции из разряда агента Смита, про сравнение людей с паразитами и т.п. Разрушение и созидание — вопрос точки зрения. Например, с точки зрения растений зодчие по дереву истинные вредители.
UFO just landed and posted this here
Минус статье. Во-первых сам посыл весьма сомнителен. Во-вторых очень толстые пункты голосования, которые исходят из того, что на маке и винде люди про опенсорс и не слышали, а линуховоды не могут поддерживать раст.
Люди которые используют хакинтош либо пиратскую винду с пиратским антивирусом по поводу OpenSource не заморачиваются. Главное кряки под рукой иметь и серийники. Им не до компиляции из исходников.

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

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

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

Про порт я видимо думал про что-то другое, и отвлекся. Не порт, конечно же, а враппер. Порт было бы хорошо заиметь, но это ведь нереальное количество усилий необходимо. Вряд ли это возможно.
UFO just landed and posted this here
а раст действительно нельзя собрать из исходников?
Да вроде можно.
И из зависимостей только g++ и python.
UFO just landed and posted this here
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, но по каким-то причинам есть исходники.
Да собственно, какая кому разница будет в Чебурнете?
вообще говоря, конечно, как-то кривоватенько. Требование дозагрузки из интернета может весьма негативно влиять на закрытые системы. А нет бутстрапера какого либо — на сях например, который бы минимальный Rust компилятор делал бы? Которым уже можно дальше полноценный собрать…
Т.е. я могу представить людей, которые идут от двоичных кодов простейшего ассемблера, к более-менее рабочему асму, далее small-c, далее (возможно с промежуточным каким-то билдом) gcc, ну и далее везде.

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

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

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

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

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

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

То есть линукс БЕЗ rust вы можете собрать, не имея блоба компилятора? Научите меня как.
Линукс БЕЗ 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.

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

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

Открываем 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

Ой.


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

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


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

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


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

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


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

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

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

Все в ваших руках, при желании.
UFO just landed and posted this here
Окамл собрать гцц, гцц собрать с ассеммблера, ну а в ассемблер все верят.
UFO just landed and posted this here
Мы тут уже обсудили. Дальше можно взять RISC-V который тоже открытый. Ну а в конце остается только взять собственную мануфактуру где и произвести процессоры, на которых затем все это дело собирать.
UFO just landed and posted this here
И железо свое добыть, обязательно.

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

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

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

А с чего вы взяли, что бинарник закрытый? Он вполне себе открытый. Просто чтобы его собрать из открытых исходников — нужен этот бинарник. Так что если действительно половина не понимает о чём речь — то и вы в этой половине.
Что есть «открытый бинарник»? Теоретически же возможна ситуация, когда этот-самый открытый бинарник, видя, что компилирует сам себя, будет добавлять в результат компиляции закладку? Именно об этом пишет Кен Томпсон в очень старой статье статье «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 будут собираемые, но не слишком читаемые транслированные исходники на С (но это уже из разряда философии).
В моём понимании «закрытый бинарник» — это тот, для которого исходный код даже в теории недоступен. В данном же случае он в теории доступен. Насколько верно он компилируется? Ну это уже глобальная «проблема», присущая любому компилятору, rust в этом смысле ничем не примечателен.
Я вот давно уже смотрю на подобные статьи и думаю — что же с этими людьми произошло?
Вроде писал нормальные статьи, а потом резко крыша поехала и всё. Ещё такие же — Imonin и butt--head
Чем статья-то не нравится? То что минусы тролли наставили? Правда никому не нравится. Угроза того что останешься как старуха у разбитого корыта, если врубят Суверенный Чебурнет или сделают закрытый доступ к GitHub, static.rust-lang.org и Crates.IO — очень велика.

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

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

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

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

, то он и всякие компиляторы будут наименьшей проблемой. Это будет интересовать разве что работающих «на систему», превозмогая создаваемые ей сложности.
Имя языка скорее всего алегорическое, Rust — thin layer on top of the metal.
Sign up to leave a comment.

Articles