Разработчики анонимной сети Tor представили выпуск проекта Arti 0.2.0, развивающего Tor-клиент, написанный на языке Rust. Проект имеет статус экспериментальной разработки, отстаёт по функциональности от основного клиента Tor на языке Си и пока не готов полноценно заменить его. В сентябре планируется сформировать выпуск 1.0 со стабилизацией API, CLI и настроек, который будет пригоден для начального использования обычными пользователями. В более отдалённом будущем, когда код на Rust достигнет уровня, способного полностью заменить вариант на Си, разработчики намерены придать Arti статус основной реализации Tor и прекратить сопровождение реализации на Си...Подробнее: https://www.opennet.me/opennews/art.shtml?num=56966
Маркетологи и тут поспели
"Rust также даст возможность добиться более высокой скорости разработки, чем при использовании Си, за счёт выразительности языка и строгих гарантий, позволяющих не тратить время на двойные проверки и написание лишнего кода."
Лохотрон.
Я думаю, надо написать аналог STL на си и назвать его Rust.
Туговато у растаманов идёт процесс:> планируется добиться паритета с основной реализацией на языке Си в таких областях, как сетевая производительность, нагрузка на CPU и надёжность
производительность, нагрузка на CPU и надёжность... Раст не может по этим параметрам опередить Си!
> Туговато у растаманов идёт процесс:Зато процесс подгорания у опеннетных оналитегов хорошо пошел!
>> планируется добиться паритета с основной реализацией на языке Си в таких областях, как сетевая производительность, нагрузка на CPU и надёжность
> производительность, нагрузка на CPU и надёжность... Раст не может по этим параметрам опередить Си!Опеннетный оналитег прочитал "планируют добиться" как "не может", еще и "надежность" (в оригинале там resilience) приплел зачем-то.
Видимо, пламя праведной ярости в одном месте не очень способствует внимательному чтению ...
может и может но не в первый год разработки же.
Взять любой другой крупный проект-долгожитель: FF, редох... Они все в каком-то тормознуто-брошенном состоянии.
А может только что сделанная реализация не может?
у вас не получится сделать Standard Template Library на Си, ведь в нем нет обобщенного программирования.можете попробовать накостылить на препроцессоре
*standard TEMPLATE library
А вдруг, в какой C2x добавят обобщённое программирование.
> можете попробовать накостылить на препроцессорепытался я (недо)лисп накостылить на препроцессоре... неполучилось, но, думаю, при особом желании (почти) возможно.
Если бы были маркетологи - выбрали бы название получше, с таким как сейчас - не взлетит.
Да ладно, сколько лишних проверок на null делается в си программах из-за отсутствия нормальных optional?
нормальный человек: asserts, asserts everywhere
эксперт опеннета: я же не как все, мой код всегда корректный
А толку от ассерта, если он или прогу роняет, или ничего не делает. В дебаге ты все кейсы не проверишь, в релиз - не потянешь. Все равно придется делать проверки.
> В дебаге ты все кейсы не проверишьЗначит в конторе большие проблемы с тестированием. Но в любом случае я согласен, что в наше время начинать новый проект на сяшке - надо иметь очень сильные аргументы за.
> сколько лишних проверок на nullНекоторые умные компиляторы, в том числе бекенды в виде llvm, умеют оптимизировать лишние проверки.
> optional
И сколько лишних приседаний делаешь, чтобы использовать этот optional? Unwrap на unwrap'е и unwrap'ом погоняет?
Использование optional не сокращает количество кода.
Так если unwrap то тоже будет panic, а так проверки никуда не деваются Option<T>
> умеют оптимизировать лишние проверки.Ага, но там только есть некая вероятность что компилятор сможет "догадаться" что вход никогда не будет пустой и это можно оптимизировать и зависит от версии компилятора, фазы луны, может быть флагов, структуры написанного кода.
> Использование optional не сокращает количество кода.
Не правда. "if (a == null) { }" очень мало отличается по длине от "if let Some(i) = number { }"
А unwrap добавляет всего одно слово. Да, он будет паниковать и это редко нужное решение - лучше правильно захендлить ошибку.Но если у тебя есть группа функций, преобразовывающих один объект, напр. строку, которые могут вызываться как по отдельности, так и в виде цепочки вызовов, то в си тебе придется в каждой функции делать проверку входной строки. Просто потому что ты не знаешь в каком порядке их вызовут. Ну или писать в доке "обязательно проверьте что вход не null" и обязательно найдется тот, кто это не сделает.
А тут ты делаешь параметры всех функций non-optional и проверка нужна только ОДНА в любом случае - что перед вызовом одной функции, что перед вызовом цепочки из 100500 функций.
Причем это не какая-то особая фишка раста, нормальные optional есть в kotlin, swift и других языках.
Вот из-за этого "всего одно слово" паскакаль и его наследники и не взлетели. Словоблудие и скорость разработки - вещи несовместимые.
А ещё, где-то вовремя забытый unwrap даёт ошибку компиляции, дописывание и по кругу, т.к. где-то забыт ещё один. :)
Э... Я надеюсь это у тебя юмор такой.Забытый unwrap (как и лишний) действительно даст ошибку компиляции. И программист пойдет и исправит ее. Причем еще до того как пушнет этот код куда-то. Эта ошибка никогда не дойдет до пользователя.
А забытая проверка на null так и останется забытой проверкой на null. Пока не найдется во время очередной CVE, и все будут думать "ну как же так случилось, любой настоящий погромист знает что нужно проверять входные данные!"
Рантайм паникам раста это все расскажете
>> Забытый unwrap (как и лишний) действительно даст ошибку компиляции. [будет ошибка значения типа]
> Рантайм паникам раста это все расскажетеА тебе, не знающему матчасть, но ценное мнение имеющему, что сказать?
> в си тебе придется в каждой функции делать проверку входной строки. Просто потому что ты не знаешь в каком порядке их вызовутА ну-ка покажы, где так делают? Для неокрепших умов мисрой обмазываться -- это как ницше читать.
И большая их часть удаляется оптимизатором если он может доказать что проверка бесполезная
> планируется добиться паритета с основной реализацией на языке Си в таких областях, как ...
> ... надёжность, а также обеспечить поддержку всех возможностей, связанных с безопасностью.Иногда сигара - просто сигара
> половина всех отслеживаемых проектом уязвимостей будет исключена в реализации на Rust, если в коде не используются блоки "unsafe"Опять "если"... А потом добавят половину ошибок в виде перепутанных больше-меньше знаков, как было в FF при ручной проверке индекса массива.
>> половина всех отслеживаемых проектом уязвимостей будет исключена в реализации на Rust, если в коде не используются блоки "unsafe"
> Опять "если"... А потом добавят половину ошибок в виде перепутанных больше-меньше знаков,
> как было в FF при ручной проверке индекса массива.Опять опеннетная экспердиза - очередной опеннетный эксперд уверен, что перепутать больше-меньше на си невозможно, да и вообще, код будут писать те же самые люди.
Экспердам бы взять, да показать на труЪ-ЯП, как нужно правильно, но ведь не экспердное это дело, реальный код писать - кто же тогда ценные указания для разработчиков в комментах строчить будет?
> очередной опеннетный экспердТы внеочередной?
>> очередной опеннетный эксперд
> *громкое возмущенное попупивание*И опять опеннетные Эксперд написал 0 по теме и проигнорировал неудобные вопросы ...
Сам-то сколько написал по теме, внеочередной?
На сишечке легко перепутать = и ==
После Паскаля очень раздражало.
К счастью в С++-- (оно же java) решили эту проблему, оставив си пробный синтаксис
>Arti изначально развивается в форме модульной встраиваемой библиотеки, которую смогут использовать различные приложения. Кроме того, при разработке нового проекта учитывается весь прошлый опыт разработки Tor, что позволит избежать известных архитектурных проблем, сделать проект более модульным и эффективным.Если учитывать этот опыт, то можно написать лучшую реализацию на любом языке, хоть на том же Си с нуля писать.
>как минимум половина всех отслеживаемых проектом уязвимостей будет исключена в реализации на Rust, если в коде не используются блоки "unsafe".
Это в теории, но на практике ведь всё равно будет: ехал unsafe через unsafe...
Потому что накладные расходы.
Про накладные расходы, которых нет, см.
https://www.opennet.me/openforum/vsluhforumID3/127107.html#72
Откуда вы хейтеры раста выползаете?
Уверен, что все кто осилил на расте более чем Хелло Ворлд будет как минимум
нейтрально относиться к языку как к альтернативе c/cpp как к тому же питону,
хотя пример не совсем тот.
Ну смотри, что сами растаманы пишут:> планируется добиться паритета с основной реализацией на Си в таких областях, как сетевая производительность, нагрузка на CPU и надёжность
Понимаешь, когда растаманы бросаются на задачу, у них сразу идёт потеря надёжности и производительности, да ещё нагружают проц больше. Зато на расте!
...и потом героически пытаются догнать код на Си десятилетиями. Ведь опыт попытки разработки FF в Мозиле, а также своей редох их ничему не научил.
> Ведь опыт ... их ничему не научил.Как не научил? Теперь сразу с ходу без опыта лезут, например, отсутствующими драйверами в ядро linux.
Не может ли тут иметься ввиду, что до мажорного релиза, как и на Си и на любом языке - это всего лишь первичный рабочий набросок? Тогда всё становится на места и возвращается логика в этот мир.Ни одна программа не пишется с наскоку оптимизированной, очевидно. Указана же весия минорная. Раст, как и любой иной язык, - не залог де-факто всяких оптимизаций. Так напасть и сожрать с говном можно всех и вся, смысла 0.
> Ни одна программа не пишется с наскокуНо тут есть готовая, отлаженная, надёжная, быстродействующая программа на Си... Где же тут "наскок"?
>> разработчики намерены придать Arti статус основной реализации Tor и прекратить сопровождение реализации на Си.
> Но тут есть готовая, отлаженная, надёжная, быстродействующая программа на Си... Где же тут "наскок"?И опять опеннетные эксперды лучше разрабов знают, что и как им нужно делать (правда, опять совершенно не готовы показать в реальности, личным примером) ...
> идёт потеря надёжностиТебе уже написали, что там в оригинале не "надежность" (переведенная надмозгом), а "устойчивость" (resilience). Чувствуешь разницу? А строчки из статьи, где говорится о том, что "как минимум половина всех отслеживаемых проектом уязвимостей" канет в лету, ты старательно игнорируешь? Минус половина ошибок - это понижение надежности программы? Опять же, строчку "В качестве причин переписывания Tor на Rust называется желание добиться более высокого уровня защищённости кода..." ты также старательно игнорируешь?
> называется желаниеУвы, как показала практика, одного желания растаманов - мало. FF - бросили, редох - бросили, вот сейчас желают дрова сразу в ядро линуха писать...
> Увы, как показала практика, одного желания растаманов - мало. FF - бросили,
> редох - бросили, вот сейчас желают дрова сразу в ядро линуха писать...Увы, как показала практика, опеннетная оналитека - никудышняя.
https://gitlab.redox-os.org/redox-os/redox/-/commits/master
> 05 Apr, 2022 1 commit
> Update relibc
> Jeremy Soller authored 6 hours ago
> relibcРугают Си, но без него не могут.
Бла, бла, бла, бла, бла... Хейтеры судорожно цепляются за соломинки, лишь бы дотянуться и плюнуть в лицо растоманам, даже если сами упадут в пропасть.
> лишь бы дотянуться и плюнуть в лицо ...... в сторону Си. И этим здесь в каждой новости занимаются фанатики Раста.
>> relibc is a portable POSIX C standard library written in Rust. It is under heavy development, and currently supports Redox and Linux.
>> The motivation for this project is twofold: Reduce issues the redox crew was having with newlib, and create a safer alternative to a C standard library written in C.
> Ругают Си, но без него не могут.Какой громкий, возмущенный пук! А сказать-то что хотел? Или как обычно - увидел знакомую букву?
> C standard library written in RustВот именно! Ругаем Си, но пишем и используем.
>> C standard library written in Rust
> Вот именно! Ругаем Си,Пруфец давай, где Джереми ругает Си. Или балабол?
> но пишем и используем.И где именно там, помимо тестов, "пишется и используется" Си, балабол?
> Пруфец давай, где Джереми ругает Си.Пруфец давай, где я писал про Джереми. Или опять поскакал?
Под "вами" я имел в виду фанатиков, которые пишут новости, в которых 3 абзаца идет восхваление Rust, и насколько C плохой.
> И где именно там ... "пишется и используется"?
Вообще-то, это было сказано про вас, фанатиков. Скомпилируй "hello world" и покажи ldd.
Где твой пруф? Я с ходу нашел опровержение https://github.com/redox-os/relibc/tree/master/src/c
>> Update relibc
>> Jeremy Soller authored 6 hours ago
> Ругают Си, но без него не могут....
>> Пруфец давай, где Джереми ругает Си.
> Пруфец давай, где я писал про Джереми. Или опять поскакал?Юли, балабол, юли ...
> Под "вами" я имел в виду фанатиков, которые пишут новости, в которых
> 3 абзаца идет восхваление Rust, и насколько C плохой.Т.е. ты цитировал одно, а отвечал сам себе, имея в виду свои фантазии (ведь ссылку на такую нововсть мы не увидим, не так ли) или диалог с самим собою? Понятно.
>> И где именно там ... "пишется и используется"?
> Вообще-то, это было сказано про вас, фанатиков. Скомпилируй "hello world" и покажи ldd.хелло чего и куда, балаболка? Наш диалог в твоей голове мне не доступен, если что.
> Где твой пруф? Я с ходу нашел опровержение https://github.com/redox-os/relibc/tree/master/src/c
Ты - балабол, который опять видел знакомую букву, но дальше заголовка не заглядывал:
https://github.com/redox-os/relibc/commit/ee40035c4b1932db31...
int vasprintf(char ** strp, const char * fmt, va_list ap);...
#[no_mangle]
pub unsafe extern "C" fn vasprintf(strp: *mut *mut c_char, format: *const c_char, ap: va_list) -> c_int {
let mut alloc_writer = platform::AllocStringWriter(ptr::null_mut(), 0);
> Ты - балабол, который опять видел знакомую букву, но дальше заголовка не заглядывал:К себе примени! А остальные функции, особенно безопасная работа с памятью в 'dlmalloc.c'?
>> Ты - балабол, который опять видел знакомую букву, но дальше заголовка не заглядывал:
> К себе примени! А остальные функции, особенно безопасная работа с памятью в 'dlmalloc.c'?Твой игнор "неудобных вопросов" и юлеж уныл, "применитель".
https://github.com/redox-os/relibc/blob/6b46704ac35626ffa74d...
#[cfg(not(feature = "ralloc"))]
#[path = "allocator/dlmalloc.rs"]
mod allocator;#[cfg(feature = "ralloc")]
#[path = "allocator/ralloc.rs"]
mod allocator;
https://github.com/redox-os/ralloc
> A fast & memory efficient userspace allocator.
> This allocator is used as the default Redox.
Platforms supported out-of-the-boxx BSD
x Linux
Mac OS X
x Redox
Windows
Опять поскакал на частности/особенности.
Остальные функции на чем написаны?> mod.rs
Еще одня "фишка" пакетной системы cargo: писать расте сборку и компоновку, чтоб другим неповадно было.
> особенно безопасная работа с памятью в 'dlmalloc.c'?
> Опять поскакал на частности/особенности.Сам проигнорил все вопросы, сам скатился на частности, сам обвинил ... красава!
> Остальные функции на чем написаны?Для туповатых недовбросчиков перевожу: по умолчанию dlmalloc не применяется, применяется ralloc.
Да, маководы и вендузятники не в приоритете и будут привычно страдать.
По остальным - тебе предложили ссылку на историю коммитов на твое "опровержение", где прекрасно видно, как добавлялась реализацию на ржавчине одновременно с си-интерфейсом - если это не просто тупая обертка на сисколом. Или ты на полном серьезе хочешь рассказать, чтоint open(const char* filename, int flags, ...) {и есть "реализация"?
mode_t mode = 0;
va_list ap;
va_start(ap, flags);
mode = va_arg(ap, mode_t);
va_end(ap);
return sys_open(filename, flags, mode);
}>> mod.rs
> Еще одня "фишка" пакетной системы cargo: писать расте сборку и компоновку, чтоб другим неповадно было.Да-да, нужно обязательно тянуть плюсы и/или питончик и свой, нескучный DSL сборщика ...
> Сам проигнорил все вопросыВот именно ты проигнорил главный вопрос: почему программы на rust линкуются c libc, вед Си - это небезопастно?
> Сам проигнорил все вопросы, сам скатился на частности, сам обвинил ... красава!
Ты начал с утверждения, что "небезопастный" Си не используется, от слова совсем.
Мне достаточно показать, что есть хоть одна строчка на Си, достаточно даже частности.> есть "реализация"?
Я говорил про "реализацию"? Опять приписываешь свои слова?
>> Еще одня "фишка" пакетной системы cargo
> Да-да, нужно обязательно тянуть плюсыЧто, средство быстрой разработки Delphi, ой, Rust не позволяет быстро написать человекочитаемый DSL для пакетов?
>> Сам проигнорил все вопросы
> Вот именно ты проигнорил главный вопрос: почему программы на rust линкуются c libc, вед Си - это небезопастно?Вопрос из "нашего" диалога в твоей голове? Может быть.
> редох - бросили
>> 05 Apr, 2022 1 commit
> Ругают Си, но без него не могут....
> Ты начал с утверждения, что "небезопастный" Си не используется, от слова совсем.Ты опять несешь бред и приписываешь свои фантазии мне?
> Мне достаточно показать, что есть хоть одна строчка на Си, достаточно даже частности.
Для подверждения собственных фантазий тебе достаточно собственных фантазий, а вот подтверждения
> Вот именно! Ругаем Си, но пишем и используем.как не было, так и нет. Зато стало понятно, что ни в сишку, ни в системную разработку ты не умеешь, раз начал докапываться к сишке в заголовочно-интерфейсных файлах либы ДЛЯ использования из сишки ... Непонятно только, почему тогда у тебя так подгорает.
>> есть "реализация"?
> А остальные функции, особенно безопасная работа с памятью в 'dlmalloc.c'?
> Остальные функции на чем написаны?
> Я говорил про "реализацию"? Опять приписываешь свои слова?Ты решил опять спрыгнуть в демагогию или вообще не владеешь терминологией?
>>> > Еще одня "фишка" пакетной системы cargo: писать расте сборку и компоновку,
>> Да-да, нужно обязательно тянуть плюсы
> Что, средство быстрой разработки Delphi, ой, Rust не позволяет быстро написать человекочитаемый DSL для пакетов?Вообще-то был намек на CMake/Ninja/Gyp/Meson итд, но тыж "неразработчик".
Да и внятно ответить на вопрос, в чем профит придумывать для сборки проектов на Rust отдельный DSL ты вряд ли сможешь, опять переобуешься в прыжке.
> тыж "неразработчик".Как скажешь.
На остальное отвечать не буду. Ты со своей "терминологией" во всем прав.
Вам, хейтеркам, не угодишь: используешь сишный код или API - "ааа, лохи, не могут без C"; переписываешь всё с нуля - "ааа, дебилы, делать им нечего, лишь бы переписать на хрусте". Такое ощущение возникает, будто вы занимаетесь демагогией из-за избытка свободного времени. Впрочем, это же Опеннет, рассадник школоты с тяжёлой формой синдрома "кулхацкер головного мозга" - когда принципиально пишешь на C, но только лабы и свои наколенные поделки, при этом рассуждая в комментах о том, как это идеально делать (хотя, даже ядрёные разрабы Linux не умеют и косячат), и о идеалах Unix, которые застряли в 80x, когда компы и софт были простые, как две копейки.
> Вам, хейтеркам, не угодишьНа себя посмотрите. В каждой новости хейтите Си по 3 абзаца.
Какая ожидается реакция на таких беспардонных хейтеров?
А вот и демагогия уровня детского сада подъехала: "Нет, не я дурак, а ты!"
> демагогия уровня детского садаУровень демагогии соответствует твоей. Свое сообщение прочитай
>Откуда вы хейтеры раста выползаете?примерно половину коментариев к этой новости сделал троль Аноним (12) замусоривший всю тему своими толстыми вбросами на тем того какой rust плохой.
А администрация замечание об этом удалила, а его толстоту оставила.
Мне кажется здесь всего несколько человек ненавидят rust, но из-за того что они почти целеком замусоривают темы создается впечатление что весь opennet его ненавидит.
>>Откуда вы хейтеры раста выползаете?
> примерно половину коментариев к этой новости сделал троль Аноним (12) замусоривший всю
> тему своими толстыми вбросами на тем того какой rust плохой.
> А администрация замечание об этом удалила, а его толстоту оставила.
> Мне кажется здесь всего несколько человек ненавидят rust, но из-за того что
> они почти целеком замусоривают темы создается впечатление что весь opennet его
> ненавидит.Никто не ненавидит RUST как язык программирования - но западная тенденция на лицо. Растоманов спрашивают - обьективно, как вы собираетесь превзойти язык программирования на котором РАСТ изначально написан. Так не бывает - это "перпетум мобиле"... А в ответ - вы все ниче не понимаете, вы нам должны поверить на слово, раст лучше всех. В итоге ненавидят не сам язык а "баранов" ведущих себя как я раньше написал.
А тенденция просматривается, это как будто болезнь. Выходит текущий президент США и говорит - во всех проблемах в США - ВВП виноват. Люди с обьективным/адекватным складом мышления - естественно задают вопрос - "Почему? Вы можете это как-то обосновать?" и тут в их сторону летит - "Вы пособник ВВП, разрушаете нашу страну и т.п.". Растоманы ведут себя абсолютно идентично.
> Никто не ненавидит RUST как язык программирования - но западная тенденция на
> лицо. Растоманов спрашивают - обьективно, как вы собираетесь превзойти язык программирования
> на котором РАСТ изначально написан.OCaml?
Давно уже "превзойден":
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...> Так не бывает - это "перпетум мобиле"... А в ответ - вы все ниче не понимаете, вы
У прогулявших компиляторостроение - все может быть. Зато политоту и кучу фантазий приплел ...
Компилятор rust сначала был написан на OCaml
> Компилятор rust сначала был написан на OCamlНу хорошо, давай пойдем к корням....
А пошли. Компилятор Rust был написан на OCaml, тот на C, тот на B... бла бла бла... на ассемблере -> на машинных кодах -> на логических элементах -> на транзисторах -> на атомах -> на кварках -> на квантовых полях. Короче, кто разрабатывает не на квантовых полях - лох и слабак.
>А пошли. Компилятор Rust был написан на OCaml, тот на C,Точно на Си? не на Algol или Fortran который любят ученые, не на ассемблере? Не методом раскрутки компилятора?
А что с корнями OCaml? Расскажите?
>The first implementation of Caml appeared in 1987 and was further developed until 1992. It was created mainly by Ascander Suarez. After Ascander left in 1988, Pierre Weis and Michel Mauny, carried on with the development and maintenance of the system. This implementation compiled Caml down to LLM3, the virtual machine of the Le_Lisp system.Тоесть первый компилятор Caml в Lisp транслировал.
В каком там году лисп вручную на перфокартах компилировали ищите сами
>В итоге ненавидят не сам язык а "баранов" ведущих себя как я раньше написал.
>А тенденция просматривается, это как будто болезнь.Болезнь opennet это его эксперты
Лечиться отключением комментариев
Господа а ТОР у всех робит? На 5% (connecting to a relay или что-то такое) не затыкается?
В России то? Боюсь мало у кого он тут работает.
Тор - как неуловимый Джо :)
На проводном доступе робит, через Полосатолайна и Громкоговорящего - нет.
> Господа а ТОР у всех робит? На 5% (connecting to a relay
> или что-то такое) не затыкается?Товарищи майоры из РКН уже 4 месяца назад как заблокировали https://www.opennet.me/opennews/art.shtml?num=56303
Попробуй им через западный почтовик, вроде Gmail, написать письмо с телом `get bridges` на bridges@torproject.org
Спасибо. Про мосты в курсе, просто не был уверен что в роском321ах дело. Новость пропустил...Странноватые способы получения конечно, особегно телега забавляет. Но попытаемся.
Пробовал несколько разных мостов менять при доступе через сеть мобильных операторов, не получается.
> через западный почтовик, вроде Gmail, написать письмоАнонимная сеть, говорили они :)
Работает, только бриджы нужно в конфиг добавить. В linux еще приходится таймером перезагружать юнит каждые 30 минут, иначе, походу, в периоды неактивности бридж разрывает подключение, не разобрался детально
Спасибо, учту.
А не проще по таймеру что-нибудь через тор гонять? Да и восстанавливает соединения он сам...
>Проект имеет статус экспериментальной разработки, отстаёт по функциональности от основного клиента Tor на языке Си и пока не готов полноценно заменить его.Все что нужно знать о прожектах на Rust.
>>Проект имеет статус экспериментальной разработки, отстаёт по функциональности от основного клиента Tor на языке Си и пока не готов полноценно заменить его.
> Все что нужно знать о прожектах на Rust.Все что нужно знать о знаниях разработки местных оналитегов.
Передаю привет сотрудникам АНБ разработавшим этот большой бэкдор под названием Rust. Основная проблема безопасности rust это сложная система зависимостей с его cargo. Зависимости тянут бесконечно свои зависимости, которые в крупных проектах не возможно отследить, а так же просто так исправить в них ошибки без обращения к хозяину пакета, и пока он не обновит свой пакет. Так же все усугубляет то, что в одном проекте могут быть разные версии одной и той же библиотеки для разрешения зависимостей всех засимостей!
И более того - все это под колпаком фаундейшна состоящего из майкрософта, гугла и амазона.
С Cargo проблем нет.
Вы можете:
- писать без зависимостей (ну... удачи)
- добавлять зависимости непосредственно как параметры компиляции в вызов rustc
- использовать toml, но ссылаться на свой git репозиторий или вообще на локальный путь
- можно форкать нужные либы и ссылаться уже на свои репозетории
- создать свой private registry и работать с ним (удобно когда есть много общих внутренних либ)
- фиксировать версии на чужие пакеты и проверять что в них поменялось перед обновлениемКак-то так. Нужно всего-лишь почитать доку https://doc.rust-lang.org/cargo/
С dependency тут дела обстоят лучше чем в с/с++ - тут хотя бы есть удобный способ, но при этом не убраны все остальные варианты.А АНБ нужно вначале сказать спасибо за DebianPackages. Бесконечные зависимости которые обновлял неизвестно кто и неизвестно зачем для любого крупного проекта.
> фиксировать версии на чужие пакеты и проверять что в них поменялось перед обновлениемВый действительно будете это делать и проходить по зависмостям своих зависимостей?
Или притворяетесь?
Разработчики на Си используют то что идет в пакетах дистрибутивов linux.
Ничего не мешает делать так же для крейтов.
> Ничего не мешает делать так же для крейтов.Которые навасянили и забили?
Из поймойки?
А сколько наколенных сишных либ не попадает в дистрибутивы, ты думал? Или сишники пишут только хорошие и полезные либы, словно герои мифов? Разумеется, в репы дистра должны попадать только стабильные либы с мейнтенерами. И не из помойки, а из гитовых реп, как у всех в 2022 г. Кстати, crates.io никто не заставляет использовать.Впрочем, жить в мире розовых пони при таком обилии и простоте доступа к информации - это осознанный выбор, поэтому никому ничего я всё равно не докажу. Нормальные программисты пишут код на C, C++, Rust, Haskell, Python, Java - да хоть на Pascal, прости господи - лишь бы выполняло задачи, а дурачки в розовых очках создают себе идолов и моляться им до синяков на лбу, при этом считая себя умнее всех остальных. Ну и стагнируйте дальше в своём болоте. На работу таких, как вы, никто брать не захочет, а сами вы ничего не создаёте, кроме срача на ровном месте.
> И не из помойки, а из гитовых реп, как у всех в 2022 г. Кстати, crates.io никто не заставляет использовать.Но любая полезная библиотека лезет в помойку по своим зависимостям. Опакечивать все это самому - нереально.
> Ну и стагнируйте дальше в своём болоте. На работу таких, как вы, никто брать не захочет, а сами вы ничего не создаёте, кроме срача на ровном месте.
Э... Плохой из тебя телепат.
И да, мне интересно, когда этот момент наступит: "брать не захочет".
> Но любая полезная библиотека лезет в помойку по своим зависимостям. Опакечивать все
> это самому - нереально.Опакечивать будут мейнтейнеры дистра, а не вы.
> И да, мне интересно, когда этот момент наступит: "брать не захочет".
Простите, погорячился. Конечно же, всегда найдётся работодатель, для которого иррациональные убеждения работника в сфере технологий не имеют значения, как и уровень его компетенции.
> Разработчики на Си используют то что идет в пакетах дистрибутивов linux.Занятные фантазии ...
> Занятные фантазии ...Покажи программу на Си, которая идет без опакеченных зависимостей?
Ж:)
Понятно что это упрщение, но суть ясна. Если библиотеки нет в дистрибутивах linux, то что бы ее использовать тебе придется самому эту библиотеку опакечивать. И тут уж выбирай, что лучше.
> Разработчики на Си используют то что идет в пакетах дистрибутивов linux....
> Покажи программу на Си, которая идет без опакеченных зависимостей?
> Ж:)А теперь - занятная подмена понятий и немного демагогии (<- естественно, в репу не будут включать лишь часть софта, без необходимых зависимостей).
И че там с deadbeef зависимостями в дебиане?> Понятно что это упрщение, но суть ясна. Если библиотеки нет в дистрибутивах
> linux, то что бы ее использовать тебе придется самому эту библиотеку опакечивать. И тут уж выбирай, что лучше.Не, суть претензий - не ясна.
https://packages.debian.org/bullseye/ripgrep
> This package contains the following binaries built from the Rust crate "ripgrep":http://deb.debian.org/debian/pool/main/r/rust-ripgrep/rust-r...
Build-Depends: debhelper (>= 11), dh-cargo (>= 18), cargo:native, rustc:native, libstd-rust-dev, librust-bstr-0.2+default-dev (>= 0.2.12-~~), librust-clap-2+suggestions-dev (>= 2.33.0-~~), librust-grep-0.2+default-dev (>= 0.2.7-~~), librust-grep-searcher+default-dev (>= 0.1.3-~~), librust-ignore-0.4+default-dev (>= 0.4.16-~~), librust-lazy-static-1+default-dev (>= 1.1.0-~~), librust-log-0.4+default-dev (>= 0.4.5-~~), librust-num-cpus-1+default-dev (>= 1.8.0-~~), librust-regex-1+default-dev (>= 1.3.5-~~), librust-serde-json-1+default-dev (>= 1.0.23-~~), librust-termcolor-1+default-dev (>= 1.1.0-~~), asciidoc, bash-completion, xsltproc, docbook-xsl
Он статически линкуется?Тогда вообще о чем речь? Если кто-то захочет опакечивать - пусть опакечивает.
После обновления каждой из зависимостей. А то незакрытые дыры приводят к удалению из репозитария.И да. Что ты этим постом сказать-то хотел?
> Разработчики на Си используют то что идет в пакетах дистрибутивов linux....
> Тогда вообще о чем речь? Если кто-то захочет опакечивать - пусть опакечивает.ЯННП, поясни - это "Нищитаица! Это другое!™" или просто переобувание в прыжке?
> И да. Что ты этим постом сказать-то хотел?Как ты ловко проигнорировал кучу librust-* зависимостей (очевидно, тоже опакеченных) дебиановского пакета ripgrep и всякие неудобные для твоей "теории" замечания типа "естественно, в репу не будут включать лишь часть софта, без необходимых зависимостей)."
Бла бла бла... Просто не использовать зависимости не пробовал? Прикинь, так можно. Но вот у C и C++ всё, конечно, куда лучше - та же самая куча чужого говнокода, только прибивать его гвоздями к проекту нужно вручную. Это, разумеется, добавляет очень много очков безопасности, даже если не читал исходники. Почему? А потому что. Потому что не Rust, так опеннетный эксперт по безопасности сказал.
> В качестве причин переписывания Tor на Rust называется желание добиться более высокого уровня защищённости кода за счёт использования языка, обеспечивающего безопасную работу с памятью.
> Наиболее заметные изменения в выпуске 0.2.0 связаны с работой по повышению производительности и надёжности.Странный выбор языка.
Те кому истинно важны безопасность, надежность и производительность выбирают SPARK.
> Странный выбор языка.
> Те кому истинно важны безопасность, надежность и производительность выбирают SPARK.Ага. Отчего же на нем не пишут драйвера для линукса?
И что на нем вообще написано, кроме софта для авионики?