LINUX.ORG.RU

Хочу начать изучать Rust, отговорите

 


1

1

Пока что останавливает вот что:

  1. Слышал, что у Rust плохой компилятор, который выдаёт медленный код
  2. Размер конечных бинарей гораздо больше, чем у православной сишечки
  3. Полная зависимость от интернета
  4. Rust пропихивается в изначально сомнительные проекты (вроде systemd)
  5. UB замаскированы под unsafe

С 1 всё более-менее понятно - у сишки и крестов достаточно подобрать компилятор, чтобы было быстро, а у раста он один. А что с остальными пунктами? Можно ли уменьшить размер конечных бинарей?

Средней тонкости наброс

anonymous
()
  1. Не совсем. Компилятор раста это фронтенд к LLVM, так что скорость хорошая – но благодарить за это нужно исключительно LLVM.
  2. Да, это так.
  3. В теории можно делать cargo vendor и все зависимости указывать через локальный путь. На практике этим мало кто заморачивается.
  4. Толсто.
  5. Толсто.

Байт плохой, старайся лучше.

Siborgium ★★★★★
()

UB замаскированы под unsafe

падажжи, как это так замаскированы, когда как раз наоборот явно отмечены как unsafe? а в сях как раз замаскированы, нужно знать, что делаешь

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

Байт плохой, старайся лучше.

Это, да.
Мыслят байтами и хотят на основе их ИИ разработать.
А бай то давно устарел …

anonymous
()

Хочу начать изучать Rust, отговорите

И не подумаю.

Korchevatel ★★★★★
()

Хочу начать изучать Rust, отговорите

Не занимайся ерундой.
Лучше семечками торговать на базаре …

Не благодари.

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

А байт то давно устарел …

Пару месяцев крепенько придется байты анализировать и тасовать туда сюда … /на C++/

anonymous
()

Не изучай раст.

Не за что.

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

Наброшу …

Очень медленная компиляция.

Вдумчивая?

anonymous
()

Rust пропихивается в изначально сомнительные проекты (вроде systemd)

Rust пропихивается в изначально сомнительные проекты (вроде systemd, Linux kernel, tor, Firefox)

hakavlad ★★★
()

UB замаскированы под unsafe

Толсто.

hakavlad ★★★
()

UB замаскированы под unsafe

А в Си UB замаскирован под весь код Си.

hakavlad ★★★
()

Полная зависимость от интернета

Не полная. Можешь купить в магазине диск с компилятором и кодить без интернета, а собирать проекты без участия cargo.

А компилятор C откуда скачиваешь? В магазине оффлайн покупаешь?

hakavlad ★★★
()

Итого: 1. Толсто. 3. Толсто. 4. Толсто. 5. Толсто.

hakavlad ★★★
()
Последнее исправление: hakavlad (всего исправлений: 3)

Можно ли уменьшить размер конечных бинарей?

  1. Не забывай делать strip

  2. upx --best --lzma rust_binary

P.S. размер всё равно будет большим.

fsb4000 ★★★★★
()

Ты не осилишь. Зачем тратить время на бесполезные попытки?

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

Если одинаковый алгоритм на сишке и расте превращается в бинари разного размера, то… Если бинарь больше, то значит больше кода. Больше кода - меньше производительность.

Как то раст слишком просто слился. Где я не прав?

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

Как то раст слишком просто слился. Где я не прав?

Просто ты не слышал про статическую линковку и толстую стандартную библиотеку.

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

Если одинаковый алгоритм на сишке и расте превращается в бинари разного размера, то… Если бинарь больше, то значит больше кода. Больше кода - меньше производительность.

Кто выще бье, тот краще грает.

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

Если одинаковый алгоритм на сишке и расте превращается в бинари разного размера, то… Если бинарь больше, то значит больше кода. Больше кода - меньше производительность.

Не сравнивайте утюг с гладильным прессом.

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

Если одинаковый алгоритм на сишке и расте превращается в бинари разного размера

Это я тебе и на си и на плюсах могу продемонстрировать тупо флагами линковщика, хотя фактически имено алгоритм бинарно останется одинакого размера, но вокруг него будет разное количество кода.

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

Если бинарь больше, то значит больше кода. Больше кода - меньше производительность

нет. инлайн, раскрутка циклов, simd больше весят, а работают быстрее

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

Но гражданин fsb4к не предлагает менять флаги линковщика. Он предлагает сжимать. Почему сишный линковщик по умолчанию делает всё по красоте?

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

Любители раста вот доказали, что Rust тоже может в маленькие бинарники:

