Это копия, сохраненная 16 июня 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.
Ссылка на официальный сайт: https://www.rust-lang.org/
В этом ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
IDE для Rust: https://areweideyet.com/
GUI для Rust: http://www.areweguiyet.com/
Web для Rust: https://www.arewewebyet.org/
GayDev для Rust: https://arewegameyet.rs/
Что еще есть для Rust?
- Посмотри сам: https://wiki.mozilla.org/Areweyet
Основная литература:
Rust Book(версия на русском языке): https://doc.rust-lang.ru/book/
Rust Book: https://doc.rust-lang.org/book/
Rust by Example: https://doc.rust-lang.org/rust-by-example/
The Rustonomicon(для продвинутых анонов): https://doc.rust-lang.org/nomicon/
Programming Rust: https://www.oreilly.com/library/view/programming-rust/9781491927274/
Ресурсы на русском:
https://rust-lang.ru/
Отдельное спасибо автору этого гитхаба(старому ОПу). Здесь вы сможете найти много полезной информации: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41
Предыдущий: >>2490347 (OP)
Всех мастей. У нас инклюзивный тред.
https://matklad.github.io/2023/03/26/zig-and-rust.html
Говорит что зиг — это когда ты хочешь полностью выебать байты, следить за каждой аллокацией, никогда не падать от OOM, вызывать сисколлы напрямую. Страдает композиция, никто не сможет твой код куда-то себе просто подключить и радоваться.
Раст — это обратная история, модуль на модуле и модулем погоняет, падаем от OOM и ничего не можем с этим сделать, на ёбку каждого байта нет желания или времени.
С и С++?
Сами себе пишут одно и тоже трололо, чтобы тред не создавал впечатление протухшего куска говна.
Какой-то неисчерпывающий список.
Можешь закоммитить ещё несколько возможных сочетаний: abadd00d, deadd00d, deadb00b, f00db00b, beefd00d и т.д.
Политкорректные
И еще 3735928559 deadbeef
Нормальные люди не хотят всяких петухов и баребухов в открытом доступе от лица компании.
То, что про него кричат изо всех программерски щелей уже лет 7 подряд - это толком ему не помогло
а вот по более материальным вещам:
1) Вроде как использование в компаниях увеличивается, судя по всяким ресурсам, например https://github.com/omarabid/rust-companies
2) Добавили в ядро Линухи (сейчас насколько я помню только по плагинам? но тем не менее)
3) Появились фреймворки для веба, но честно говоря, чот это прям остается нишево, хоть сколько-нибудь значимой доли пока не видно
4) геймдев как и веб - вроде есть что-то, вроде развивается, но относительно доли плюсов и шарпа, на расте похоже пишут условно также частно как на JSе
по тому что я читал и слышал - пока что Раст больше занимает область C, вытесняя его в ряде задач
поправьте, где я не прав и какие у вас мысли?
По такой логике все должны веб делать исключительно на пхп. Я долго на это вёлся, потом перекатился на другие языки, и ни о чём не жалею. Работы хватит всем, и на расте, и на сишке, и на плюсах, и на шарпе. Долгосрочно раст интереснее, всё-таки он даёт фундаментальные преимущества.
Не понял, ты с пыха на раст ушел работать? Это вне РФ?
Пиздануться просто, уже шестнадцатиричными цифрами научились оскорбляться. Надо им предложить еще последовательности нулей и единиц в константах интерпретировать через морзянку - ух, сколько там оскорблений можно найти!
>какие у вас мысли
Раст постепенно движется во всякие safety-critical области - там где царят MISRA C/C++ и Ada. Сейчас идут какие-то подвижки по сертификации Ferrocene (тулсет на расте).
Переписывание каких-то требовательных к производительности частей других платформ на расте - pgx для postgres (см postgres-ml например), PyO3 для пейтона (polars). Раньше всё это делалось на сях и плюсах, но было несколько мозгоёбнее из-за фрагментации тулинга (делать что-то кросс-платформенное и дистрибутиво-независимое без одного пакетного менеджера - то ещё развлечение), а у раста есть удобный cargo.
Широко применяется в некоторых блокчейнах, криптотрейдинговых конторах и финтехах, в HFT растёт спрос на раст. Видел вакухи от институциональных брокеров, по одной даже пообщался на тех.интервью, но дальше не прошел пушо я дотнетчик и питонист, а раст - так, для души.
Много всякого на расте написано для web assembly, но я этой темой не сильно интересуюсь.
В процессе
>морзянку
Ну зачем так далеко ходить, можно начать с того же юникода. Позапрещать непотребные &str-константы.
Скорее варнинг со стилистической рекомендацией.
В самом коде компилятора нельзя будет deedbeef, b00bie3 итд. https://github.com/rust-lang/rust/pull/92469
типа всегда, чтобы получить какой-то эффект надо всегда сравнивать enum c enum'ом?
пример:
enum Example {
North,
Greet(String),
Ip(u32,u32,u32,u32)
}
и чтобы получить результат мне например надо
let matchStr = Example::Greet("Hello".to_string())
match matchStr {
Example::Greet(_) => // result
}
но тогда Example::Greet(_) будет всегда срабатывать
но как я понимаю я не могу делать вещи типа
if matchStr == "Hello"
для сравнения
и я не понимаю, как в итоге использовать, такие enum'ы, что строковый, что картежный, чтобы сравнивать данные с другими, или могу ли я получить из картежного enum'а первое значение?
> Объясните JS-макаке - зачем нужны enum'ы, особенно с кортежными значениями
Для написания конечных автоматов по любому поводу. Конечный автомат — это вершина программирования. Там рассмотрены все случаи, учтены все ситуации, и ничего не может случиться неожиданно.
Всё можно. В растбуке много примеров
https://doc.rust-lang.org/book/ch18-03-pattern-syntax.html
Для матчинга строк нужно немного поприседать
https://stackoverflow.com/questions/25383488/how-to-match-a-string-against-string-literals
Потому что контент строки хранится вне структуры String, так как у него неизвестный заранее размер. В структуре String лежат только указатель и длина.
В каждой ветке матча можно дописать произвольное выражение с if.
>let matchStr = Example::Greet("Hello".to_string())
>
>match matchStr {
>Example::Greet(_) => // result
>}
>но тогда Example::Greet(_) будет всегда срабатывать
Естественно он у тебя будет всегда срабатывать, ты только его одного и зпрограммировал. Они для случая, когда ты не знаешь заранее North, Greet() или Ip() у тебя будет.
Что касается enum и зачем они нужны. В расте отказались от null и исключений. Везде, где что-то может пойти не так, ты это видишь в типе возвращаемого значения. Это теперь не скрыто где-то глубоко и не выстреливает внезапно на проде. Никаких больше undefined is not a function и необработанных эксепшенов. Хотя все пишут не думая unwrap, но этим ты как бы явно соглашаешься крешнуть программу.
https://docs.rs/embedded-sdmmc/latest/src/embedded_sdmmc/sdmmc.rs.html#173-268
не работает, а
https://github.com/arduino-libraries/SD/blob/master/src/utility/Sd2Card.cpp#L257
отрабатывает нормально. Как фиксить?
Плата китайский клон ардуино нано, модуль сд какой-то стандартный, как на картинках в интернете.
Ну а что я могу написать?
Если просто пытаюсь применить библиотеку, то просто возвращает Error::CardNotFound
Если делаю руками, пишу в spi 0xFF 10 раз, пишу 0x00 0x00 0x00 0x00 0x00 0x95, то получаю бесконечный 0xFF в ответ.
Хз, что я ещё могу сделать, и так уже для второго пришлось библиотеку патчить, потому что нана ни defmt, ни тем более стандартный fmt не потянет.
> в вебдёве и при этом не говно?
В основном actix https://actix.rs/ для клепания микросервисов ну есть и прочее говно для джейсономешалок, но в большинстве случаев годным и работоспособным будет actix. Из популярных есть еще зумерский rocket, но там скорее для бета тестеров, как только тебе что-то нужно больше чем крудошлепство начинается боль, а так красивое и лаконичное.
Для БД https://crates.io/crates/sqlx и https://diesel.rs/ sqlx больше подходит для написания запросов руками, дизель это типа ORM.
И де-факто стандарт библиотек, который у нас в каждом проекте:
для ковыряния json serde на самом деле умеет больше, но чаще используется для преобразования json в структуры с ним работает много библиотек типа chrono, uuid, url и тп
для асинхронности tokio и futures
для работы с датами и временем chrono
и всякие мелочи типа dotenv, log, itertools, rand тоже в каждом проекте
Есть прочее говно redis, rabbitmq, mongo и graphql тут как бы всё стандартно и по задачам.
>Что на интервью любят спрашивать?
В душе не ебу. У меня получился разговор в телеге мол сможешь эту хуйню сделать на расте, ну я накидал чисто из спортивного интереса там надо было хитрым образом из sdt читать выхлоп у запущенного из-под раста процесса, потом уже даже вдвоем код дорабатывали. Как всё заработало "О заебись, давай к нам". Какая спецолимпиада у корпоротивных корпораций в душе не ебу, но мне чаще попадаются небольшие конторы, где обычно собесы проходят в разы проще.
>Как нынче ситуация с работкой ваще?
Работы не много, по сравнению с тем же пистоном или жабой, но большинство мест с хорошей зарплатой. Большая часть вакансий всякая крипта и бекенд, иногда встречается байтоебство с железом, но опять же для пионера-юниора с улицы нихуя нет, обычно приходят те кто перекатывается из других языков. Если у тебя опыт о котором ты писал не из резюме, а настоящий, то вполне можешь куда-нибудь вкатиться. Сам сейчас бекенд пилю, иногда с эфиром дружу, перекатился из руби имея за плечами пару лет опыта.
> в вебдёве и при этом не говно?
В основном actix https://actix.rs/ для клепания микросервисов ну есть и прочее говно для джейсономешалок, но в большинстве случаев годным и работоспособным будет actix. Из популярных есть еще зумерский rocket, но там скорее для бета тестеров, как только тебе что-то нужно больше чем крудошлепство начинается боль, а так красивое и лаконичное.
Для БД https://crates.io/crates/sqlx и https://diesel.rs/ sqlx больше подходит для написания запросов руками, дизель это типа ORM.
И де-факто стандарт библиотек, который у нас в каждом проекте:
для ковыряния json serde на самом деле умеет больше, но чаще используется для преобразования json в структуры с ним работает много библиотек типа chrono, uuid, url и тп
для асинхронности tokio и futures
для работы с датами и временем chrono
и всякие мелочи типа dotenv, log, itertools, rand тоже в каждом проекте
Есть прочее говно redis, rabbitmq, mongo и graphql тут как бы всё стандартно и по задачам.
>Что на интервью любят спрашивать?
В душе не ебу. У меня получился разговор в телеге мол сможешь эту хуйню сделать на расте, ну я накидал чисто из спортивного интереса там надо было хитрым образом из sdt читать выхлоп у запущенного из-под раста процесса, потом уже даже вдвоем код дорабатывали. Как всё заработало "О заебись, давай к нам". Какая спецолимпиада у корпоротивных корпораций в душе не ебу, но мне чаще попадаются небольшие конторы, где обычно собесы проходят в разы проще.
>Как нынче ситуация с работкой ваще?
Работы не много, по сравнению с тем же пистоном или жабой, но большинство мест с хорошей зарплатой. Большая часть вакансий всякая крипта и бекенд, иногда встречается байтоебство с железом, но опять же для пионера-юниора с улицы нихуя нет, обычно приходят те кто перекатывается из других языков. Если у тебя опыт о котором ты писал не из резюме, а настоящий, то вполне можешь куда-нибудь вкатиться. Сам сейчас бекенд пилю, иногда с эфиром дружу, перекатился из руби имея за плечами пару лет опыта.
Чаю, анон, хорошо расписал, для старта хватит. Посру в опенсорс какой для резюмехи да для скиллухи и пошуршу, авось чего-нибудь найду. Я со своим гвидопыхом по-моему упёрся в относительный потолок зряплатный (300к рублёв в USDT из шкуры вон не вылезая), да и язык уже заебать успел, честно говоря. Как раз щас около крипты и варюсь, авось смогу даже по блату пролететь, лмао.
>Если у тебя опыт о котором ты писал не из резюме, а настоящий
Скорее даже настоящего побольше, в код ебусь лет 12, это именно профессионального.
>Даже аксум не упомянул
Мы его как-то попробовали и в первый же день отказались, только уже не помню почему, чего-то было не реализовано из коробки и пришлось руками писать каждый раз
Ну как минимум популярнее актикса и на порядок больше загрузок чем у рокета. Для бд еще есть sea-orm, tokio-postgres (аксум кстати от разрабов токио).
Но вообще веб имеет совать или чтобы побаловаться, или какой-то оче хитрый веб (ну как тот же дискорд всё переписывает что-то), или мб просто какую-то отдельную хероту отдельно вывести где оче хайлоад. Как замена рельсам/вп/джанге/микрофреймворкам любым такое себе.
>Ну как минимум популярнее актикса и на порядок больше загрузок чем у рокета.
Мне похуй на популярность и вообще это не показатель, он может быть много где в зависимостях. Мне важно чтобы всё работало из коробки и было удобно поддерживать, в этом плане у actix проблем вообще не было. Это как сравнивать hyper и reqwest, у hyper загрузок больше по причине того что он много где в зависимостях, но если ты хочешь скачать json откуда-то тебе надо написать с десяток строчек, с reqwest ты это реализуешь написав в одну строчку, а если надо запрос через прокси сделать, то история с hyper становится веселее. То есть hyper удобно для использования внутри библиотек где нужны оптимизации и байтоебля, но неудобно использовать в продакшене где тебе нужно просто отправлять запросы и парсить json. Так же и тут у actix уровень абстракций выше с ним удобнее работать.
>sea-orm
Извращение какое-то поверх sqlx, даже глядя на пример из readme понимаешь что проще руками написать sql запрос и еще ide не всегда может сообразить что за говнокод там создается макросами, в итоге печатаешь как в виме. Для вчерашних битриксоидов пойдет Сравни это говно с дизелем и все станет понятно, я вообще удивлен почему оно взлетело и кто этим в здравом уме пользуется.
> Как замена рельсам/вп/джанге/микрофреймворкам любым такое себе.
Никто не заменяет рельсы, скорее область применения такая же как у go. У нас много парсинга и обращений к сторонним апи, блокчейну эфира и все это асинхронно плюс постоянно пишет в БД, всякие скриптовые языки при таком режиме работы по памяти утекают, собственно часть софта переписали с node.js по этой причине.
Пример: https://github.com/tokio-rs/tokio/blob/master/examples/proxy.rs
а ещё в примере почему-то shutdown вызывается только если всё ок, а в случае ошибки нет, тоже непонятен этот момент
>а ещё в примере почему-то shutdown вызывается только если всё ок,
Закончили — закрыли стрим
>мой вариант (пикрил) нет
Ты закончил и не закрыл
>а в случае ошибки нет
Всё сломалось, ничего не закрыть.
>Везде, где что-то может пойти не так, ты это видишь в типе возвращаемого значения. Это теперь не скрыто где-то глубоко и не выстреливает внезапно на проде.
Уже проходили много лет назад, но выросло свежее поколение и пошло по тем же граблям.
На практике получая ошибку тут и сейчас человек/функция не всегда знает что с ней делать и по факту получается заглушение проблемы путем маневров с операторами ветвления (if...else, match, идт). И снова выходи программисты плохие, а язык хороший. Хотя в реальности проигнорировав проблему, слой выше по стеку отловил бы её и залогировал проблему, если такая в динамической среде случилась (а иногда даже по еирархии вложение программа может решить проблему, например продолжить работу и дать, скажем, страничку с 404/5xx, если речь про веб).
В итоге исключения это этап эволюции разработки, ценой производительности. Но текущие программисты уже не могут осилить это древнее умение и новые яп появляются с костылями 70х годов (обработку ошибок операторами ветвления) и статьями, как исключение ненужно.
>Хотя в реальности проигнорировав проблему, слой выше по стеку отловил бы её и залогировал проблему, если такая в динамической среде случилась (а иногда даже по еирархии вложение программа может решить проблему, например продолжить работу и дать, скажем, страничку с 404/5xx, если речь про веб).
Так прокинь её выше.
Кажется понял. В примере оба таска выполняются в одном треде и таким образом они поочередно используют incoming/outgoing переменные. Если вызвать spawn, они могут выполниться в разных тредах и тогда будет гонка + непонятно какое время жизни у объекта. Тип без арка+мютекса тут не обойтись, или как..
Тоже сравнил, тут не нужно писать if err != nil на каждый чих, достаточно написать знак вопроса чтобы пробросить выше, а если взять anyhow, то это можно делать вообще не задумываясь о типе ошибки. По сути выглядит почти как исключения только для проброса ставишь знак вопроса, но при этом с явной обработкой как в go
>По сути выглядит почти как исключения
Сделали сахарок для бойлерплейта и радуются что у них лучше тоже самое что и в гошке.
Нет, основная фишка исключение, высрать тебе стэк и показать не только в какой функции у тебя крякнулось, но и в каком контексте вложений это произошло, если функция вызывается 1000 раз (а это может быть минимум для сложных приложений).
В общем, пока писали скриптики и grepы все устраивало, потом начали писать уже по взрослому и влепили сахарок с вопросиком, ждать эволюции, когда придумают как стектрейс пробрасывать костылями?
Приятно видеть, когда новое поколение проходит тем же путем что и 40 лет назад.
В anyhow есть context, передавай туда что нужно, чтобы понять че происходило в случае ошибки.
Да и ты скорее не про сложные с точки зрения поставленной задачи приложения пишешь, а про легаси говнокод, который собрал в себе все возможные антипатерны за годы "развития", не покрыт тестами и т.д.
Разумеется если ты после js руки не мыл и пишешь код с таким же подходом как там, то будешь абсолютно всё наверх пробрасывать знаком вопроса и потом страдать в поисках где что упало. После этого ныть и размазывать сопли на двощах.
>высрать тебе стэк
Мне не надо высирать стек, мне нужно знать в каком месте оно может упасть и это место обработать чтобы не крякнуло в неизвестном месте в неожиданный момент. Там где не нужно это обрабатывать пробрасываешь наверх знаком вопроса.
Разные подходы просто в той же жабе ты всё оборачиваешь в try catch наверху ждешь чуда и читаешь родословные классов логах, а тут ты всегда обрабатываешь ошибку и пробрасываешь её наверх если конкретно в этом месте не нужно обрабатывать. Когда у тебя все ошибки на виду ты немного по-другому начинаешь их обрабатывать даже с точки зрения бизнеслогики, а когда тебе в самом верху нужно обернуть в try catch и похуй что там происходит ты некоторые ошибки просто не видишь.
Решением оказалась функция into_split, вместо split
>Мне не надо высирать стек
>мне нужно знать в каком месте оно может упасть
Стектрейс нужен чтобы локализовать место ошибки, но ему он ненужен.
Тут вообще реальные программисты есть?
И? Ты без стектрейса никак не узнаешь где упадет? Не сможешь в лог написать так чтобы было сразу всё понятно? Нужно обязательно высрать всю родословную всех вызовов чтобы что-то понять, а иначе ты не настоящий программист. Ты хоть раз видел стектрейс в каком нибудь спринге? Ну насрет тебе содержимым фреймворка где в середине этого говна будет нужный тебе класс и метод с NullPointerException, так станешь настоящим программистом лол.
> >sea-orm
> Извращение какое-то поверх sqlx, даже глядя на пример из readme понимаешь что проще руками написать sql запрос и еще ide не всегда может сообразить что за говнокод там создается макросами, в итоге печатаешь как в виме. Для вчерашних битриксоидов пойдет Сравни это говно с дизелем и все станет понятно, я вообще удивлен почему оно взлетело и кто этим в здравом уме пользуется.
Очень удобный micro-ORM, ХЗ чего тебе с него подгорело. Diesel - это какой-то дичайший оверинжиниринг со своим тулчейном, миграциями и прочей хуетой кто этим всем вообще пользуется?, тогда как с sea-orm надо лишь немного почесать репу и оно заработает. Я посмотрел на дизелевский хэлловорлд из кучи нетривиальных шагов и закрыл его нахуй, юзаю sea-orm и в ус не дую.
- Tonic
- Cap'n'proto
- Prost-simple-rpc
- Tarpc
Чисто по юзабилити мне больше всех понравился prost-simple-rpc, но он, походу, давно умер и современными версиями компилятора даже не собирается уже (нужно 2018 редакцию выставлять), а самому поддерживать неохота. Ну и поиск по гитхабу показал ровно 1 проект, в котором он используется, причём от того же самого автора.
Cap'n'proto при прочтении документации произвёл приятное впечатление, но при попытке копнуть глубже вызвал неконтролируемые рвотные позывы - слишком дохера кривокостыльного кода приходится писать, да и логика работы какая-то наркоманская. Когда твой код выглядит как pry!(pry!(pry!(request.get()).make_response()).init_response().get_message()).get().get_field()).set_field("nigger") просто чтобы установить значение поля - ну как-то это не очень.
Tonic чисто по использованию очень приятен и прост, единственный нюанс - в накладных расходах. Я так понимаю, они там довольно немаленькие. Ну и тянет он за собой 150+ зависимостей...
Tarpc пока не успел попробовать, но вроде выглядит неплохо. Хотя там нет IDL, что в целом скорее минус.
Может есть ещё какие-то библиотеки, которые я пропустил?
Кор тим это разве не пидорасы-манагеры из мозилы, которые себе премии выписывают? Мне казалось я пару лет назад с ними какой-то зашквар уже слышал. Про то, что челик какую-то бабу через знакомство закинул и она на говно исходить начала.
всякие приколы с трейдмаркой и прочим
вот ссылка на док
https://docs.google.com/forms/d/e/1FAIpQLSdaM4pdWFsLJ8GHIUFIhepuq0lfTg_b0mJ-hvwPdHa4UTRaAg/viewform
>>667640
вполне похоже, но я как понимаю там не только мозилла а еще и часть других компаний - типа мелкомягких и других
У этого клоуна утечки памяти и тормознутость jsa компенсируются ЛЯМБДОЙ, сука, ну просто наплодили миллиард короткоживущих функций, горизонтал скэйлинг у крутых продвинутых челов🙂🙂🙂
подожди до понедельника
Краткая сводка по новой политике товарных знаков:
При сомнениях в соблюдении новой политики разработчикам рекомендуется использовать сокращение RS вместо Rust для обозначения того, что проект основан на Rust, совместим с Rust и имеет отношение к Rust. Например, crate-пакеты рекомендовано именовать "имя-rs" вместо "rust-имя".
Продажа товаров - без прямого одобрения использование имени и логотипа Rust запрещено для продажи или рекламы товаров с целью получения выгоды. Например, запрещено продажа наклеек с логотипом Rust для получения личной выгоды.
Демонстрация поддержки проекта - осуществление поддержки на персональном сайте или в блоге с использованием имени и логотипа Rust разрешено только при учёте всех требований, указанных в новой политике.
Имя Rust разрешено использовать в заголовках статей, книг и обучающих материалов, при явном указании, что проект Rust и организация Rust Foundation не вовлечены в создание и рецензирование содержимого.
Использование имени и логотипа Rust запрещено в качестве средств персонализации в корпоративных социальных сетях.
Использование логотипа Rust запрещено при какой-либо модификации самого логотипа помимо 'масштабирования'; в будущем организация будет самостоятельно публиковать новые версии логотипа с учётом текущих общественных движений (таких, как LGBTQIA+ Pride Month, Black Lives Matter и т.д.)
'Ferris' (краб, талисман проекта) не принадлежит организации и организация не в праве ограничивать в использовании данного товарного знака.
На конференциях и мероприятиях, связанных с языком Rust и другими продуктами организации, должно быть запрещено ношение огнестрельного оружия, должны учитываться местные санитарные ограничения и использоваться ясные нормы поведения (robust CoC).
Е.АЛО ПРЕДСТАВИЛИ?
Хорошо, что это говно уже сейчас всплывает, а не потом, когда на этот вендорлок дохрена софта подсядет.
Краткая сводка по новой политике товарных знаков:
При сомнениях в соблюдении новой политики разработчикам рекомендуется использовать сокращение RS вместо Rust для обозначения того, что проект основан на Rust, совместим с Rust и имеет отношение к Rust. Например, crate-пакеты рекомендовано именовать "имя-rs" вместо "rust-имя".
Продажа товаров - без прямого одобрения использование имени и логотипа Rust запрещено для продажи или рекламы товаров с целью получения выгоды. Например, запрещено продажа наклеек с логотипом Rust для получения личной выгоды.
Демонстрация поддержки проекта - осуществление поддержки на персональном сайте или в блоге с использованием имени и логотипа Rust разрешено только при учёте всех требований, указанных в новой политике.
Имя Rust разрешено использовать в заголовках статей, книг и обучающих материалов, при явном указании, что проект Rust и организация Rust Foundation не вовлечены в создание и рецензирование содержимого.
Использование имени и логотипа Rust запрещено в качестве средств персонализации в корпоративных социальных сетях.
Использование логотипа Rust запрещено при какой-либо модификации самого логотипа помимо 'масштабирования'; в будущем организация будет самостоятельно публиковать новые версии логотипа с учётом текущих общественных движений (таких, как LGBTQIA+ Pride Month, Black Lives Matter и т.д.)
'Ferris' (краб, талисман проекта) не принадлежит организации и организация не в праве ограничивать в использовании данного товарного знака.
На конференциях и мероприятиях, связанных с языком Rust и другими продуктами организации, должно быть запрещено ношение огнестрельного оружия, должны учитываться местные санитарные ограничения и использоваться ясные нормы поведения (robust CoC).
Е.АЛО ПРЕДСТАВИЛИ?
Хорошо, что это говно уже сейчас всплывает, а не потом, когда на этот вендорлок дохрена софта подсядет.
Зачем искать непонятную хуйню, если есть реббит/грпц? На реальных проектах никто не использует никому неизвестный рпц от васяна
Это норма, go, swift итд затрейдмарканы, даже ллвм и линукс. С/С++ наверное из-за древности как-то без этого обошлись, но может и тоже есть какие-то нюансы.
но эти совсем ебнутую политику выкатили
зато на некоторых реальных проектах велосипедят свои рпцы, очереди, скедулеры базы данных слава богу не встречал и тд, что с учётом того что это не главное направление даёт результат уровня васянов, если не хуже
>линукс.
Политизированная корпоративная залупа.
>ллвм
Корпоративный копромпилятор, который может насрать в штаны своими охуительными оптимизациями под охуительные блеяния про "следование стандарту" (в ГЦЦ такой хуйни нет, если что)(см. пикрилы)
>пик
Погоди, это реально?
По каким ключевым словам можно почитать про такие охуительные оптимизации?
>По каким ключевым словам можно почитать про такие охуительные оптимизации?
https://github.com/llvm/llvm-project/issues/60622
И как спокойно спать, зная что такая хуйня существует?
Делаю себе либу, и вот захотелось чтобы она прям для встроек могла работать.
Суть в чем - как мне в либу принять от Сишного кода аллокатор (думал передавать структуру с указателями на функции аллоцирования и освобождения памяти) и привести его к GlobalAlloc, чтобы не таскать его повсюду? Также нужно i/o, поэтому надо сишные функции ака read/write превратить в Rust-овские impl Read Write.
Нашел пока какие-то ну максимально простые примеры, которые в моем случае вообще не помогают.
Посоветуйте, пожалуйста, книгу/ютуб по программированию с примерами Раста. Не книгу по Расту, а книгу по программированию, если такая есть.
Ну так вот. Наш главный - сошел с ума. Хочет жаву впихнуть в девайсы. Я про это плакался уже в другом треде. Но не суть.
Я че думаю. Думаю подсунуть ему раст. Под предлогом того, что он типа безопасный и все дела, но быстрый как си.
Никто тута на расте работать не умеет.
Вопросы следующие. Насколько это будет правдой? Нижняя граница железяк - это всякие STM32 c Armv7.
Так-то код на си - всем подходит, но типа молодежь не заманишь, а дедов - мало осталось, деды убегают в финтехи всякие. И в результате - поддерживать уже почти некому, а нужно не только поддерживать, но и развивать.
Жава - ну СИЛЬНО плохо показывает себя.
Я думал раст, как модная-молодежная замена сей, чтобы зумеров приманить. Но чет не знаю. Сам я в расте не силен, только видел всякие сравнения и по графикам - производительность вроде близкая к си, уверен, что это пиздеж, но надеюсь, что не такой сильный.
Собственно - да. Расскажите че да как. Не хочу вдаваться в подробности, но коротко - железки это всякие контроллеры для шкафов заводских. Текущий стек - это си+луа+на пхп веб+vue - чтобы рисовать морду. Думаю си как раз заменить на раст, а луа на питон, мож зумерам интереснее будет.
В чем смысл перехода на джаву, чем он это мотивирует?
Теоретически вместо джавы можно подсунуть ему любой компилируемый язык, да тот же С++ наконец.
Мотвивирует тем, что у нас 150 прикладных программиста на джаве. А встройщиков на си осталось 10 человек, и второй год не можем даже мидла найти нормального.
Ну видимо просто платите мало.
При таком раскладе на расте кодеров не сильно больше у вас будет, так что фиг знает. Возможно ваш главный даже прав т.к. на джаве много легаси и джава кодеры должны быть более умерены в своих запросах чем хипстеры на расте.
Тем более что
>150 прикладных программиста на джаве
А так выбор языков невелик: Java. С++, Rust или Go.
Та не то чтобы мало.
Просто была неприятная история, которая репутацию подпортила.
Коротко суть - в древние времена было такое развлечение у дедов: раз в квартал - выбирали 1-2 самых низкорезультативных, и МЯГКО намекали им съебывать нахуй.
Проблема была ессно в том, что т.к. мы все люди - частоы случалось так, что выбор не всегда был честным, типа кто в хороших отношениях с людьми повыше - не рисковал и мог проебываться.
Ну. Часть людей это заебло - они съебались в закат, прихватив с собой тех кому тоже это не нравилось. Стали конкурентами. Причем успешно.
Ну. А люди снаружи организации - прознали и репутация так же была убита. Студентота - перестала активно идти сюда работать.
Я - пришел позже. Когда я пришел - я про все это дело - только со слов дедов узнал.
Ну. Так вот. Среди местных - хуй найдешь тех кто готов был бы сюда идти и при этом годный.
Годы шли. Деды - постепенно то в финтех сбегали, то еще куда-нибудь. В итоге имеем, что по сути - у нас сейчас даже на поддержку существующего - не очень хватает людей.
Но блядь. ДЖАВА на встройках. Ну блядь. Ну серьезно.
>встройщиков на си осталось 10 человек
>Переходишь на раст
>Увольняешь последних 10 сишных кодеров
Отличный план. Надежный блять как швейцарские часы.
Кулстори, бро.
Не понимаю только каким образом при таком раскладе вам должен помочь раст. Он магически исправит вам репутацию и все побегут подавать резюме? А может проще на hh поискать сишных кодеров?
Ну а так раст подходит под ваши задачи конечно, но непонятно кто будет переписывать весь софт с Си на Раст.
Он должен создать имидж модного-молодежного коллектива с интересным стеком и задачами.
Переписывать будем частями.
Со стороны - никто не хочет переезжать к нам, люди из других регионов хотят на удаленку. А принципиальная позиция владельца бизнеса - никакой удаленки.
А это вообще реально?
Ну запихнуть на микроконтроллер жаба вм чтобы ещё место и мощности под программу остались?
Если да и жаба позволяет байтоебить на уровне С, то почему нет? Взять джависта, анально (но с вазелином) показать ему прогу и сказать "придумай как переписать на жабу".
Да, это будет ебануто, но раз ты говоришь что 10 сишников и куча джавистов, то почему нет?
С другой стороны наверное ещё проще обучить джавистов писать код под МК.
>всякие STM32 c Armv7
Ну насколько можно судить по табличкам с оф сайта, поддержка 32 arm 7 - это Tier 2-3 для разработчиков раста, т.е. они не гарантируют тебе там беспроблемной сборки твоего кода под эти архитектуры. Tier 1 это только arm64 по понятным причинам. Хз насколько в реальности будут серьезны твои проблемы, но скорее всего попердолиться придется знатно.
два плюса господину
вам начальство либо привести в чувства надо, либо вообще новое
потому что пока вы выглядите как Rust Foundation - продолжаете отстреливать себе ноги, но при этом хотите, чтобы смотрели на это и восторженно злопали
господи какой же Кладов няшка я каждый раз когда смотрю его лекции представляю как он после лекции вернется к себе домой наденет чулочки и начнет программировать :3
Нахуй жабу, шарп пизже. Есть нано для эмбеда
Зачем вам этот раст вообще нужен? Сделали бы тупо гей-сообщество и жахались в анусы, не напрягая мозг кодингом.
уважаемый человек в контрибьюторах, уважаем
Сам фронтедер,но оче хочется медленно вкатываться в компилируемое что-то
Явно не с раста. На раст перематываются обычно только в рамках компании, ибо работы на нем НЕТУ
>Ставишь unreachable
>Включаешь оптимизацию
>Код доходит до unreachable
>Происходит хуйня
Кто бы мог подумать
Полгода не интересовался ржавым грибом, зашел, а тут снова драма.
И вот непонятно, что глупее? Менагерская утопия, которая как танцовщица прогибается под шелест бабла корпораций, или зрелые люди, которые на полном серьезе делают форк, не имея даже процентра ресурса, как у попильного гриба.
Что там слышна про убивцу от гугла? Обосрались? Трудно круд-зумер-программистами овладеть технологией древних?
>Что там слышна про убивцу от гугла? Обосрались? Трудно круд-зумер-программистами овладеть технологией древних?
Так он же очень активно вроде набирает щас популярность, не?
Ничего с анонса не слышал, даже лень гуглить. Уже тогда насторожило, что у них кроме идей ничего нет, акромя "вдохновленного" синтаксиса с раста.
>Да,шокич конечно. Вакансий просто 0,против golang 1000.
>Хотя на Гитхабе проектов больше
Никто не хочет вступать в политическую партию для того, чтобы программировать.
Всё как всегда, пошумят и успокоятся.
Способов замедлить код ради удобства программиста можно найти 100 000 000 штук. Главное что язык показывает хорошие дефолты под свою целевую аудиторию.
Вся суть ржавого это попил бобла, просто раньше это делали корпоротивными приложениями для корпораций и соевые додики такого в живую не видели, ибо кровавый тырпрайз это отдельный мир, в отличие от крудов на питоне. То вот сейчас такое провернули через язык программирования, отсюда столько драмы, которая языка как инструмента касаться никак не должн.
Если ли у хруста будущее? Так тут нужно понять есть ли ниша у языка.
Про прикладной уровень.
Они рассказывают про победы на управлению памятью как что-то невероятное, но в реале во всех управляемых языках давно же победили эти проблемы с памятью, но самих проблем от этого меньше не стало, а сами управляемые языки давно уже стали высокопроизводительными. Трахаться на низкоуровневом языке для прикладных задач, это просто тупость, жаба/котлин, шарп, куда комфортнее. Даже го, издевательство над дизайном, намного удобнее будет
Что касается системного уровня, то там просто не хватает спецов и раст этим никак не поможет, наоборот он усугубляется ситуацию, так как раньше требовался плюсовик так теперь еще плюсовик и растовик, лол.
Нет ниши, нет будущего, языку уже лет 8-9, так что смотри сам.
Ты из тех самых людей, не знающих про RAII и что он есть буквально везде? В плюсах как раз
Ааааа, RAII оказывается у нас все проблемы с памятью давно решили?
каждый тред одно и тоже...
Ну изволь рассказать тогда, как же ты эти самые проблемы с памятью ты создаешь, только давай тут не высирай про резкий терминейт тредов, я просто других методов вообще ну никак придумать не могу
>как же ты эти самые проблемы с памятью ты создаешь
Да просто статистику глянь какие самые частые ошибки
Иди гугли что такое управляемые языки.
>Да просто статистику глянь какие самые частые ошибки
Забыл поставить ";"?
После языков где этой фигни нет, быстро отвыкаешь от точки с запятой, вот моя проблема на миллиард долларов, а не ваши наллы.
Я про котлин, кто вообще после школы пишет на питоне?
Я реально ожидал там что-то по крипте или по играм, а тут вопросы по синтаксису, лол.
Вдохновляла критика от плюсовиков и ее разбор - типа челы кидают тейки, а на каждый тейкт люди давали адекватные ответы, чем раст хорошо и инетересен
Также немного вдохновляет, то как геймдев на расте развивается потихоньку и можно самому что-то попилить попробовать
Очень сильно не вдохновляет херня от дефективных манагеров
Мне понравился баран чекер и макросы, и наверно всё, но я пока что только хеловорлд написал
Мне вот как раз интересно как раст чувствует себя больших проектах. Понятно что фанатики даже на го большие проекты пишут, но вот интересно мнение обывателя, насколько сложнее сопровождать, проект становится, в сравнение с управляемыми языки и тем же ООП, без которого, якобы, все плохо будет.
А так где не послушаешь везде какое-то лобызания, даже в сишарп подкастах завезли и там соевые сидят восхищаются, вроде уже взрослые дядьки, а несут бред на уровне школьников, типа вот "ппц любимый и офигенный ваще"
Пиздец как нравится то, что если оно компилируется - оно работает. Не вылетит нигде со словами "Segfault".
А так - ну система типов для метапрограммирования, но я вообще на С и изредка С++11 пишу, так что не думаю что это что-то прям уникальное, просто у меня такого нет.
Ну и для меня то что это в теории и на практике простых примеров пригодно в ембеде
>Пиздец как нравится то, что если оно компилируется - оно работает. Не вылетит нигде со словами "Segfault".
А это далеко не только в расте есть.
Ну хз, не видел таких. Правда я кроме С/С++/Rust/Go особо компилируемых языков не смотрел
Возможно ты о чистых ФП языках, но там другой стул со своими проблемами
Ну почему — в джавашарпах та же история. Если оно компилируется — оно почти всегда работает.
В джавашарпах внезапные npe/nre, в расте для такого надо специально писать unwrap()
Одинаково часто, пушо джавашарповые null в динамических яп присутствуют в виде None/null/undefined/nil, а в довесок в них еще и AttributeError: Pupa object has no attribute Lupa/TypeError: pupa.lupa is not a function из-за их динамической природы.
Там как раз есть нуллабл типы, в жабу даже опшены в 8 версии вроде завезли, но так как это просто костыль, а не решение проблемы, это не прижилось как фп-дрочеры думали.
Поверь, свалиться эксепшенном парой куда практичнее, даже костылем unwrap, чем искать завуалированную ошибку, потому что кому-то, когда-то было лень человеческий фактор.
Тут просто исключение в том, что раст довольно низкоуровневый и там говнопляски все еще больше чем в прикладном мире управляемых языков. Тут раст не нужен 90% вкатунов. Юзать его в прикладном уровне стоит лет через 5-10, когда завезут нормально готовых отлаженных либ.
За растом и тредом особо не следил давно
> под виендой
Под ней постоянная ебля со всеми языками, тот же руби уже помирает, но так и нормально под виндой не работал никогда
GNU начали переписывать на раст. Скоро и линукс репу Торвальдса перепишем.
>GNU начали переписывать на раст
Наркоман? Кто начал? Где начал? Ты про coreutils? Ну так это вообще не проект ГНУтых. Это очередные шизы занимаются переписыванием работающих программ.
Нихуя не путаю, с виндой вечно какая-то ебля чтобы заставить что-то работать, для этого даже костыль в виде WSL придумали.
>для этого wsl
А ты совсем далек от разработки, да? Не все пишут кросс-платформу, некоторый софт требует всякие прямые сисколлы и нахуй он не нужен на условной винде, да банально ебанный докер тот же есть, который заводится в WSL
>А ты совсем далек от разработки, да?
Далек, но от винды лол, последний раз это говно 3 года назад видел, да и вообще десктопный софт для винды ни разу не пробовал писать. Но флешбеки от того как вкатывался сидя на винде остались
Типичный опеннет. Каждый пункт уже везде обсудили по десятку или сотне раз.
В голос поста, как сказали выше типичный опеннет
Со временем привыкаешь просто игнорировать таких шизов
>Нужно кинуть байтики из массива на кучу
Box::new(array)
> дальше забыть нахуй про их существование
std::mem::forget(heap_pointer);
не оч понимаю в чем проблема и почему тебе бокс что то говорит
> Box::new(array)
Только вот после as_ptr() и передачи его за пределы раста по этому указателю нихуя нет, на пустой участок памяти указывает. То что это тот же указатель и его ffi не испортило я естественно проверил.
> std::mem::forget(heap_pointer);
Не вижу никаких изменений после этого.
>>688212
> into_raw
cannot return value referencing local variable
returns a value referencing data owned by the current function
>>688210
> Box::leak
Вот такой пиздец получается - &mut &[u32]. Всё так же эту лапшу из функции не даёт вернуть.
Я уже просто ахуеваю с этого. Там массив "принадлежит" либе, все эти боксы просто "перемещают" его на кучу и он всё так же принадлежит ей, borrow-checker ебёт в очко, а копирование пишет не реализовано для этого дерьма. А если я даже как-то наёбываю компилятор, он что-то делает с данными, при том что в самой функции указатель указывает корректно на данные. Хоть memcpy дали бы, ну что за дроч ебаный.
В общем вариант как в сишке с передачей указателя в функцию и потом копированием массива вот так unsafe { std::ptr::copy_nonoverlapping(src, dst, size); } работает, всё заебись. Но вы же сами понимаете какая это хуита, да?
Честно, нихуя не понято что ты делаешь, покеж код
>Там массив "принадлежит" либе
Тебе это никак не должно мешать, ты же со стака копируешь массив в кучу, копия массива не может принадлежать кому то кроме тебя
> покеж код
Ну вот например код. И как без ансейфа массив передать за пределы раста? И чтоб он не подчистил данные, когда код раста завершит работу, как это получается с простым боксом и as_ptr().
Набросал подобное
Подправьте если в чем то тут не прав
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=bf00fae826f1e27f68df787fe53d004d
>Оно работает только потому что компилятор знает размер массива при компиляции
Нихуя не понимаю, а что тебе компилятор то выдает?
да и почему его тут должно ебать размер массива
> что тебе компилятор то выдает?
the size for values of type `[u32]` cannot be known at compilation time
the trait `Sized` is not implemented for `[u32]`
Слушай, что я у тебя всё должен вытягивать
Ты бы скинул где конкретно у тебя это происходит
Если кратко ответ: компилятору должно быть похуй на размер слайса на всех операциях
Скопировать слайс в кучу - Без проблем, размер слайса не нужен
Засунуть в бокс? - Аналогично
Достать из слайса поинтер? - Там вобще размер никак не задействуется
> Засунуть в бокс? - Аналогично
Так это ошибка самого бокса, бокс и пиздит на размер. Это буквально твой код, но массив из либы, а не создан на месте.
Ты что то делаешь не то, скинуть нормально код с ошибкой ты не можешь, так что справляйся сам
максимум чем могу помочь смотри
https://doc.rust-lang.org/std/borrow/trait.ToOwned.html#tymethod.to_owned
https://doc.rust-lang.org/std/vec/struct.Vec.html#method.into_boxed_slice
Ну ты тогда расскажи как мне пользоваться тем что даже не компилируется.
Ты меня троллишь так?
Макрос. Чтобы сделать много аргументов, у обычных функций нельзя.
>Каждый пункт уже везде обсудили по десятку или сотне раз.
Не по одному пункту не слышал ничего вменяемого, что лет 6 назад, что сейчас, одни фанбойские вскукареки.
Ну типа, что можно сказать, если компилиться долго - ну правда и что?
Что подход из js когда чуть ли не функция, то пакет и тянет сотню таких пакетов и где там дырку засунули - почему это не ужаснейший подход в плане безопасности?
Ну или типа мысль, мол числодробилки лучше на неуправляемом коде делать, а бизнес-дресня на всяких джава-питонах пишутся, где нет натянутых проблем с памятью. В тот же шарп столько низкоуровневой херни запихали, что может даже себе область без ГЦ собрать и подергать каждый байт, в одинокие дни в узких местах.
>плюсо-шарпов
У тебя все есть. Пойдет тренд, например сделают игровой движок на вебассембле или еще что-то. То сам перекатишься за конфеткой.
Переписывать написанный код по фану и быть бесплатным бета-тестором, та еще радость.
Хотя я думаю раньше появиться какой-нибудь порт юнити в вебассембле, чем фанбои вообще какой-то самостоятельный продукт высрут.
В общем, решает не язык, а технологии, удобство и инструментарий.
Писать, скажем, игрушки на шарпах куда быстрее и приятнее чем на с++ или растах. Быстро макакить сайты, возможно приятнее и быстее на динамикодрисне. Двигать байты, на сишечках проще ибо тонны либ стабильных.
В общем, вдохновляйся продуктами и результатом, а не языком, ради языка.
Ну доступим. А в плане машоба у сабжа есть перспективы? Сейчас как раз в этом направлении развиваюсь, могу на перспективу потыкать вашего ржавого
>А в плане машоба у сабжа есть перспективы?
Машоб - это ансейф числодробилка на сях/цпп + динамикадрисня в виде питона. Какой смысл писать такую же небезопасную числодробилку на расте?
>В каком таком месте линейная алгебра это ансейф?
В таком, когда йоба-оптимизации будешь мутить, чтобы ускорить нейронку.
Но ведь Rust — невероятно быстрый язык, зачем мне ещё трахаться с ансейф оптимизациями?
Когда начнёшь принтерами вертеть или какие нибудь симд использовать
ну ансейф и ансейф, что бухтеть
1) 2) 3) 9) Почему тебе должно быть не похуй на копошения непонятных нормисов? Компилятор и без пронаунов в твиттере скачивается.
4) Любая либа сложнее хештаблицы на любом другом языке точно также тянет дохерища всякого. Или реализует свои коллекции, что просто охрененно помогает безопасности. И у каждой либы еще своя особенная система сборки. Может бесить, что один и тот же крейт скачивается в пяти разных версиях, но с этим ничего не поделаешь, если не пихать каждую мелочь в std.
5) Ебал Питон и ему подобные, готов использовать Раст для самых простых скриптов, чтобы поссать на его могилу. Дата, подпись.
6) Она везде отвратная. Всё, что более продвинутое, чем С ABI либо пиздец хрупкое как в Плюсах, либо сложнее чем операционная система как в Swift.
7) Во-первых, наверняка Сишный код не проверяет ошибки, при некорректном вводе выплевывает на вывод сатанинские письмена и так далее. Так что насчет аналогичного функционала уже пиздеж. Во-вторых, в нормальном проекте разница уже будет 50 МБ и 51.4 МБ, так что вообще плевать.
8) This is fair.
Покормил.
>1) 2) 3) 9) Почему тебе должно быть не похуй на копошения непонятных нормисов?
Это прямое руководство влияющие на язык в целом.
К примеру, видел 19 лет назад, как в пхп не пошли по пути развития нативного веб-фреймворка, а стали мимикрировать под джаву, что пхп и убило (не считая что он там из-за капитала кода до сих пор по инерции жив).
>также тянет дохерища всякого.
> что просто охрененно помогает безопасности.
Просто шизофрения какая-то, противоречие сразу в следующем предложении.
> Ебал Питон и ему подобные
Речь там про управляемые языки, нах свои питон достал.
7. пункт вообще не понял, или ты промахнулся, хз.
6. Я тут не компетентен, не поспорю, может и прав.
>Покормил
Мне рассказывали что тут сидит скучающая коляска, которая по тредам лазает и просто вступает в любую полемику со скуки, поэтому ты даже не покормил, а просто накинул свое виденье, не убедительно ни разу.
Ну и зачем ты ебал чей-то питон, пидор грязный?
https://github.com/emilk/egui
https://iced.rs (сразу замечу, что нет многострочного поля ввода)
>я буду готов вкатываться в работку хотя бы мидлом?
Где? Где ты собрался работать?
Вижу, что его только в больших корпах намазывают и то без пруфов, скорее, 70%, для пиара в молодом тесном комьюнити.
Нет
Напиши что-нибудь типично-плюсовое на расте, чтоб подружиться с лайфтаймами, трейтами и борроучекером - тогда будешь готов.
> божественного си синтаксиса
Утёнок, ты когда начнёшь на мир смотреть не через призму фанатизма?
Кхм, раст, жс и питухон - это и есть Си-подобный синтаксис
В СИ-синтаксисе нет похожего на <'a>. СИ программист вынужден держать сабж в уме.
95/100 тех, кто бугуртит на раст-синтаксис не может предложить обоснованный альтернативный вариант своего замечания, который бы не стал двусмысленным в другом контексте.
tl;dr
Rust: auth server on http server, with graphql endpoint, connected to mongodb, passhashing witb bcrypt, returns jwt (json web token) -- 1,7mb of RAM on macbook
C#: webapi that simply fetches weather data (json req to weather service) -- 79,3mb of RAM on macbook
И прекращайте вилять филейной частью в этом треде. Лучше продолжайте как раньше, советовать IT-вкатунам почитать СКИП, начинать с хаскелла и тому подобное. Потому что на Раст это уже не прокатит.
/без троллинга, не обижайтесь
Так в си и семантического аналога нет
Ну и почему мне должно быть не похуй? По-твоему я этот сервер на ардуино собираюсь запускать? У меня в компе установлено 256 гигов 5 ддр памяти. Она забивается полностью только когда я нейронки гоняю. На серваках кол-во памяти уже терабайтами измеряется. Почему в 2023 году кому-то должно быть не похуй на 77 мб?
Если ты в РФ, то не советую вкатываться в Rust целиком - лучше оставь его для pet-project всяких.
А если я в Gayrope?
Для сервиса это нормально, но тут скорее дело в другом, на жабе точно гц не собирается просто так, то есть оно будет накапливаться сколько посчитает нужным (сколько настроено) и потом начнет жарить. Зачем дергать гц, когда это не нужно и места еще дофига.
Плюс еще всякие кэши, jit'ы, поколения в памяти и т.д.
Думаю в долгосрочной перспективе, на расте будет жратся больше памяти, так как подход иммутабельности и еще владения, просто заставляет дублировать сотни килотонн мелочи.
Это не значит что приложение в 1000мб будет жрать
1700мб на расте, а на шарпе 79000мб.
Будет на расте 1001, а на шарпе 1079. И теперь чувствуешь как меняется восприятие твоих цифр?
Ну и на шарпе там фулл-вебфреймворк, а на расте скорее всего пустой веб костыль, без нечего.
>а на расте скорее всего пустой веб костыль, без нечего.
https://github.com/seanmonstar/warp
Просто раст может в dead code elimination, а C#-машина подгружает половину винды.
C# давно уже умеет создавать нативные бинарники, образая всё лишнее. И с каждом релизом бинарники становятся всё тоньше, а производительность и скорость запуска - всё меньше.
Пердолинг с растом или С++ в обозримом будущем будет давать не более 3-5% в производительности или иной метрике по сравнению с божественными шарпами. Так что за пределы железячников и драйверописов, а также сообществ снобирующих борщехлёбов расту видимо так и не суждено выйти.
>C# давно уже умеет создавать нативные бинарники, образая всё лишнее. И с каждом релизом бинарники становятся всё тоньше, а производительность и скорость запуска - всё меньше.
>Пердолинг с растом или С++ в обозримом будущем будет давать не более 3-5% в производительности или иной метрике по сравнению с божественными шарпами. Так что за пределы железячников и драйверописов, а также сообществ снобирующих борщехлёбов расту видимо так и не суждено выйти.
Не в ту сторону лижешь, дегенерат. Я понимаю, что блохирам майки платят, но ты как попугайчик зачем это повторяешь? Шарпы и Раст вместе под Макрософаком ходят и с одной кормушки питаются. Пруфы? На винде часть кода переписана на раст о чем недавно заявлял какой-то индус из МС на своем выступлении. Поэтому +15 ms coin за пиар шарпов и -25 ms coin за обсер раста.
>Говорят от раста "говной ваняет", СЖВ всех скуколживает, генных трансгенндеров подкладывают и вообще политизированный продукт.
Конец прошлого треда почитай.
Короче мне похуй на чужое мнение, я затарил редбулла, накатил шлайно и попробую ща ночью заспидранить хотя бы треть растбука.
Дети не знают что такое EEE от мягких.
>кококо, нас даже мягкие поддерживают.
Сейчас эти чэды втиснутся в сообщество, потом настругают снова свой компилятор, который будет сначала совместим и давать буст в окошко-сборке, а потом по классики навернут несовместимого говна.
Не, ну в целом всё круто. После плюсов так почти всё по диагонали учится. Боров - прикольная хуйня, надо привыкнуть только будет. Хз короче, попробую недельку потыкаться в остальные штуки, замутить пет-второй и по приколу пойду херкам написывать.
Вот у меня есть функция a, которая принимает io::stdin() и io::stdout().
Мне нужно для нее написать тесты.
На какие типы мне нужно поменять Stdin и Stdout, чтобы все продолжило работать, но я мог сам записать в in буффер, а потом проверить, что записалось в out buffer?
> io::stdin() и io::stdout()
Зачем твоя функция принимает стандартные потоки ввода и вывода?
Наверное ты хочешь чтобы твоя функция принимала трейты std::io::BufRead и std::io::Write
https://doc.rust-lang.org/std/io/trait.BufRead.html
https://doc.rust-lang.org/std/io/trait.Write.html
Ну и вместо них можешь пихать всё что угодно из чего можно читать и записывать
В опеннете еще чаще
Биржевой движок (как https://github.com/exchange-core/exchange-core например).
Если твой пет (пусть даже без риск-менеджмента) обгонит хоть в каких-то бенчмарках этот пример на джаве - тебя с руками оторвут.
Напиши сначала примитивный - прост с выставлением, снятием и схлопыванием заявок быстрее чем за O(n), где n - кол-во заявок в стакане. В моём сишарпо-лохчейне это задание на полуторачасовой лайвкодинг/тестовое задание. Я справился за 3 часа (1.5ч на лайвкодинге, остальное сам доделал, с тестами), некоторые кандидаты за час управляются.
Потом наверни дизраптор или еще какую штуку для распараллеливания - готовые есть на гитхабе. Это от одного до неск дней.
Потом сделай это доступным по rest/grpc/kafka/etc. Еще пара-тройка дней.
А дальше вылизывание и причесывание - можно годами заниматься.
Целочисленное деление делает то же самое, только без непонятных кастов.
Олсо, к i32 проще кастовать один раз на ретурне, а промежуточные значения оставить как есть usize.
Олсо олсо, у тебя let right переполняется на пустом векторе.
>Олсо олсо, у тебя let right переполняется на пустом векторе.
А, нет, вру, но будет переполняться, если убрать i32.
mid = (left + right) /2
https://www.youtube.com/watch?v=11raTwzQVn4
Не только трансформеры террористы, но ещё и в код насрали.
Надо срочно писать книгу Black hat Rust и фармить роялти вместо ебучих собесов.
Програмулькиваю уже лет 20.
Дохера на чем, последние 5 лет на жявке в банке. Жява пиздец заебала. Да и выше 300к надо идти в лиды, а мне впадлу уже. Мне и сеньером норм.
Есть варики в ржавого переехать? Или там эйджизм во все поля и хуй найду работку?
Перекатился из приевшихся шарпов за ~1.5 месяца ленивого почитывания доки и написания разного говнокода со 2 собеса в Крипто NFT MLG стартап. Можешь задавать вопросы.
Да я про эйджизм прост.
Возьмут ли 45 years old boomer в молодежный стартап?
У меня ж все минусы старичка.
Люблю бухтеть и доебываться до хуевого кода и покрытия тестами.
Не люблю кранчевать.
Я не решил прост еще. Потому в саи язык даж не смотрел.
Какой нахуй эйджизм? Спецов не хватает вообще ни в одном направлении. Если ты реально 20 лет квасишь код значит ты как минимум должен шарить за структуры, алгосы и дизайн. Выучи необходимую базу языка и в путь.
Ты не поверишь, но года 2 назад, когда менял жяваконтору поймал на собесике эйджизм.
Типа ну ты нам не подходишь, а почему - не скажем, иди нахуй.
С учетом того, что я собеседоватора заставил самому зафейлиться на собесике, так что доеба до тех уровня у них точно не могло быть.
Так что это эйджизм явный.
Ладно почитаю бук из шапки. Надеюсь не сложнее крестов, на которых я лет 10 назад ебашил под гнилукс какую то многопоточную хуйню на сокетах.
Значит не вкатывайся в конторы к узким. У тебя 20 лет опыта. Курва, перед тобой весь мир открыт.
> как в сабже решается вопрос цикличных зависимостей?
Единственное правильное решение - отказ от циклических зависимостей
А если очень хочется?
Раст норм?
Какой фреймворк взять?
Чтоб асинхронность была, и все такое.
Чтоб на 128 Мб озу и 1 ядре тянуло 1000рпс
>Чтоб на 128 Мб озу и 1 ядре тянуло 1000рпс
Нахуя тебе столько? Такого даже у визы и мастеркарда
Один синьер помидор с 300к наносек с жирной жабы решил под старую жопу пойти нахер на раст, где 1,5 работы, хер пойми где, вместо того чтобы сидеть в теплой конторке и попукивать бойлерплейт на говножабе. а не просто взять и дома попилить свои говновысеры и забить как 90% растадаунов
Другому на калькуляторе подавай миллиард запросов в секунду, похер что его псевдо 100мбитный канал на дедикейшене говнохостера не вытянет, ибо хитрый хостер уже посадил сотню других додиков на тот же канал.
Третий очередной заскучавший по пет-проектам вкатун, ибо только у вкатунов вечная проблема "что написать", потому как учат язык ради языка бабла.
Хватит жир лить, лучше новостями или лулзами побампайте, чтобы тред было приятно заходить.
Да не трясись ты, трясунок. Радовался бы что к твоему говноязыку интерес у кого-то имеется.
Что плохого в перекате?
Если вспомнить все на чем я пилил за денежку - делфя, визуал фокспро, си, кресты, питухон2, эрланг, дарт, жявка, может еще что пропустил. На заводе, на одеске(жалко забаненый акк сука), в галерах.
Жава в банках это ебаное легаси. Причем лично я на самом некроговне уже второй проект. Jsp, xslt, xml уже тошнит этот кал мигрировать на 11 жявку и бут.
Тот_жява_скуф
Бампай и пости сам.
И там одна вакансия на расте.
С вилкой 2000-4000.
Чет как то не особо после жявы....
А если с забугром работать за усдт, то как легализовать и налить зп?
Рассказывайте.
Почему это работает?
Разве five не должен был разыменоваться после захвата функцией?
>На винде часть кода переписана на раст о чем недавно заявлял какой-то индус из МС на своем выступлении.
бабки во дворе тоже много чего тебе интересного поведать могут. Никто не знает на чем и как написан виндовс и уж тем более какой-то там индус
>Никто не знает на чем и как написан виндовс и уж тем более какой-то там индус
Как индус, который работает в МС и пишет код для винды, не может знать об этом?
а? ты о чем?
Мимо макака, 4 года опыта работы с PHP, 1 год на Golang. Хочеца раст, но вакансий не вижу. Стоит ли учить или хуй пососу?
Он может писать какую-то малую часть или сервис, там же ядро гибридное, вряд ли индуса до того самого ядра допустили бы, которое со времен nt ещё
Персонально же для каждого, у меня быстрее
не знаю как можно разрабатывать медленнее чем на плюсах или си
Возможно тут нужно уточнение, что Option просто дерайвит Copy.
Если сам Т не Copy-тип, то ничего не выйдет.
Могу быть не прав.
Если прав, то это еще одна классная фича, если не хочешь чтобы копировалось без твоего ведома.
Про него забыл, да
Где вы мля работу находите, на ХХ нет. НеТвОрКиНг?
Вся работа с выездом из Рашки, я так не умею
>но когда я пушу заспавленные треды в вектор и потом бегу по нему форичём и джойню то ничего не блочится?
Всё блочится, ты что-то попутал.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=faab3ce69efe482d13dbe760c558fff8
Как и всё в этом мире
У гентушников праздник, время всё пересобирать?
Обьясни плез.
Зачем нужна либа рендера шрефтов?
Я всю жизнь бекенды пилю, а когда пилил фронты мобильные или на пека, то всегда использовал либы операционки, в которых рендер шрифтов встроеный.
Или ты свой набор виджетов/тулкит/де делаешь?
вкатываюсь в раст потому что у нас весь тулинг переползает на него + по работе надо. Слишком жирно для тебя?
мимо фронтендмакака
Мне незачем, просто проект полезный сам по себе.
Он no-std, соотв. его можно пробовать запускать на ардуинах. Если тебе нужно запилить гуй в 3D-мире. HUD в прошивке монитора etc. WASM тот же.
Почему кажется полезным - написан на сопоставимом с С++ по скорости исполнения языке, но при том безопасном. А сама задача рендеринга шрифтов, штука подверженная уязвимостям, поскольку требует инпут с большим количеством возможных состояний и RCE-шек уже много скопилось (по крайней мере на винде наслышан).
Кстати, там рендеринг только часть всего этого пакета.
Если это так, то представь в какой ты жопе. Сидел себе пердел на жопоскрипте, а теперь за те же деньги надо раста навернуть. Причем раст это ни разу не какой-то там тайпскрипт, там впервые тебе фронтенд макаке придется думать.
и конечно, твой пост не отменяет того, что коляска периодично от скуки набрасывает в этот тред, и предыдущие посты были откровеhttps://2ch.hk/api/captcha/2chcaptcha/show?id=8bfe979a8fad97ae812c1046fcf6f067f1d798f974b4cc7006f223cafcf2bcc7ce3ba34f59a4172f75f865b42bbf8e739931317980982e596e7027f9dc50ccecbea7нной (М) толстотой, хотя судя по реакции, ты он и есть
>fixprice
и конечно, твой пост не отменяет того, что коляска периодично от скуки набрасывает в этот тред, и предыдущие посты были откровенной толстотой, хотя судя по реакции, ты он и есть
Жаба - там ппц тухляк, хотя кокотлин поначалу зашел, но опять же все на тухлой жабье инфраструктуре, ну её.
Го - вроде и можно, но в тоже время какая-то откровенная не допиленная бойлерплейт халтура и издевка над всей индустрией программирования за 40 лет.
Шарп - вроде, кучу нативной шустрой херни завезли, вроде как можно даже блоки без гц навернуть, когда надо. На с мягкими возиться, ненароком и на EEE наскочишь, а там и тотальный вендерлок или страдай будет.
А вот раст вроде такой универсал и вроде тухляк на хайпе. И реально не понятно.
Как вообще на нем многолетние проекты пишутся? Стоит ли это всего этого, или тупо забить и взять язык с гц и вообще не вспоминать про владения и чекеры.
В общем, анонче, вдохнови на раст, в основном я вижу там сишники чето тряпками бросаются друг в друга, а вот для меня эта победа над памятью не сильно то и радует, ибо с ней никогда и не боролся.
Почему раст может сойти за универсальный язык, или для универсала он слишком низкоуровневый?
Как-то заглядывался на кложу, мне нравится концепция - данные важнее алгоритмов, я даже 15 назад ковырялся в проекте, где все было вокруг ассоциативных массивов построено и это был интересный опыт. Но! Знакомый сказал что все это туфта и в кложе все вокруг макросов вертеться, мол не все так радужно как заливают.
Что любить в сях? Не против них, просто вот не тепло не холодно от него.
Если реально для души, как ты пишешь, то остается только хаскелл. Но если тебя волнует результат твоей писанины, тогда конечно надо выбирать под твою задачу. Сперва определись с архитектурой, в которой будут исполняться твои программы, их предметная область, и возможность расширения твоего прототипа в будущем (надо тебе это или нет, только маленькие PoC).
У тебя вопрос подходит под Ньюби-тред.
Короче на данный момент расклад таков, что наши дети будут юзать связку из TS+Rust+Mojo для любого плана проектов и это есть хорошо.
А почему TS ? Сколько, кстати, V8 весит? И как его интегрировать в свой проект быстро и безболезненно?
Про Mojo пока непонятно что это, кроме громких заявлений и имен ничего не видно.
Либо он будет с синтаксисом питона, но не general purpose, как они заявляют, а урезанный по возможностям.
Либо синтаксис будет просторный и многословный, вместо компактного вырвиглазия Rust'a и надо будет много больше печатать, чтобы описать то же самое. Точно больше и шире чем в С, С++. Может как в SPARK по объему.
Либо он будет медленный в исполнении кода (медленней С, С++ и Раст) но зато действительно, с синтаксисом питона.
Такое только в растошизотреде можно увидеть.
Наши дети будут писать на c++32 возможно на cpp2 или circle, и на питоне 4.
Я слышал что просто берут нормальный язык и подключают z3 по мере надобности. (может и неправ)
>А почему TS ?
А потому что чистый JS - полнейшее говно.
>Сколько, кстати, V8 весит? И как его интегрировать в свой проект быстро и безболезненно?
Юзать ноду или дено?
>>701503
>c++32
Я конечно ни на что не намекаю, но даже сейчас наиболее распространённые стандарты это 11 и 14. Ну и какие к чёрту плюсы во второй половине 21 века, ты дебил или да?
Чел, они вечны исключительно из-за легаси и то я детей буду натаскивать на то, чтобы где бы они не оказались сопротивлялись пинанию трупа и переписывали всё на нормальные языки.
Вим это лучшая и универсальная иде
>Но если тебя волнует результат твоей писанины
Все что нужно знать про всяких хаскелистов и им подобных. Код ради кода, зачем тебе результат, закрылся в шкафу и дрочи в колготках.
>TS
"Компилировать" в javascript, это, наверное, самая забавная глупость последнего десятилетия. Ну нафига вам прокси языки? Из этого все равно получается два языка на одной зарплате.
Нет, они вечны потому что все еще требуется неуправляемая архитектура. Просто в 90е годы плюсы были всем, но со временем их просто сместили с прикладного уровня. То есть он сейчас в той позиции что на вряд ли что его сместит. Если только на расте и иму подобным не напишут какие-то ультра удобные тулзы и движки.
А вот место раста я реально не пойму, для системщины нужен тру скилл и байты ручками потрогать, а для прикладного уровня есть всякие ваши шарпы, го, джавы или даже тот же js c тем же электромном. Ведь только представьте, впервые ГУИ реально стали выглядеть честно одинаково на всех платформах. Так что еще не понятно какое будущее ждет. То есть, стоит ли брать раст, когда тот же жопоскрипчик или шарпо-аниме-переросток напишет тоже самое в 5 раз быстрее?
>То есть, стоит ли брать раст, когда тот же жопоскрипчик или шарпо-аниме-переросток напишет тоже самое в 5 раз быстрее?
Я имею ввиду брать в продакшен, потыкать и поиграться стоит, вдруг реально перестанут пилить бабло и начнут писать и напишут что-то популярное, что взлетит. топ игровой движок на вебассембле, я вероятно уже не дождусь, ибо уже завезли гц и не удивлюсь, когда быстрее напишит подобное юнити на жопоскрипте, но надежда на комьюнити все еще есть, на менегоров нет, а вот на комьюнити...
>А вот место раста я реально не пойму, для системщины нужен тру скилл и байты ручками потрогать, а для прикладного уровня есть всякие ваши шарпы, го, джавы или даже тот же js c тем же электромном.
Добавлю, что для действительно критических систем тоже существуют свои инструменты, аля Ada, Coq и т.д., которые гарантируют работоспособность, чеем раст похвастаться не может.
Куплю бесплатно на месяц, а потом куплю бесплатно на месяц, а потом куплю бесплатно на месяц. Такой пойдёт?
>Добавлю, что для действительно критических систем тоже существуют свои инструменты, аля Ada, Coq и т.д., которые гарантируют работоспособность, чеем раст похвастаться не может.
Слышал что Ada тоже что и Rust, только кода на расте меньше писать, намного проще работа с многопотоком, есть линейные типы, в отличии от Ada (что добавляет безопасности), и намного быстрее в исполнении чем Ada.
Про Coq не слышал раньше таких сравнений с general purpose language, какие на нем прикладные приложения написали? Он вроде не тьюринг-полный язык, а скорее DSL для проверки корректности теорем.
Из-за таких как ты, бедные котлинисты голодают и до сих пор не могут найти исключения в асинхронном коде.
Не в курсе, но речь тут не в том чтобы самому из говна и палок собрать что-то, а чтобы тебе дали готовые тулзы и ткнули где и как писать.
Ну, они сыграли в санкции. Я не могу помочь им на дошик, даже если до этого у меня была подписка на один из их продуктов.
>Ненужно
fn collect(...
fn collect_with_int(...
fn collect_from_my_huy(...
fn collect_from_my_huy_and_int(...
fn collect_from_my_huy_and_int_and_ass_rust_programmers(...
Ничего страшного плюсо макака, отучиться чтобы писать не как идиот и не тащить все говно из плюсов бывает сложно, но уверен у тебя получится
Поколение которое не может отличить функции по сигнатуре аргументов.
Перегрузка может и лишнее, но от дефолтных аргументов я бы наверное не отказался.
> высрал что то непонятное
> прикрепить картинку
На этот пост также ответишь, дегенератина, которая не может пару функций как человек написать?
Вы уверены что программирование это для вас?
>не может пару функций как человек написать
Обосрался чет. Ушли от Си, чтобы в конечном итоге прийти к Си.
мимошел
Ты долбоеб, зачем такой говнокод пилить? Дженерики и трейты на какой хуй придумали?
Можно при помощи трейтов организовать, написать трейт и имплементировать его для разных типов на подобии стандартного From<T>. Или например аргумент дженерик, который имеет имплементацию нужного трейта. Короче есть разные варианты, но писать как в говланге или сишке метод для каждого типа это какая-то специальная олимпиада.
Лол, перегрузка через костылеварение, хоть как-то фиксит отсутствие дефолтных параметров раздуваю до звездеца, привет жаба!. Но тупо нет ни того ни другого.
И как это вообще можно любить? Туда ли я полез вообще...
>Лол, перегрузка через костылеварение, хоть как-то фиксит отсутствие дефолтных параметров
А кстати, как это делается?
Если я вызываю myZloopah(a) и у меня есть 2 варианта этой функции
myZloopah(foo) и myZloopah(foo, bar = 'baz')
Че инвокаеца? А? А?
Говно ваши фичи блять не удобно, пиши на чем дают, ешь жука, еби трапа и не бухти
Что там тебе бесчеловечного? Тебе надо так?
fn collect_1(...
fn collect_2(...
fn collect_3(...
fn collect_4(...
fn collect_5(...
Менегеры так торопились с попилом бобла, что положили болт на базовые мастхев вещи. Для меня это как пойти поссать не сняв штаны.
>fn collect_1(...
>fn collect_2(...
>fn collect_3(...
>fn collect_4(...
>fn collect_5(...
Повторюсь, вы уверены что программирование это для вас, если у вас такая простая задача заставляет писать говнокод?
> базовые мастхев вещи
> плюсомакака настолько разучилась прогать, что уже не может без них пару функций написать
в голос
>задача раста с памятью работать безопасно и не выебываться
Тогда нахуя он вообще нужен, если
1) Раст ничего не верифицирует и не гарантирует, поэтому бесполезен для критически важных систем. Nvidia для своих йоба-вещек, например, Ada SPARK взяла и целую PDFку выпустила "Почему не раст"
2) Можно писать на языках где проблемы с памятью решеный фундаментально.
3) Если нужна производительность и сырая ебля байтов, то можно написать ядро программы на Си, а потом последовать пункту 2.
>Ты долбоеб, зачем такой говнокод пилить? Дженерики и трейты на какой хуй придумали?
Ты же понимаешь что перегрузка не только для типов нужна вида
foo(int v)
foo(long v)
foo(double v)
Там вообще могут быть разные по природе вещи, совершенно не совместимые по типам, но совместимые по логике.
foo(int v)
foo(List<T> v)
foo(MySuperStruct v)
Древние, не просто так придумали перегрузку, умея под боком шаблоны/дженерики.
Не, хуйня полная.
Они начали догадываться, сир.
Мне все еще нравится в заголовках в медиа, мол почему раст язык будущего, мол почему раст возноситься над другими языка. То есть, они за 8 лет до сих пор находятся в оправдательной позиции типа "почему тебе это надо взять".
Другая мега жесть, это как js-никам начали затирать почему им надо вкатываться в раст, потому что где-то там напердолили очередной траспайлер. Вы представили лица код js-разрабов, которые с js на раст прыгнули. Ладно питонистов на го натягивали, но этот пранк зашел очень далеко.
Так перепиши мне это:
foo(int v)
foo(List<T> v)
foo(MySuperStruct v)
foo(float v, string s)
foo(List<T> v, int i, int k)
foo(MySuperStruct v, int i, int k, string s = "default")
Я тебе не отвечаю, потому что ты возмущенно пукаешь в воздух, но ничего конкретно не говоришь. Раз ты докопался, то покажи как это решить, не переписывая составные типы.
Есть нормальный (реальный) пример где с перегрузкой вообще всё красиво и по кайфу, а без неё пиздец?
Все их претензии сводятся к тому что раст это больше найтли чем стейбл. Все есть.
> перепиши мне это
>foo(int v)
>foo(List<T> v)
>foo(MySuperStruct v)
>foo(float v, string s)
>foo(List<T> v, int i, int k)
>foo(MySuperStruct v, int i, int k, string s = "default")
Сеньёр говнокодер еще и составные типы догадался впихнуть? Как бы я это написал?
Никак, как и все адекватные люди, тебя бы за такое на код ревью просто прирезали
кроме плюсов конечно, они находятся в разделе для одаренных, и уверен они штуки и похуже пишут
> Раст ничего не верифицирует и не гарантирует, поэтому бесполезен
Можешь дальше не продолжать, чел. Очевидно что этой мове пиздец и никакое будущее его не ждет.
Все ниши заняты, убить кресты не получилось, личерали нет ни одной ниши где раст бы был на коне.
По словам нахрюк на котором можно писать шо хош от веба до эмбеда, а на деле выпук какой-то. Итс ооовер
>Так перепиши мне это:
Что твоя foo делает и что возвращает?
Если нихуя, то вот fn foo<T>(v: T) {}
>>703543
В реально мире, когда ты не безработный студент и не скучающий на дваче инвалид колясочник, ты не можешь зайти в офис и сказать, что вы все дауны и не дотягиваете до двачеров, которые одни только могут писать писать многолетний код.
И начальнику ты не объяснишь что не можешь расширять его бизнес, потому что метод стал принимать слишком много составных типов и уже выглядит крайне не красиво.
Это простой пример кода, некой сборки, которая принимает на вход тучу разросшихся составных типов из бизнес-логики и выплевывает что-то одно (если с опытом совсем туго, представьте это как рендер чего-то). Забавно что на таком простом примере растеры обосрались и начали маневрировать, но я все еще хочу увидеть конкретно, как в том пример ненужна перегрузка
> вы не можете просто так говорить что это говно
> ведь это говно может быть легаси говном которое будет лень кому переписывать
А ну тогда ладно, тащим в раст срочно!
PS на самом деле я ждал мантру про макросы, но местные растеры настолько далеки от реального кодинга, что начали мантру про то что программисты плохие, а не язык виноват.
>которая принимает на вход тучу разросшихся составных типов из бизнес-логики и выплевывает что-то одно
Про билдер патерн мы не слышали? Ах да, его хуй напишешь на плюсах без 100500 перегрузок под мув\не мув\конст случаи
> рендер чего-то
соболезную тому кто будет пользоваться твоим рендером принимающим всё что угодно, так еще и в составном виде
Как тебе макросы с перегрузкой помогут, умалишенный?
Да я понимаю что раст вариться в таких конторах, что легаси код там появиться никак не может. Но я реально вижу как без перегрузки начнется простыня ручных перегрузок, или макросная магия, когда код попадет в реальный продакшн, а не очередное попукивание на круд-микросервисе.
>билдер патерн
Жаба-господин вспомнил про ООП паттерны, находят в треде процедурного язык.
Да начнется говнокод!
> билдер патерн
> ООП паттерны
Лан чел, ты я прекращаю тебе отвечать, просто троллинг тупостью уже идёт
Ну так пруфани паттерн на процедурном языке. я уже молчу что билдер это паттерн создания сложных объектов и ты вообще мимо ткнул
Как перегрузки дискаверить кроме как сделать догадку о её существовании и в IDE подсмотреть сигнатуры у конкретной функции/метода? Я могу глазами пробежаться по списку методов типа, но вручную прописывать название каждого метода и смотреть, какие у него есть/нет перегрузки это маразм.
>если с опытом совсем туго, представьте это как рендер чего-то
И как часто такие опытные как ты пишут говнокод для рендера? Я понимаю такую хуйню реактодебилы писали бы со склибокса, но для человека который пытается выдать себя за умного и опытного такая ебанина выглядит мягко говоря странно.
>>703520
>foo(int v)
>foo(List<T> v)
>foo(MySuperStruct v)
>foo(float v, string s)
>foo(List<T> v, int i, int k)
>foo(MySuperStruct v, int i, int k, string s = "default")
Ты как эту хуйню собираешься поддерживать?
>Там вообще могут быть разные по природе вещи, совершенно не совместимые по типам, но совместимые по логике.
>foo(int v)
>foo(List<T> v)
>foo(MySuperStruct v)
Как ты так умудрился сделать что у тебя в одно место приходят совершенно разные по смыслу типы? Я еще понимаю скалярные типы вместе или коллекции, но взять вообще совершенно разные типы и натягивать сову на глобус выглядит немного странным. Я понимаю еще всякие сериализации в json, но в остальных местах в чем смысл так делать, чтобы интереснее было такой код поддерживать?
>>703637
Когда тебе надо что-то сконвертить и смотришь методы (по сути API) класса, ты в первую очередь смотришь перегрузки нужной тебе функции чтобы понять как в неё "это свое" передать, т.е. в каком виде. И чем богаче этот список, тем удобнее становиться эта "апишка", то есть становится больше возможностей. Я просто поражаюсь насколько неопытные люди тут сидят.
Я понимаю, фанбою надо маневрировать, но представьте, когда несколько функций делают одно и тоже, но называются по разному, это гребанное средневековье.
> я самый тупой вопрос задам
> нет я ещё тупее задам
>Когда тебе надо что-то сконвертить
Для конвертации это понятно, просто ты всякие foo пишешь которые у тебя хуй знает чего делают. О той же конвертации я выше писал есть трейт From который можно имплементировать для нужного типа или что-то подобное можно реализовать на трейтах и дженериках.
> И чем богаче этот список, тем удобнее становиться
Лол, а потом кто-то другой читает этот говнокод и ощущает на себе все эти удобства.
>Я просто поражаюсь насколько неопытные люди тут сидят.
У меня нет опыта создавать себе и другим проблем и героически их решать. Есть метод он принимает определенный тип, я перевожу в этот тип и передаю туда или использую дженерик, либо impl Trait в качестве типа и мне не нужно плодить десятки копий одного и того же метода и писать тесты на все эти копии ты же покрываешь тестами свой говнокод, да? любой другой прочитавший название метода, что он принимает на вход и что отдает с одного взгляда поймет что он делает.
>фанбою надо маневрировать
На фоне того как ты маневрируешь не первый тред куда нам до тебя не фанбоя
>что-то подобное можно реализовать на трейтах
Можно и гланды через жопу удалять. Эти костыли никак не заменят перегрузку функций и тем более не оправдывают её отсутствие.
То есть, когда они затрахались как в го перекидывать ошибки руками, они "вопросик" добавили, а теперь что, надо их заставить промышленный код пописать, чтобы они остальные технологии древних принесли?
Походу эти ваши расты и го нужны лишь для того, чтобы я еще сильнее ценил тот язык на котором пишу.
Так вот, что я вижу, будущее оно вообще мимо нативного мира проходит. Я, конечно, вижу мега хайп вокруг хруста, но явного этого мало? Там даже какой-то хер наигрался и уже в язык зиг, что доставляет, что все это для некоторых как временная забава.
Что думаете колеги?
Ты опять весь текст проигнорировал вырвав только нужное?
Спрошу прямо, почему ты пишешь говнокод где нужно все перегружать? Как ты эту хуйню тестами покрываешь?
> когда они
Кто они?
раст + отп(элексир/эрланг) = кишки ВСЕХ тырпрайз проектов ближайшие n лет до изобретения адекватного "executable UML"-like CASE инструмента, в котором проект будет генериться и обновляться напрямую из требований пользователей (может даже без их уведомления, анальным зондом, считывая частоту слов в диалоге с домашним питомцем); Рассматривай жс как вендор лок от текущего тырпрайза или как понятный инструмент для изобретателей-адаптаторов велосипеда для бизнеса вне глобального тырпрайза;
сомнительное высказывание про "архитектуру жабы, дарта, шарпа" по мне это пункт 2 предыдущего сообщения.
Мир как работал на
язык для веба + императив без сборщика + язык инфраструктуры (js + c++ + erlang);
так и будет только на
wasm + ada/rust-like имп. яп с верификацией + elixir
В идеале ваще завезут верифициремого сына раста и эрланга в одной коробке, который можно и в свитч засунуть и гуи налепить, назовут java3000/F##/TypedTypeScript/RustedRUST и будут дальше формировать плановую экономику blackrock'a и вангварда.
Коротко о том, что мог бы дописать:
иллюзия "малость мегахайпа и невключенность в нативный мир" и факт замещения всего инструментария системного программирования, вроде бы конфликтуют.
Там тебе разжевали, где обобщенные типы и костыльный полиморфизм не помогает. Нафиг мне целиком твои бестолковые тесты цитировать и нафиг мне тебя развлекать, иди работу найди уже, ты не несешь никакой полезной информации для дискуссии.
Ну так кто они? Создатели го и раста разные люди, ты тут в кучу все собрал и назвал они.
И да как ты свой говнокод тестами покрываешь, как изменения вносишь?
>Там тебе разжевали, где обобщенные типы и костыльный полиморфизм не помогает
Для обобщенных типов есть дженерики, в расте есть трейты например те же коллекции имплементируют трейт итератор и можно написать impl Iterator в качестве типа (как с интерфейсами в жабе), нахуя перегружать на пустом месте? Ты же выше примеры приводил вообще с числом, коллекцией и структурой для одного метода, еще и гордишься таким адовым говнищем.
> Нафиг мне целиком твои бестолковые тесты цитировать
Лол, ты либо вкатун, либо пишешь низкосортную хуйню в конторе рога и копыта, поработаешь в приличном месте с годик сам начнешь код тестами покрывать потому что так быстрее и проще, к тому же в их пайплайн можно добавить.
>ты не несешь никакой полезной информации для дискуссии.
Я и не несу информацию, а просто спрашиваю тебя зачем ты говнокод пишешь, но ты виляешь жопой
>>704173
1) Начнем с того, что папку при сборке раздувает с 2МБ до 200М+, но это еще как-то можно пережить.
2) Бинарник весит 4.2МБ против 240КБ бинарника на Си с аналогичными функциями(у обычного lsusb даже более понятный вывод) и с почти одинаковым количеством динамических зависимостей
3) НА ЕБУЧУЮ ПРОГРАММУ, КОТОРАЯ ЧИТАЕТ ИНФОРМАЦИЮ С ОДНООГО МЕСТА И ВЫВОДИТ ЕЕ НА ЭКРАН ТРЕБУЕТСЯ БОЛЕЕ СОТНИ ЗАВИСИМОСТЕЙ ИЗ ИНТЕРНЕТА, КОГДА ТАКАЯ ХУЙНЯ ПИШЕТСЯ ПОЧТИ БЕЗ ЗАВИСИМОСТЕЙ.
Вы же шизы ебаные. Все ваше блеяние про безопасность порешалось веб-парашной культурой разработки. Вот посмотрите на ветку зависимостей и скажите в какой из пакетов вам закинут говняк. А это системная утилита, если что.
>раст + отп(элексир/эрланг) = кишки ВСЕХ тырпрайз проектов ближайшие n
У меня такое ощущение, что вы в каком-то манямире живете или вообще в другой вселенной
LTO
T
O
https://lifthrasiir.github.io/rustlog/why-is-a-rust-executable-large.html
мимо не крастер, ссылка из шапки
я просто мимоинженер маленьких систем, которого заставляют работать по стандартам nato architecture framework прости уж за мой манямир
>по стандартам nato architecture framework п
Да хоть по стандартам галактического империума. В нашем мире тырпрайз - это всегда древние копролиты кода. Где-то даже от кобола не избавились. Собственно, на то он и кровавый тырпрайз.
Нахой оно не нужно с такой разницей в бинарниках.
Критически важную инфраструктуру уже давно с кобола переписали это байка и реальность критически не важных "крупных" компаний.
При всем уважении к вашему локальному глобальному тырпрайзу
По название ссылки думал, что сейчас открою и прочту кратко "почему", а там на пол книги лол.
мимокрок
>апку при сборке раздувает с 2МБ до 200М+
Ппц наверное раст там ssd радует. Как такое могло вообще из альфа версии вылезти? Что будет с проектов в 100мб?
Тред для программистов, а не долбоёбов. Засунь свой GPT туда, откуда он у тебя вывалился, и уходи.
Как можешь заметить по скринам libusb и libudev вкомпилены статически в бинарник и занимают большую его часть.
Придраться можно только разве что к ленивости прогера (и нежеланию велосипедить, что частенько приводит к уязвимостям разбора инпута), который использует clap за его триллион фич. Этот крейт, в частности использует также автогенерацию ман-страниц и bash-комплишнов.
Можно скинуть около 500 кб, если заменить clap и serde (оба были поруганы реддитом за размеры) на легкие альтернативы.
сам крейт занимет 330 кб, стандартная либа раста еще 250. Остальое все мелкое.
В таких случаях будут использовать https://github.com/Swatinem/rust-cache чтобы github объекты хостил, или https://github.com/mozilla/sccache для своего сервера.
Видно, что прога стала довольно мало занимать если стдлиб, libusb и libudev вытащить. Еще clap так и остался, но его мне влом выпиливать.
@
1990-2000 твой устарелый пк не тянет в игры, да и вообще характеристики уровня калькулятора, поэтому единственный вариант изучать программирование.
@
2020 чтобы скомпилить маленькую программу на системном расте, тебе нужен парк компьютеров, облако, солнце, звезды, и 50% млечного пути.
Когда мы повернули не туда??
Я с тобой согласен потому что сам такой же, но человекоресурсы ограничены, а люди выставляют приоритеты сообразуясь со своими нуждами.
Не сочти за рекламу:
dns-shop.ru/product/02d939ff43d23332/1000-gb-25-sata-nakopitel-apacer-as350-panther-95db2g0p100c/characteristics/
>Гарантия от производителя 36 мес.
>Объем накопителя 1000 ГБ
>Максимальная скорость последовательного чтения 560 Мбайт/сек
>Максимальная скорость последовательной записи 540 Мбайт/сек
>Максимальный ресурс записи (TBW) 600 ТБ
>DWPD 0.76
4 899 ₽
Просто признай, что ты привык выживать в тех условиях, и у тебя просто PTSD/ У меня похожая проблема. Иногда лезу на вкладу пикрела и сижу там, медитирую.
Может просто не брать раст? Может хватит кушать низкокачественные продукты. Я понимаю там люди js компилируют в js и это кажется им нормальным, но тут у нас как бы системный язык, я не жду от него быстрой компиляции, но раздувания в порядок и не один, это уже слишком.
Зиг и прочие новые яп так же этим болеют? Это из-за llvm?
Не собираюсь переубеждать, но мало ли тут кто будет проходить с такой же проблемой.
Существуют файловые системы которые прозрачно и быстро сжимают повторяющиеся данные. Это проблему безразличия разрабов компилятора к твоей проблеме не решает, но поможет снять симптомы.
Из того что описано в статье из шапки - раст линкует все зависимости в один бинарник, там ещё болтаются минимальные jemalloc и libstacktrace для дебага. + debug строки.
Если кто-то посетит этот тред и я не прав - поправьте.
не, про размер конечного бинарника более менее понятно, я имею ввиду почему папку проекта с 4мб до 200мб может раздуть? Болеет этим же с++?
Вообще, в каком сейчас состоянии машинное обучение? Лет 10 туда не совался, игрался ещё на гвидоне с numpy и pandas.
Гачи-мачо сверху - автор проекта polars
>Так перепиши мне это:
>foo(int v)
>foo(List v)
>foo(MySuperStruct v)
>foo(float v, string s)
>foo(List v, int i, int k)
>foo(MySuperStruct v, int i, int k, string s = "default")
enum Sperma {
Belogo(i32),
Negra(List),
Aziata(MySuperStruct),
Latinosa(f32, String),
Trapa(List, i32, i32),
Churki(MySuperStruct, i32, i32, String),
};
fn foo(arg: Sperma) {
match arg {
Sperma::Belogo(v) => {},
Sperma::Negra(v) => {},
Sperma::Aziata(v) => {},
Sperma::Latinosa(v, s) => {},
_ => {},
}
}
написано в комфорте мобильного устройства
>Так перепиши мне это:
>foo(int v)
>foo(List v)
>foo(MySuperStruct v)
>foo(float v, string s)
>foo(List v, int i, int k)
>foo(MySuperStruct v, int i, int k, string s = "default")
enum Sperma {
Belogo(i32),
Negra(List),
Aziata(MySuperStruct),
Latinosa(f32, String),
Trapa(List, i32, i32),
Churki(MySuperStruct, i32, i32, String),
};
fn foo(arg: Sperma) {
match arg {
Sperma::Belogo(v) => {},
Sperma::Negra(v) => {},
Sperma::Aziata(v) => {},
Sperma::Latinosa(v, s) => {},
_ => {},
}
}
написано в комфорте мобильного устройства
Радует что тут есть программисты.
А так ппц бойлерплейт, конечно, но хоть есть структуризация, где можно понять, что это что-то общее, чем просто нейминг функций (перегрузка ручками).
В матчинге все равно придется заюзать функции, потому как велик шанс (так как перегрузка), что одни функции будут дополнять другие в себе. То есть, по сути, все равно придется писать перегрузку ручками и тогда енам вообще избыточен. Но как минимум можно спрятать эти кишки, что уже лучше, но да, бойлерплейт чистой воды.
можно еще так:
trait FooTrait {
fn f_fn(Self) -> ();
}
impl FooTrait for (i32) {
fn f_fn(Self) -> () {...}
}
impl FooTrait for (Ve3c<()>) {fn f_fn(Self) -> () {...}}
impl FooTrait for (St) {fn f_fn(Self) -> () {...}}
impl FooTrait for (Vec<()>, i32, int) {fn f_fn(Self) -> () {...}}
...
fn kk<T: FooTrait>(t: T) {
T::f_fn(t);
}
Выглядит как говнокод, не силен в клинописи, ты тупо заимлиментил все под рандомные сигнатуры?
Вообще все это говнокод, никто не говорит что в перегрузке участвуют однотипные сущности, более того он показывает что там рандом какой-то, поэтому группировать то, что не имеет группы это джунский говнокод. Единственное решение это прям писать как есть:
collect_i32(...) // а лучше так collect_from_price(...)
collect_employee(...) // collect from employee
collect_employee_groupId(...)
collect_employee_groupId_tempCategory(...) // collect from employee with group id and temporal category id
collect_list_price(...)
Общий код можно писать вне матчи
Херню начинаешь нести ты, когда зачем-то пытаешься объединить "необъединяемое", словно ньюфажа в программирование. И я знаю, ты это понимаешь и от этого у тебя подгорает еще сильнее.
Перегрузка функций объединяет действие (де-факто), но не сущности, которые она принимает, поэтому енамить или еще как-то группировать может начать только джун.
>Перегрузка функций объединяет действие (де-факто), но не сущности
И каким образом трейт объединяет сущности?
Да просто тот шиз когда в тред заходит никто ему серьезно не отвечает, спросил бы сразу чего ему надо много кто подобный вариант написал, enum и match в расте используется везде. А так доебался до перегрузок как пьяный до радио, при этом на вопросы что и зачем ему надо говорит о всяких абстрактных апишках и рендерах, разумеется все хуй об него вытирают.
Все там было понятно, мимохер пукнул, что перегрузка нужна, кто в очередной раз сказал ненужно а как иначе, её же нет, лол, начал(и) срать примеры не однотипной перегрузки, когда неинты и лонги пропихивают, а когда может влететь все что угодно.
Причем это реально не редкость когда классы могут собраться из другого класса (если уж совсем пример для тупеньких, например класс строки собирается из строки, массива чаров, чисел, какого-то стрингбилдера или вообще чего угодно где есть интерфейс toString).
Поражает не то, что кто высрал енамы или трейты, а то что аноны не знаю когда перегрузка задействована. Тут или просто похер тогда зачем в треде сидеть, где Семён периодично накидывает, или же реально сидят аноны уровня хеллоу-ворда.
Ппц капча, это мой ластовый пост тут.
Очередной язык где выпилили древние технологии и снова очередной вой про то как это ненужно.
И нет бы занять позицию - хотим и дайте, нет, будут сидеть и терпеть "ненужно", пока не завезут.
Согласитесь, раст был бы куда приятнее если бы были дефолтные аргументы и перегрузка. Никакую избыточную нагрузку это это для программиста не несет, только для авторов компилятора.
Какой смысл штамповать языки, если везде всё одно и то же, только где-то всё в camelCase, где-то змейкой, и те же, абсолютно, парадигмы. Абсолютно одно и то же, с тем же функционалом? В чём смысл то тогда?
Ты ещё пожалуйся, что не завезли из коробки абстрактные синглтон фактори бин фактории.
мимо
Проект через cargo new инициализируется с гитом веткой master.
После добавления строки в депсы, ебало мозг ВОПРОСИКАМИ !!!, пока не переименовал в main.
Это стандартное поведение? Социальная справедливость и её война? Или я что-то не то делаю?
>Социальная справедливость и её война?
Это.
Чувак, они даже константы по типу deadbeef, deadbabe и т.д запрещают у себя использовать, потому что это не этично. Но в то же время срут паражей в ченджлогах компилятора и просят поддержаь переворот в другой стране.
Не, с константами понятно, это для тулзы к репо компилятора. Но тут немного охуел, не мог понять что чекеру не нравится, хотя оно забилдило несмотря на "ошибку" в Cargo.toml из-за названия гитовой ветки.
>срут паражей в ченджлогах компилятора
Вот это ещё пока не видел.
Очевидно, что эффективные менеджеры от скуки заигрались в твиттер. Теперь лгбт понос будет встроен тебе в компилятор.
Зачем вы участвуете в этом фрик-шоу?
Надо было переименовать в white_master
Так наоборот же весь мир против текущей попытки переворота, нет?
> срут паражей в ченджлогах компилятора и просят поддержаь переворот в другой стране
Это где такое?
У меня половина жаваскриптовых библиотек в доках развесила флаг Украины. Как что-то новое.
Tbh тоже немного настораживает, что в расте так много мелких зависимостей. Поставил один rand - получил 10 зависимостей. И я ещё не пробовал ставить всякие сериализаторы/веб фреймворки/етц. Я не знаю, может на плюсах так же.
Но вот то ли дело шарпы, там в зависимостях преимущественно болтаются стандартные библиотеки.
Горжусь за Сишечку.
Тут больше радует версия 2.5.0. Сколько раз обертка патчилась, что перепрыгнула мажорную версию.
с 2015-го, подразумевает, что там вышло аж 2 эдишона раста помимо варианта от 2015-го, 2015, 2018, 2021. imo норм
> Есть кодобаза на плюсах
> Плюсы я учить - не хочу
> А вот переписать всё на раст не зная ни плюсов, ни раста - я хочу
Я правильно понял?
мимокрокодил
Примерно так. Плюсы я ещё немного знаю, по крайней мере в исходном проекте могу разобраться, да и сам программист. Но в C++ за время его существования накопилось слишком много нюансов и мне придется потратить дополнительное время на их изучение в свободное от работы времени.
>>711880
Семён хватит набрасывать, займись делом.
>Но в C++ за время его существования накопилось слишком много нюансов и мне придется потратить дополнительное время на их изучение в свободное от работы
Да, а раст тебе сразу в голову прошьется. Научные работники, которых мы заслужили.
Тебе тогда придется учить и раст и с++ если хочешь переписать, плюс еще есть риск того что нужных либ на расте не окажется и придется ручками писать обертки.
Если сам ты можешь писать как хочешь, хоть в си стиле, то обертки тебе придется оборачивать уже со всем багажом знаний с++
Однажды у меня будет много времени, и я подсяду и на плюсы. А пока надо подсесть хотя бы на раст на уровня опытного пользователя ПК.
Нет, я к тому, что эти шизы тащат в язык костыли, которых в нём нет, просто потому что привыкли.
Мне вот раст после шарпов и фронтоблядского ever changing js нравится, перегрузки у меня и в шарпах есть. Зачем из НЕ плюсов опять собирать ПЛЮСЫ?
Повторюсь, что знаком с C++ и успел поработать с памятью, стандартной и не очень библиотекой, а также с системой сборки. Поэтому и поглядываю в сторону Раста, так как на первый взгляд видна попытка побороть недостатки плюсов. Но побаиваюсь, что первое впечатление окажется обманчивым.
Скомпилилось. Я в процессе пробовал ещё раз пересоздать проект.
В итоге просто поставило мне крейт, и ничего даже не сказало про то, что ветка называется master. Надо был сфотографировать в тот раз ошибку. My bad.
Надо из С++ в раст перекатываться, а не из прикладных в системные. Веб-круды у тебя работать быстрее не станут, скорее через неделю начнут крашится потому, что костыль не умеет фиксить фрагментацию памяти.
Только вот плюсовику с его обилием готовых либ, это тоже нафиг не надо все.
Слишком грубо?
А не думали как для носителей языка звучит раст? Они буквально слышат "ржавый". Мол, пойду писать на ржавом. Что там у ржавого обнова вышла? На линуксе и в винде теперь есть ржавчина!
Да нет, не думал просто, что даже если захочу навернуть крудов, то пососу от фрагментации.
Если нет прогрева кэша на пару часов, то тупо рестартуй в 3-4 ночи.
Раньше так делали, но там больше потому что сишные приложухи ппц как текли, до фрагментации бы тупо не дожили.
Пиздос какой-то, анон. Я думал всё прям хорошо. То есть если по какой-то причине бэк на расте окажется на проде, надо ещё подумать о том, чтобы ноды перезапускать планово? Ох лил.
Пока Семен балуется, кину вам статейку, раз никто контентом не бампает.
Сколько памяти вам нужно для запуска 1 миллиона одновременных задач?
https://www.reddit.com/r/programming/comments/13o4nr5/how_much_memory_do_you_need_to_run_1_million/
Шарп рили наступает.
>>713634
In the C# implementation, you don't need to call Task.Run(...). That adds the overhead of a second task continuation.
Without that extra overhead I observed less than half the memory usage on the 1M benchmark, from 428MB down to 183MB (code here: https://github.com/J-Bax/CS...
E.g. do this instead of Task.Run(...):
tasks.Add(Task.Delay(TimeSpan.FromMilliseconds(delayMillisec)));>
>>713634
>>713638
Я наверно вот с этим оратором из пердит соглашусь:
There’s a huge important distinction that’s missing here: whether the tasks have stacks (like threads, goroutines or BEAM processes) or are stackless (i.e. async/await or promise style). Stackless solutions are always going to win benchmarks like this because, you know, you don’t need stacks for them! Of course tokio is going to win, it’s doing less work to accomplish a different goal.
В бенчах намешаны варианты с чистыми тредами и нет. И эликсир, который попердолил весь график.
А майки вообще молодцы, я из версии в версию шарпов удивляюсь, как они продолжают всё переписывать и выжимать копейки из привычного функционала.
А тут пугают фрагментацией, ввергая снова в экзистенциальный кризис. Хочу чтобы работало.
Похоже поспешили Microsoft с переписыванием кода на Раст. Надо было переписывать на C#
Причём мало того намешаны варианты с тредами/без. Нет даже сравнения решения с тредами/тапками/корутинами на одном языке. На том же шарпе можно было набросать пример на чистых тредах. Или раз из коробки асинк эвейты работают - то не надо и думать самому?
stackless раста хуже stackless C# на 14% (213 против 183)
>В бенчах намешаны варианты с чистыми тредами и нет
Да, наркомания, поэтому стоит смотреть на миллион запросов, где он не смог запустить системные потоки.
>А майки вообще молодцы, я из версии в версию шарпов удивляюсь
Только им это надо было в 2010 году делать, пока жабу колбасило.
Самое забавно как хомяка на го раздуло, а мне каждый гофер в ухо пел, какой го экономный и легковесный, по сравнению с жабой.
Я бы хотел увидесть бенч тасков, которые берут common-объекты для работы, и выполняют над ними common-операции. Так будет более приближенно к реальности.
>А тут пугают фрагментацией, ввергая снова в экзистенциальный кризис. Хочу чтобы работало.
Тут еще вроде у тебя мув семантика и вроде не надо думать о памяти, но думать придется, иначе объекты у тебя будут жить больше чем надо. Плюс добавить еще стимулирование копирования при иммутабельных переменных или ограничения на мутабельные, это в конечном итоге в теории может солидно так разрастить в большой программе.
Получиться, что многие объекты (и даже их копии!) которые должны были быть давно удалены с хипа, будут висеть как статика, ибо хер знает где его уничтожить, ты же не ГЦ, чтобы во всей этой простыне кода разрбраться.
> которые должны были быть давно удалены с хипа, будут висеть как статика, ибо хер знает где его уничтожить, ты же не ГЦ, чтобы во всей этой простыне кода разрбраться.
Попробуй то же самое в newbie-треде. Может там прокатит.
В раст автоматическое управление памятью без использования сборщика мусора. То же самое что в языке с ГЦ, только без ГЦ и его минусов.
>боюсь фрагментации
Двумя строками в коде можешь подключить аллокатор по выбору. К примеру, раньше раст приложения использовали аллокатор jemalloc. Но его убрали, во первых чтобы уменьшить размер бинарника (и использовать в результате стандартный системный аллокатор), во вторых чтобы пользователь мог сам выбрать себе менеджер памяти.
О, спасибо, анон! Надеюсь в книжке это описано. Но если что noted.
То что ты описываешь называется Rc / Arc это отдельный тип в Раст (обертка над Т), если все ссылки будут уничтожены, то объект тоже будет уничтожен моментально. Не всякий ГЦ в других языках уничтожает объект сразу, но в Расте Arc/Rc делают это немедленно при счетчике ссылок 0.
Если эти обертки не используются, то объект будет уничтожен сразу как выйдет из скоупа. Создать утечку памяти в Раст можно тем же способом что и в языках с GC - просто держа объект в текущем скоупе, и забывая про него:
fn Функция1() {
Объект1 = {"йцуйцу", 1.23f};
...
Функция2();
}
fn Функция2() {
/// тут работаем до конца программы, забывая что мы создали Объект1
}
Есть и другие способы, но они либо явные как Box::leak, либо используют unsafe.
Теоретически, есть вероятность упереться в циклические ссылки. Но про это часто и везде пишут (в том числе и в официальной книге), что надо использовать Weak там, где необходимо чтобы потомок указывал на родителя (создавая цикл).
Отсюда вывод, что подсчет ссылок в Раст совсем не то, что сборщик мусора в каком-либо языке - более простой, менее затратный и менее мощный.
>>713920
Похожие запросы
How does jemalloc reduce fragmentation?
In jemalloc, allocations are categorized by size, and bins are assigned to allocations based on what fits the size requirement the best; it guarantees that internal fragmentation will never be more than 20% for a size range, as memory bins are selected by the size which best matches the allocation.28 янв. 2021г.
JeanHeyd has important history with the Rust project.
It was JeanHeyd who called Rust out for having no Black representation among Rust conference speakers. Rightly so, as both the Rust organization and the conferences had little to no Black representation.
Что-то желание дочитывать пропало. Весь экспертиза и заслуги свелись к как обычно и проблемам стран первого мира.
Циклическую ссылку сначала надо сделать, а это не так просто как в Си / С++. Для этого надо понять что такое Arc / Rc, unsafe и mem::forget. Когда начнешь про это читать, чтобы понять что это за сущности, тогда и увидишь в описании что циклическую ссылку можно сделать, и как это происходит.
Вот описание в документации: https://doc.rust-lang.org/std/sync/struct.Arc.html
Без чтения этой документации ты циклическую ссылку не сделаешь, а прочитав у тебя не останется извинения, потому что хорошо написано :)
Есть языки, где потеря производительности неприемлема. Вот Раст и пытается занять нишу между Си и языками со сборщиком мусора, "не отдавая ни пяди земли".
Если хочется обмазаться безопасными и удобными циклическими связями, и написать такой тип данных самому с нуля (не используя крейты), при этом без потери производительности, то можно использовать арены.
Так там же драма.
Знаешь, кто не разбирается в байтах? Тот, кто не трогает байты.
Что у него хуёвое, так это сжвшная вонь и привкус повесточки и политики. И всё это у инструмента, который со всем этим, казалось бы, не должен быть никак связан. Как C, C++, C#, Jeba, PHP, etc.
Почитай выше линку с педдита. Топителя за репрезентативность чёрных кинули с ключеввм докладом. Он не пошёл. Готовил фичу для храста. В итоге с команды раста от такого вот это поворота отвалился чел, который давно его пилил. Инструмент - да. Должна ли по весточка влиять на инструмент? Нет. Влияет? Да.
Я так понял, там сначала негра какого-то поставили главным спикером, но другие участники ущемились из-за его предыдущих каких-то статей, что нигеров мало и начали бухтеть, в итоге его понизили и сделали обычным спикером, а тот не захотел это терпеть и ливнул, в итоге этот белый ущемился вместе с ним и ливнул из раста.
Он не просто не захотел это терпеть, он изначально не хотел идти обычным спикером. Его сделали ключевым - он согласился. В итоге из-за закулисных бухтений уже после того как он согласился стать ключевым спикером - даунгрейднули в обычного спикера. То есть то, от чего он изначально отказывался. Белый ущемился с этого в частности.
ПЕРЕКАТ >>2720637 (OP)
ПЕРЕКАТ >>2720637 (OP)
ПЕРЕКАТ >>2720637 (OP)
Ok/Err это и есть "объекты" типа Result. Ok это Result::Ok, Err это Result::Err
Поддерживаю, инженерия и повестка не должны пересекаться.
На месте кабанчика, я бы не стал тащить технологию с сомнительным руководством.
Мне вообще было бы выгоднее сидеть на технологии жирного вендора, который сам тесно завязан бизнесом на своей технологии. Ну или как плюсы, с комитетом, но медленным развитием.
Это копия, сохраненная 16 июня 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.