https://github.com/mcountryman/min-sized-rust-windows

600 байт.

https://raw.githubusercontent.com/mcountryman/min-sized-rust-windows/master/src/main.rs

upx --best --lzma можно и для С/С++ экзешников делать, когда они хоть что-то занимают (например, от 50 килобайт). Для совсем маленьких смысла нет…

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

Почему сишный линковщик по умолчанию делает всё по красоте?

Правильнее будет задать встречный вопрос — почему линковщик раста по умолчанию не делает по красоте. Ответа два: 1) потому что ABI раста (всё ещё) не стабилизирован, и 2) потому что хипсторки считают динамическую линковку злом как таковую.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)

Хоти на здоровье.

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

с какой целью языки противопоставляют друг другу?

А что тут не понятного?

Пофлудить
anonymous
()
Ответ на: комментарий от intelfx

Т.е. в пакетном менеджере дистрибутива нет растовых библиотека, а приложения распространяются статически слинкованными со всем, что надо.

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

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

Да, все так. Динамически линкуются обычно сишные библиотеки.

Siborgium ★★★★★
()

Да какая разница — главное, чтобы интересно было.

Чтобы язык был не чисто какой-то теоретикой, а чтобы можно было бы на практике попробовать.

Вот на тебе в зубы и вперёд https://github.com/buttplugio

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

Вот на тебе в зубы и вперёд

Грубиян.

Вот тебе метла и мети
anonymous
()

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

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

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

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

Почему сишный линковщик по умолчанию делает всё по красоте?

А что именно там делается «по красоте»? У тебя просто в С и C++ динамическая линковка к стандартным библиотекам языка libc и libstdc++:

$ gcc a.c
$ ll -h a.out
-rwxrwxr-x. 1 exl exl 25K Jul 10 13:34 a.out

$ g++ a.cpp
$ ll -h a.out 
-rwxrwxr-x. 1 exl exl 26K Jul 10 13:35 a.out

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

$ gcc a.c -static
$ ll -h a.out 
-rwxrwxr-x. 1 exl exl 1.7M Jul 10 13:39 a.out

$ g++ a.cpp -static -static-libstdc++
$ ll -h a.out 
-rwxrwxr-x. 1 exl exl 3.4M Jul 10 13:40 a.out

Если Rust-разработчики стабилизируют API/ABI и динамическая стандартная библиотека Rust будет в каждом дистрибутиве – у Rust’а тоже будут бинари в сотню-другую килобайт.

Вот только в современном мире размер бинарника уже практически не имеет значения.

EXL ★★★★★
()

Слышал, что у Rust плохой компилятор, который выдаёт медленный код

Код выдаёт нормальный, но сам компилятор медленный.

Размер конечных бинарей гораздо больше, чем у православной сишечки

Это да. Там применяется статическая линковка.

Полная зависимость от интернета

Нет, можно не использовать карго.

Rust пропихивается в изначально сомнительные проекты (вроде systemd)

Нет, а проект не сомнительный.

UB замаскированы под unsafe

Нет.

fernandos ★★★
()

Поговорка: тот кто хочет что то сделать - делает, иначе ищут причины и отговорки. Хотите изучать - изучайте. Все остальное - не влияет на процесс.

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

потому что ABI раста (всё ещё) не стабилизирован

ABI С++ точно также (все еще) не стабилизирован.

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

Код выдаёт нормальный, но сам компилятор медленный.

Неверно. Какое-то подобие нормального там будет только с unsafe, который растом не является, потому как не обладает ни одним из его свойств.

Нет, можно не использовать карго.

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

Нет, а проект не сомнительный.

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

Нет.

Да. Основной довод пропаганда был в том, что в си/++ в большинстве выражений может быть ub, а в расте только в unsafe. И что же мы видим? Пара строк на раст и несколько десятков строк unsafe(т. е. на си) - ничего не изменилось.

anonymous
()

Главный минус - невостребованный скилл на рынке труда: Rust vs C++

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

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

Т.е. в пакетном менеджере дистрибутива нет растовых библиотека, а приложения распространяются статически слинкованными со всем, что надо.

Ну да, всё так и есть. Включая стандартную библиотеку.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)

Накали обогащенной пропан-бутан-кислородной смесью и Раст как рукой снимет.

BceM_IIpuBeT ★★☆☆☆
()
  1. Точки с запятой
  2. Фигурные скобочки
  3. Куцая стандартная библиотека
  4. И вообще, rust doesn’t spark joy.
PolarFox ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.