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/
Rustlings (упражнения чтобы привыкнуть к расту): https://github.com/rust-lang/rustlings
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
Предыдущий: >>3186358 (OP)
Жаль что раст так и не стал заменой С++, а стал уделом каких-то вообще хуй знает кого, каких-то неформалов, тяночек и пидоров чулочников.
По факту, нахуй надо изъебоваться ублажая компилятор с ебучими ссылками, толку от этого нет. Проще на С++ как писали все так и писать, по скорости нету выигрыша, а гемороя приносит очень ощутимо. Это даже не считая всех минусов типа очень медленной компиляции, большинство либо это биндинги от васяна на сишные либы, если че-то нет придется еще и заебоваться биндинги писать.
Короче хуйня ваш раст, я раньше думал перекатиться, но во время понял, что это мертвый язык с кучей гемороя и околонулевым профитом, к тому же и вакансий хуй. Так что проще как писали на С++ так и писать.
/thread
> Ни хуя не понятно, что происходит
Ты траллишь? Это у тебя гора unwrap, неизвестно что делающих и мгновенно роняющие рантайм при некорректном вводе. А нахуя первые два unwrap, если ввода нет? И некорректный ввод - это не ошибка, оно не должно ничего ронять.
В крестовом варианте всё логично и понятно - читаем в цикле консоль пока не получим число, при некорректной строке игнорим ввод и сбрасываем статус stdin.
>Это у тебя гора unwrap,
Это ты долбоеб, не понимающий что в продакшене там обработка ошибок или проброс наверх при помощи знака вопроса. Вообще советую кого-то жизни учить когда хотя бы свою шарагу закончишь и найдешь первую работу, так будешь меньше позорится
20 строчек - это мой микро-сканф, который можно скопипастить и не думать об этом до конца жизни. >>3283688 →
>>284035
>Ты траллишь? Это у тебя гора unwrap, неизвестно что делающих и мгновенно роняющие рантайм при некорректном вводе.
Ввод с клавиатуры используется только в laba1, laba2 и иногда вплоть до laba7. В реальном коде ты парсишь ссаный ямл или джсон, а на любую ошибку просто посылаешь нахуй.
>стал уделом каких-то вообще хуй знает кого, каких-то неформалов, тяночек и пидоров чулочников.
Тяночек с хуем? Просто в первый раз слышу, чтобы на Rust тяночки писали.
>но во время понял, что это мертвый язык
Ага, настолько мертвый, что правительство США требует рекомендует на него переходить и весь FAANG его поддерживает.
Ну просто ЛГБТ тема и там и там, я подумал что пидор у нас один, а оказалось несколько
Тебе, долбоебу, комментариями написали что происходит, ты включаешь дурочку.
Почему так? Зачем дурака включаешь?
>правительство США требует рекомендует на него переходить и весь FAANG его поддерживает
ахахах смешная шутейка.
>Ага, настолько мертвый, что правительство США требует рекомендует на него переходить и весь FAANG его поддерживает
И тебя от этого трясет?
Не понял переката на 800 посте. Если бамплимит 1к, то рано, если 500, то чего так долго ждали?
> комментариями
Заебись язык, когда без комментариев непонятно что он делает. И ты так и не ответил почему ввод пользователя у тебя стал ошибкой, вызывающей панику.
>если 500, то чего так долго ждали?
500, я раньше перекатывал, а теперь как-то хуй забил перекатывать. Пусть ЛГБТшизик трудится
>Заебись язык, когда без комментариев непонятно что он делает
В твоей олигофрении язык не виноват, там расписали не потому что непонятно, а потому что ты долбоеб и тот анон судя по всему зря старался. Открою секрет что в других языках такие же конструкции встречаются
>Ввод с клавиатуры используется только в laba1, laba2 и иногда вплоть до laba7.
Вот кстати да, даже не знаю где применять на практике ввод с клавиатуры, всегда либо cli аргументы для этого есть удобный парсер https://docs.rs/clap/latest/clap/ либо конфиг какой-нибудь, либо gui, либо бекенд куда клиент обращается. Для консольных утили в крайнем случае какой-то вим открывается. Не могу вспомнить ни одну программу которую я запускал в терминале в линуксах чтобы мне пришлось как-то вводить текст через stdin везде либо аргументы 99.9% случаев, либо открывается vim куда нужно что-то писать, остального не припомню.
Вообще представил как на продакшене нужно было бы залазить куда-то по ssh, заходить в контейнер и чего-то там ручками колотить лол
А ты не заметил, что тут анти-ЛГБТ тема?
>В крестовом варианте всё логично и понятно
В крестовом варианте у тебя блэкбокс в реализации оператора ">>". Ты ни хуя не знаешь, что именно пошло не так, что там такое ввёл юзер, в чём его можно поправить.
На расте можно также заблэкбоксить в либе или взять сторонний лефтпад.
Кресты как будто специально делали для тупых студентов-первачей, которым надо чтоб сразу - хуяк, и зачитал с клавиатуры. Проще, чем даже на питоне, где ты сперва получаешь таки строку, а уж потом её парсишь или не парсишь.
> блэкбокс
Для растанов это слово может быть незнакомым, но всё же - документация. И вся std в крестах жестко прописана в стандарте, там не может быть какой-то не такой реализации.
> Ты ни хуя не знаешь, что именно пошло не так, что там такое ввёл юзер
С чего бы вдруг. Есть флаги, есть результат операции парсинга, есть сама строка в буфере. Никто ничего не прячет.
Ну и сравни. На расте всё единообразно: поставил точку, из автодополнения набрал методов и вперёд. По возвращаемым типам ориентируешься в пространстве. Или на крестах - прочитай пару талмудов, да третий не забудь. И перечитывай каждый день на ночь.
> поставил точку, из автодополнения набрал методов и вперёд
А потом ещё удивляются почему код на расте годится только для полного переписывания заново.
>рекомендует на него переходить
Там вроде говорили про мемори-безопасные языки, неожиданно, это все языки с ГЦ.
У раста есть реальный оверхед в асинхронной разработке, с подводными камнями. А с учетом того что в каждом утюге теперь множество ядер и молчу про веб, то будущее за языками с зелеными потоками, которые не красят функции а в случае раста еще и красят типы
только зачем делать из экзамена целый язык непонятно
ну, для развлечения наверное, на западе просто с мозгами переизбыток
я думал что прыгеры соглашаются на боль когда выбирают недоязыки вроде джавы
я был неправ, в действительности они просто соглашаются на боль
ну, вот, например - я
>поставил точку, из автодополнения набрал методов и вперёд
>>284966
>гы гы ни как ф плюсах, а значет плоха
Лол ты такой забавный первокурсничек, кроме плюслов нихуя не видел и словил синдром утенка. Тоже самое в других языках, например в той же жабе вот тебе пример билдера запросов на пике. Точно также ставишь точку, а уже потом автокомплит ide тебе высыпает методы. Все просто и прозрачно ты знаешь у какого метода вызвал метод, ты знаешь что вернется, даже зажав ctrl и кликнув на метод ты в любой ide провалишься в метод и посмотришь что он делает и этот подход придумали еще в 90е. Тоже самое в пыхе, жс при всех его особенностях, питоне, шарпах и тд
>>285040
>и адом зависимостей
У сишки ад зависимостей ложится на плечи пользователя, возьми линукс, например Arch который трудится год и набери pacman -Q там охуеешь от количества однотипных библиотек в зависимостях, а в винде каждая программа чуть сложнее калькулятора это своя отдельная помойка на гиг говна
а может это всё-таки плохое апи, если для эффективного командования человеком тебе надо знать, как бутерброд превращается в какашку?
если ты понимаешь, что я хочу сказать
>асинхронной разработке
>множество ядер
Никакой связи. Асинхронщина нужна там, где нужно в одно ядро впихнуть как можно больше потоков - всякие сплёвывалки джейсонов и мультимедии. А утилизация много ядер, это тяжёлые числодробилки - там у раста вообще никаких проблем.
Ну и чтобы ты сдал таки сессию и шокировал доцента познаниями. Асинхрон, это про использование мощностей процессора при тормозном io - сетевом, дисковом или ещё каком. Условно, проц сплюнул пакет данных в буфер сетевухи и, пока клиент их подсасывает, поставил поток на паузу и пошёл обрабатывать следующий. Вот чтобы тебе как программисту этим вручную не маяться, всё это обернули в сахарную оболочку асинхрона.
Это пример из интернетов, взял sql билдер чтобы долго не искать. Слишком запутанно для новичка согласен, там в метод передается еще один билдер и делается подзапрос, ты похоже с sql не знаком.
Вот попроще примеры на разных языках. Такой подход используется везде, вообще советую в учебных целях попробовать java или C# тогда некоторые вопросы отпадут
>если ты понимаешь, что я хочу сказать
Ты много чего хочешь сказать, только сказать чего-то вразумительного у тебя не получается
>если понимаешь о чем я хочу сказать
Обычно такое пишут в тех случаях, когда чел сам не понимает о чем пишет, но набросать ответку жизненно необходимо.
Иди нахуй, долбоеб.
Тогда проще машинных кодов ничего нет, лол. 0 и 1 комбинируешь, хуяк-хуяк, симплисити.
Ассемблер хоть раз в своей жизни видел?
Когда пишешь хэлоуворды, как только что-то сложнее так начинается полнейшая боль в поддрежке
Больно маня?
>будущее за языками с зелеными потоками, которые не красят функции
Что такое зеленые потоки и как можно красить функции?
Если в Си так просто не дать компилятору выстрелить тебе в затылок, то зачем было создавать всякие джавы и прочие пидорасты?
Какое это имеет отношение к сложности языка? Ты поехавший или что?
В си буквально из семантик необходимо знать ветвление, циклы, функции структуры и указатели и все
Этоь язык буквально может студент 3-4 курса реализовать как курсовую/диплом
На расте ты тоже можешь писать, зная только
> ветвление, циклы, функции структуры и указатели и все
Ебанутый зверёк, плез. Язык - это всё от стандарта до тулинга и до горящей жопы от охуительных приколов конпелятора. Писатель лаб на Си судит о всей отрасли, спешите видеть. Раст тем и хорош, что решает 89% проблем, которые есть в Си, но плох тем, что добавляет новые.
И при этом не надо знать хуилон подводных камней, не надо всякие рулбуки по типу мисры смотреть, всё есть искаробки.
Ну в твоём манямирке можешь хоть какие определения языка придумывать
>>285978
Поздравляю тебя, так и продолжай писать
Только от этого количество семантик и сложность языка не уменьшится
>>285998
Каки е подводные камни в си тебе надо заучивать? Что ты там себе в ногу выстреливает? Поинтер разыменвываешь? Или что массив это указатель?
Ты с плюсами не перепутал ничего?
Раст любит тебя и без знания всех семантик.
Сириусли, чтобы кодить на расте тебе не нужно вот прям знать его досконально. Единственная семантика, даже скорее принцип - концепция владения и одалживания.
>>285915
>>285991
Дополню что в более сложных проектах есть взаимодействие разных людей, управление зависимостями, CI/CD, линтеры и прочие такие штуки которых нет в хэлоувордах и программах чтобы показать как я у мамы хакер.
В сишке и плюсах нет нихуя, вот например на собирай в голове makefile чтобы понять чего там и как собирается https://github.com/ImageMagick/ImageMagick/blob/main/Makefile.am или попытайся прочитать 14 тыс. строк уже сгенерированного говна https://github.com/ImageMagick/ImageMagick/blob/main/Makefile.in
В убунте 6 версия последняя на тот момент, а нам нужна была 7 из-за чего решили из исходников собрать. У нас эта хуйня как-то в докере то ли ставилась хуй пойми куда, то ли зависимостей не хватало уже не помню чего там надо было посмотреть, девопсы ебались и в итоге выкинули на хуй заменив https://crates.io/crates/image
И так с любой сишной программой и библиотекой, если нужно собирать бинарник, то сука каждый проект ебучее приключение. А еще ебучие зависимости, которые нужно дополнительно ставить через пакетный менеджер в систему, а не при сборке. А еще там любят писать свои велосипеды разной степени встратости вместо уже 1000 раз написанных решений.
>знать хуилон подводных камней
А ты как хотел, чем сложнее инструмент тем больше он требует от тебя квалификации, но с более сложным инструментом тебе проще делать сложные вещи. Да и кроме лайфтаймов и владения все остальное тоже самое как и в остальных языка, именно поэтому питонисты могут на нем легко писать. С другой стороны чтобы писать на си тебе нужно знать дохулион подводных камней в проекте, а чтобы знать что в расте достаточно прочитать растбук и поработать пару месяцев
Для сравнения вот буквально пример схожего софта https://github.com/nginx/nginx и https://github.com/cloudflare/pingora
На си в конечном итоге каждый файл с кодом в тысячи строк кода, большая часть решение примитивных задач, которые уже решили. Всякие вот такие штуки типа руками скопированная реализация алгоритмов со ссылкой на оригинал, вместо вменяемых управлений зависимостями https://github.com/nginx/nginx/blob/master/src/core/ngx_md5.c#L3 Архитектура хуй пойми какая от проекта к проекту разная. Сборка представляет собой кучу баш скриптов. Где и скать тесты, где бенчмарки, какие зависимости, какие бинарники собираются это нужно знать конкретно в этом поекте, одного места где это было бы написано и где бы это лежало нет
На расте все в одном воркспейсе, разбито по крейтам, крейты по модулям, модули по файлам больше 500 строк кода в файле редко где встретишь. Все расписано в Cargo.toml https://github.com/cloudflare/pingora/blob/main/Cargo.toml Тесты, бенчмарки и во всех проектах будут в одном месте
> В сишке и плюсах
В крестах никто не генерирует makefile, даже на сишке уже все свежие проекты на ninja. А в симейке всё что ты перечислил есть.
> ImageMagick
Специально откопал 20-летнию либу?
> И так с любой сишной программой и библиотекой
Сейчас для любой либы база это симейк, любая либа подрубается двумя строчками билд-скрипта. Хоть прям из гита нужную ветку подрубай, само соберётся. Пикрилейтед как подрубается крупная либа вместе с CUDA и всеми зависимостями, на любой ОС, и так литералли во всех либах. На расте чтоб собрать CUDA-код надо знатно выебнуться, а за пределами линукса вообще скорее всего нихуя не выйдет.
>>286147
> nginx
> схожего софта
Давай ещё ffmpeg откопаем какой-нибудь.
>Специально откопал 20-летнию либу?
>Давай ещё ffmpeg откопаем какой-нибудь
Давай принеси сюда крупный проект на C который вышел за последние пару лет
>ninja
От одного сайта дедами из GNU воняет, но я подожду когда ты принесешь правильно написанный крупный проект на C который стартанули не так давно
Теже г/корутины позволяют хорошо утилизировать процессор, чем ос-потоки. Сейчас основной бизнес это веб, а он асинхронный. Кстати изначально раст был с гринтредами, но теперь с асинхронной частью у раста большие проблемы.
А дробилку можно даже на сях написать, там в алгоритме обосраться с памятью будет трудно я уверен что и раст-дробилки пишут на ансейвах ибо не такой он уж зеро-кост в некоторых моментах.
Зумеры придумали sql-билдеры
@
Пишет ровно такой же Sql-запрос, но через оператор-точка.
@
Теперь мы ограничены возможностями билдера и его корректностью работы.
@
Зумер доволен.
Первый же хеллоуворд упирается в макрос, лол. А печатая стектрейс, мы получаем main вообще в середине списка вызовов.
Абстракция над абстракцией, погоняющая абстракцию. Очень системненько.
Суть была показать синтаксис для студента сишника, чтобы долго не гуглить и не писать самому взял билдеры из разных языков.
А в целом да в них смысла нет, если ORM при помощи классов/структур помогает быстро крудошлепить, то билдеры абсолютно нихуя полезного не делают, идея якобы можно сменить одну БД на другую и типа пройдет бесшовно, но на практике при смене БД по пизде идет половина софта, поскольку оптимальные таблицы и связи будут для каждой БД свои, что придет к переписыванию моделей
>Раст любит тебя и без знания всех семантик.
Ваш манямир треснул об макросы, несите новый
>Сириусли, чтобы кодить на расте тебе не нужно вот прям знать его досконально.
Чтобы кодить, надо уметь сорцы читать, а чтобы читать чужие сорцы надо знать все об языке.
> си проще раста
> Аряяяя это не так
> Ну то есть да, раст сложнее, но ты сложное не используй))
Ну дегенерат, это ещё даже не учитывая что даже при минимальном расте семантик раза в 3 больше и сложнее
> А вот сиай сиди, взаимодействие с другими, билд система
Буквально какое отношение к языку имеет??
> А вот в си надо знать много подводных чтобы себе ногу не выстрелить!!!
Список подводных камней си в студию
сравним со списком раста
>макросы
А ты игнорируй макросы. Пиши как на сях, кто не даёт?
>Чтобы кодить, надо уметь сорцы читать
Это, чтобы понять, как на плюсах cin/cout работают, надо в талмуд одним глазом глядеть. А на расте тебе одних хинтов в IDE хватит.
>Makefile.am
Пчелик, это не make, это плагин для автотулзов. Мэйк как раз прост (если не лезть в дебри совместимости), буквально удобный молоток.
Си - язык богов, как сказал Линус Торвальдс, поэтому на нём лучше не писать.
>А ты игнорируй макросы. Пиши как на сях, кто не даёт?
Я не пишу, другие пишут, скажи им чтобы не писали.
а, тебе даже такое надо заучивать? голова то не лопнет?
>>286237
>а ты игнорируй макросы
> а ты игнорируй референсы, используй поинтеры
> ой блин ну тут надо тебе почитать что такое ансейф...
> а ты игнорируй лайфтайми
> ой блин ну а тут тебе придется почитать что такое бороу чекер и еще множество структур из стандартной либы
> ой блин у нас структуры по дефолту перемещать нельзя, но ты почитай про парочку волшебный трэйтов
> кто не дает?
>А на расте тебе одних хинтов в IDE хватит
Не язык, а сказка, первый язык программирования где не надо читать чужой код
Почему этот пункт все еще не в килерфичах раста?
>Не язык, а сказка, первый язык программирования где не надо читать чужой код
Для написания своей имиджборды тебе достаточно собственного кода и спизженных семплов из дока. К моменту, когда тебя пустят к совместной разработке, самые нужные концепты ты уже освоишь.
А при работе с чужим кодом на Си просто уметь прочитать конкретную функцию бывает недостаточно.
чел, ты на ответ что не зная языка хуй ты нормально чужой код будешь читать, начал заливать какие то истории о том что НЕ НУЖНО
сьебись уже с позором
каждый пост всё тупее и тупее
Читай дальше.
> А как же тогда из разных потоков над разделяемым ресурсом действия осуществлять?
Обычно ты не хочешь этого, серьёзно. А когда реально хочешь - будь добр изъебнуться чтобы захватить владение ресурсом, взять изменяемую ссылку, поменять объект и отпустить его так чтобы остальные потоки не получили промежуточное значение.
Наприме, через https://doc.rust-lang.org/std/sync/struct.Arc.html
Гугли Mutex, обычно используется совместно с Arc Arc<Mutex<T>>, если просто потоки, то бери из std. Если асинхронно работаешь, то рекомендую крейт tokio там все есть
Через очевидный ансейф.
Забей, в расте чтоб что-то сделать, даже малейший пук, тебе надо обложиться тонной крейтов и костылей
Ничего не перепутал, LLVM на крестах написан и он используется растом для компиляции в нативный код, вот через неделю на LLVM 19 перейдут с 18 версии.
Я про то что ты вообще не то открыл
Для чего переписывать?
Cranelift
Аrc же вроде иммутебельный, нуна еще костыль refcell прикрутить.
А вообще забавно, шаг в сторону и мы уже сборщик мусора используем. Нам точно надо противопоставляться Си?
> Нам точно надо противопоставляться Си?
Судя по тому что основные проекты - это веб, то надо скорее жвм противопоставляться.
Только осталось продать меморисейфити джавашарпам.
Там точно это купят, парни не знают о последних достижениях в борьбе с сигфолтами и UB, эти плебеи до сих пор небезопасно пишут. Думаете забавно? А мне фанатик раста на полном серьезе предъявлял, что раст безопаснее жабошарфов.
Эксперимент раста затянулся, я думаю, еще потыкают его какое-то время, а потом на базе работы над ошибками высрут что-то среднее между растом и сями. Ну или зиг получить крупную поддержку.
> потом на базе работы над ошибками высрут что-то среднее между растом и сями
Уже. В следующем году Карбону планируют выпустить рабочий компилятор, в 2026 стабилизируют дизайн языка и дальше будут идти к стабильному релизу. Вместо "перепишем весь существующий софт" упор на полную совместимость с крестовым кодом, как это у котлина-джавы. Синтаксис почти как в расте.
Безопасность тоже будут реализовывать, но пока все силы брошены на компилятор.
https://github.com/carbon-language/carbon-lang/blob/trunk/docs/project/principles/safety_strategy.md
>шаг в сторону и мы уже сборщик мусора используем
Шизы скоро договорятся до того, что free и malloc - это тоже сборка мусора.
Раст безопаснее джавы, в которой по дефолту нет защиты от ConcurrentModificationException. Безопаснее в плане UB, а не в плане уязвимостей.
>Проиграл
Начинай уже выигрывать, речь про Arc, и ты это знаешь, что это сборка через подсчет ссылок. В питоне нечто такое, только в глобальном масштабе.
А вот refcell это местный инцел костыль, который превращает статическую проверку во время компиляции в тыкву.
Вообще рекомендую пописать больше чем утилиты grep, чтобы проникнуться во всю красу раста и прочувствовать все эти костыли во время рефакторинга с погружением в удивительный мир лайфтаймов.
>нет защиты
>ConcurrentModificationException
Вот непонятно, вы тупые или промытые?
Когда начнет сегфолить вместо управляемого исключения, тогда и приходи.
> речь про Arc
> В питоне нечто такое, только в глобальном масштабе.
ну да, плюс минус одно и тоже, хуяк подсчет ссылок, хуяк глобально это делаешь и сборщик мусора готов
и не надо никакие деревья строить, не надо проходить по нему чтобы мертвые ссылки собрать, не надо stop the world делать, просто хуяк подсчёт ссылок и готово
Когда говорят о сборщике мусора, подразумевают рантайм, который управляет всей памятью и отслеживает все создаваемые объекты. А подсчет ссылок - это, блять, подсчет ссылок. Просто еще один контейнер из std, которым даже пользоваться не заставляют.
Похуй что ты там подразумеваешь. Подсчёт ссылок - это тоже сборка мусора.
> Although many languages integrate GC into their compiler and runtime system, post-hoc GC systems also exist, such as Automatic Reference Counting (ARC)
> Reference counting garbage collection is where each object has a count of the number of references to it. Garbage is identified by having a reference count of zero. An object's reference count is incremented when a reference to it is created and decremented when a reference is destroyed. When the count reaches zero, the object's memory is reclaimed.
Если тебе не надо вручную убирать мусор - значит есть сборщик мусора, а циклы сборки мусора или ARC там - это детали реализации. Просто циклы быстрее чем ARC, потому что не требуют затрат на очистку сразу же, а рантайм может когда надо асинхронно почистить.
В вебе раст на сколько быстрее джавы? На 20%? При этом actix даже медленнее джавы, на одном уровнем с ASP.NET. C ARC раст совсем бы отсасывал джаве. Вот у думойте с кем там может раст конкурировать.
Это местный шиз, он студент, который нихуя не понимает, но много пиздит. Его просто нужно поменьше кормить
А где сишка с крестами в бенчмарке, они должны быть где-то в первых рядах и вообще что там делалось, смотрю чего-то там с постгресом, где-то нет. К постгресу можно разными способами подключатся и разные запросы делать. Хотя брать чего-то где-то из контекста приносить сюда рассказывать такой раст хуевый это в стиле шиза фанбоя этого треда.
Покормил
>В следующем году Карбону планируют выпустить рабочий компилятор, в 2026 стабилизируют дизайн языка и дальше будут идти к стабильному релизу.
Если гугл не закроет, то возможно
>Если тебе не надо вручную убирать мусор - значит есть сборщик мусора, а циклы сборки мусора или ARC там - это детали реализации
А межконтинентальная баллистическая ракета Сармат очищает память сама, когда ебашит над Вашингтоном, значит в ассемблере тоже есть сборщик мусора.
> где сишка с крестами в бенчмарке, они должны быть где-то в первых рядах и вообще что там делал
Это бенч запросов через фреймворк с получением данных из базы. Сишка с h2o наверху, да, но кресты сосут у джавы, убрал их из фильтра.
Пикрил без базы, просто HTTP-запросы голой страницы. В этом тесте, например, PHP далеко внизу с лучшим результатом в 18%.
Я это притащил просто чтоб показать что цикличный GC в вебе не мешает производительности, а иногда даже наоборот. Есть ситуации когда RAII хуже чем просто оставить валяться память неосвобождённой для последующей сборки GC.
>Есть ситуации когда RAII хуже чем просто оставить валяться память неосвобождённой для последующей сборки GC.
Повезло, что Раст не заставляет использовать ни RAII, ни ООП, ни любой другой баззворд, ведь это не какая-то скриптуха с гвоздями прибитым рантаймом как Го.
> скриптуха с гвоздями прибитым рантаймом как Го
Тем не менее китайский фреймворк на ГОвне ебёт по производительности раст.
>Я это притащил просто чтоб показать что цикличный GC в вебе не мешает производительности
Это да, большинству должно быть похуй на наличие ГЦ. С подобными проблемами в гошке сталкивались пожалуй только в дискорде, но там у них стримы, чаты на вебсокетах и прочая специфичная залупа, которая крутится 24/7, большинство веба работает реквест-репонс по http, там несколько милисекунд лагов никто даже не заметит.
PS actix отсосал из-за того что там diesel, а он не асинхронный https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/Rust/actix/Cargo.toml#L30
> actix отсосал из-за того что там diesel
Там отдельные тесты с дизелем и токио. Дизель вообще кал, да.
Все эти синтаксисы, ну срать же, какие там технологические плюхи будут? Что решили с памятью делать? Анально прибить баран чекером или же просто поинтеров раздать?
И скажите уже, почему нельзя сделать дебаг аллокатор, который бы в режиме разработке ловил утечки и выходы за границы? Ну можно же анализаторов накатить, не обязательно же дрессировать кодеров?
Когда-нибудь мы победим точку с запятой.
Ну будет это в цикле долбится и будет дергать каждый раз подсчет. У питона вроде такая же модель и стоп-зе-ворда нет же? Котлин-нейтив вроде тоже, но могу ошибаться.
Это самая быстрая модель, ее минус только в циклических ссылках.
Так не отрицайте и все будет норм. А то у вас даже жаба менее безопасная оказалась.
Как минимум удивляет и заставляет задуматься, зачем мне раст, когда гошка не приносит оверхеда в разработку и долгой компиляции. а еще не надо красить асинками все функции, но проблему покраса понимают единицы. так что опустим
> Анально прибить баран чекером или же просто поинтеров раздать?
Борова точно не будет, у Карбона будет обратная совместимость с крестами, анально ограничивать ничего не станут.
Будут ужесточать использование сырых указателей, добавят больше компайл-тайм проверок, добавят лайфтаймы, запилят встроенный в дебаг-билд безопасный аллокатор по типу санитайзеров, будет дополнительно релизный билд с быстрыми рантайм-проверками памяти/многопоточности для тех кто готов пожертвовать немного скорости ради безопасности.
> И скажите уже, почему нельзя сделать дебаг аллокатор, который бы в режиме разработке ловил утечки и выходы за границы?
Вот это и сделают, вместе с проверками дата-рейса.
Евгений Ваганыч, ну зачем вы к нам? Вернитесь в телевизор, развлекать бабушек.
Звучит интересно, особенно интероп с плюсами.
https://github.com/carbon-language/carbon-lang/
Попытка гугла сделать правильный раст, сам раст у них похоже не взлетел, хоть они и вкладывались в него.
>управляемого исключения
ConcurrentModificationException , это такая ебола, которая если и управляемая, то весьма условно. Во всяком случае, конпелятор жабы тут тебе не подскажет, где его ждать, а где нет. Данные целые, но прога вылетела - какая мне-то разница?
https://www.youtube.com/watch?v=NAOOGB1q6uQ
Похуй, одним косоглазым патлачом стало меньше - победа всего раста. Зиг это и так уже диагноз.
На вершине промышленной программы стоит дедовский catch (Exception e), который залогирует место, время и запах твоих ног и потом еще восстановится, сказав юзеру о временном сбое (а если ошибка была плавающая, юзер даже не расстроится и продолжит работать).
Но благодаря этому логу, дядя сеньор уже сидит и фиксит багу.
Это для тебя, ребенка, эксепшен что-то страшное и ужасное, как паническая атака в расте. Для кодера на нормальном языке, это средство диагностики. А теперь иди выведи стектрейс хеллоуворда своего сраста и поешь говна.
Убица плюсов из гугла, которую не успели прикрыть эффективные менеджеры
Лол, а ты думаешь на расте софт сразу пишется без ошибок и уязвимостей? Фанбоев надрессировали на фразу "безопасность" с доступом к памяти и они реально думают что у них вдруг самый безопасный язык встал.
тут должна быть ссылка на ишью с уязвимостью раста нерешенная с 2015 года, но мне лень.
https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AI-unsound
Да и манёвры с realistic subset тоже смешные. Та часть раста где нет багов и она безопасная - реалистик, а остальное нереалистик, оно и должно быть дырявым говном. И в чём тогда отличие от UB? UB хоть с стандарте зафиксировано, а как я должен реалистичность раста почувствовать?
https://github.com/rust-lang/rust/issues/25860
Молниеносно 🔥 быстрые 🚀 уязвимости памяти, написанные на 100% безопасном Rust.
https://github.com/Speykious/cve-rs/tree/main
Это все надо в шапку.
Там достаточно зайти в ишью и можно найти кучу багов с лайфтаймами и типами.
Или вот такую хуйню, когда раст позволяет безопасно проверить адрес указателя, но оптимизатор выкидывает проверку и возвращает false. Буквально как UB в сишке, когда дебаг и релизные билды ведут себя по разному.
https://github.com/rust-lang/rust/issues/130388
> ошибки компилятора
> Ну это типо как ub
Захожу в тред через день, и каждый раз тупость посетителей пробивает очередное дно
Ну или у юзера полетели в пизду все данные, которые хранились в памяти, какие-нибудь финансовые транзакции и тому подобная энтерпрайзная чепуха - кого это ебёт, правда?
И, тем не менее, этого сорта паники в расте нет. А всё остальное, что есть из паники в расте - деление на 0 и выход за границы, есть и в жабе тоже. Так что, раст безопаснее, соси, короч.
Это, блять, баги. А UB в сишке, это by design, его не выкинешь, стандарт такой, UёBищный.
> баги
Если баг не фиксится достаточно долго, то он становится фичей, потому что на него полагается уже существующий код и его тоже теперь не выкинешь, не сломав всем рабочий код. Дыры в системе типов раста тоже by design так-то, о чём тебе и пишут растаны-компиляторописатели что в текущем солвере это не пофиксить.
> fixing it relies on where-bounds on binders which are blocked on the next-generation trait solver. we are actively working on this and cannot fix the unsoundness before it's done
Конечно нет, вон выше с 2015 года из рандомной памяти безопасно читают и норм.
Чел ты нарушаешь код оф кондукт, тебя надо прогнать из сообщества растоманов.
Кок только на растанов распространяется, залётных можно хуесосить.
Ваще похую, вся это повесточка в языке тупо из-за того что основная часть разработчиков как и фонд находятся в Калифорнии. А в остальных интернетах можно и пиздаюлей получить за кривые глаза
>полностью состоит из кликбетных видео
Ты сейчас описал чуть ли не весь топ айти-ютуба. Просто он не знает что его могут отменить, ошибся, бывает.
> вся это повесточка в языке тупо из-за того что основная часть разработчиков как и фонд находятся в Калифорнии
Лол, царь хороший -- бояре плохие. Классика. А ничего, что хуесос, которые изначально придумал Раст прямо говорил, что программирование должно быть с политикой и нужно в первую очередь смотреть на твои взгляды, а потом уже на код?
Нет никаких злобных жиролесбух, которые захватили педеРАСТ, он всегда таким был.
Ада.
Какая тебе разница чего там у них в Калифорнии творится? На политику смотрят те кто это дело спонсирует, а те кто им пользуется смотрят в первую очередь на код, благо эти 2 мира почти не пересекаются
В джаве безопасность на уровне стека, там в рантайме нельзя границы никак нарушить, это обеспечивает архитектура машины (виртуальной). Раст это тупо анализатор при сборке ну и (опциональный) рантайм который границы массивов проверяет, а уже вызовы возвраты перехват управления - нихуя.
Вроде же был момент, что кого-то отменяли и что там по лицензии ты даже не можешь свой крейт удалить и он вообще уже не твой.
Мутная фигня, это ты сейчас такой веселой, а с последней драмой где они гайки закрутили на все кроме маскота, и то потому что он им не принадлежит - все это играет новыми красками и не стоит игнорить их поведение если решаешь бизнес строить смешно, конечно, бизнес и двачер, но все же
>а с последней драмой
дедуль... %слоупок.png%
> он вообще уже не твой
ага, возьмут мой код на гитхабе с открытой лицензией и такие а теперь он наш
ну ты сам то в это веришь?
Оке, это не совсем про безопасность, это про панику. В расте тут как минимум на одну неожиданную панику меньше.
>дедуль...
Год назад было, ты со своего квадробинга совсем голову отбил.
>мой код
>открытой лицензией
😃😃😃
речь про крейты, в прочем уже не важно, прыгай дальше
> речь про крейты
и я про них
твой код у тебя
пользователь может его в свой карго подтянуть 100500 способами без проблем
> Год назад было
и за год до тебя не дошло что это просто информационный шум ни о чем был? ну посиди еще подумай
Прошло 10 лет, такими темпами и линукс перепишем.
Даже не игра, а визуал редактор. Представляю как больно писать на расте игровые скрипты, что осилили только редактор.
>и за год до тебя не дошло
Это стало просто мега звоночком для многих и до сих пор этим является. Это для тебя малолетние забавы, ты кроме выпука не напишешь ничего, а серьезные дяди эту политику всеми фибрами ощущают.
Мимо дропнули го, когда они по своим хотелками поменяли гц и у нас в новой версии производительность упала в 10-30% а потом еще вопреки сообщества алиасы пропихнули, потому как в тот момент нужно было крупной компании на букву Г. и было срать на мнение всех.
Там где не переживают за своего потребителя, серьезный бизнес в ответ водит по губам и такие технологии протухают на дне индустрии. Между прочем релизному раста уже 10 лет.
> РЕБЯТ ЭТО ОЧЕНЬ СЕРЬЕЗНО, ЧО ВЫ СМЕЕТЕСЬ
> серьезный бизнес в ответ водит по губам и такие технологии протухают на дне индустрии
ага, то то я смотрю сейчас го ахуеть как растёт ахахахах
> question over time
не позорься
> зоопарк языков в микросервисах
это ни опровергает, ни доказывает популярность го, нахуй ты это высрал
>А ничего, что хуесос, которые изначально придумал Раст прямо говорил, что программирование должно быть с политикой и нужно в первую очередь смотреть на твои взгляды, а потом уже на код?
Есть пруф?
Пропишу в ~/.cargo/config.toml адрес на зеркало
Хуясе ты серьезный дядька
Как и твой пост совершенно ничего не говорит, просто пук воздух. Что не так, маня?
Ещё один аутяга с отрицательной риторикой
Ты если хочешь рандомную хуету высрать не отвечай на чужие посты, люди думают что это должно как то на их пост отвечать, а не то что шизойд опять сам себе пишет
Все никак серьезно за него не возьмусь, штука довольно интересная в академических целях
>Он же не С++ тебе предлагает
Я о том и говорю, всегда протираю монитор и клавиатуру салфеткой и мою руки с мылом после того как довелось в эти кресты окунутся
Мда. Пиздец. Ну, с другой стороны, в 2020-ом единственным стеком который не преклонял колени перед BLM, был разве что Delphi.
Я еще раз повторяю, это не жиролесбухи набежали и принудили белых консервативных базовых гигачадов что-то сказать и повесить пидорский/ниггерский флаг. РАСТ ВСЕГДА ТАКИМ БЫЛ, таким он задумывался его создателем, все его разработчики и тогда, и сейчас разделяют эти "ценности". Нет никакого принуждения или давления, они конченные сами по себе.
Если вас это устраивает -- Бог в помощь, только не надо маняфантазировать о том, что НА САМОМ ДЕЛЕ Раст не такой.
Это вообще везде цивилизованом миретм повесточку буквально пропихивают везде и без вазилина, даже в научные работы. В устоявшиеся языки и фреймворки пропихнуть сложнее, а в новые где не сформировалось сообщество, где нет отцов основателе это влазит как нехуй делать.
>Нет никакого принуждения или давления, они конченные сами по себе.
Есть финансирование, требующее инклюзивность. Например те же рельсы в 5 версии при запуске хэлоуворда показывали на странице людей, а в 6 версии люди поменяли цвет и стали инвалидами, разработка и релиз которой были как раз во времена BLM, в 2019 разгоняли повесточку перед массовыми погромами 2020. В 7 версии убрали вообще всех людей лол. Если уже в руби эта хуйня лезет, то что говорить о новом языке из Калифорнии.
Ладно, ты победил. Назови другой компилируемый язык без сборки мусора, с системой сборки для людей, выводом типов, который, блять, работает и живой экосистемой.
inb4 Swift
Два чая, раст всегда был для пидоров, не то что рассово-верный, православный С++ созданный белыми, гетеросексуальными, крепкими мужчинами с традиционными ценностями.
> Если уже в руби эта хуйня лезет, то что говорить о новом языке из Калифорнии.
В смылсле ЕСЛИ УЖЕ В РУБИ? Нас пронесло, а RoR в конце нулевых начале десятых -- был любимым языком американской сои, до сих пор разгребают это легаси говно. Непонятно твое удивление, как будто рельсы были каким-то оплотом БАЗЫ, там целевая аудитория не сильно отличается от Раста.
768x576, 0:09
только раст будет немного получше
Похоже идеи корректности и чистоты в программировании изначально пидорские. Нигде больше такого количества чулочников не видел, чем в функциональщине, пруверах и всяких языках не для смердов.
>был любимым языком американской сои
Буквально был как пыха у нас, на рельсах удобно фулстек крудошлепить и его буквально везде использовали во всяких е-комерс проектах. Все начало загибаться когда начали фронт и бек отдельно писать, потерялись преймущества рельс, но вылезли минусы самого руби медленный, GIL, отсутствие асинхронности, возможность насрать нечитабельное и тп, потому и одно легаси осталось. А так базы много навалил для фронтенда, даже coffescript на синтаксис js повлиял.
У нас же для этих целей везде злоебучий битрикс, если руби гейские, то это для мазохистов копрофилов бассейна говна, остальное лара с yii которые +/- по сути те же рельсы
Не назовет
Я тебе скажу даже лучше, есть языки с ГЦ, которые могут если надо можно в указатели подолбиться (и собраться в aot).
А знаешь почему ты не слышал про ансейвы в управляемых языках (в жабе тоже есть нейтив)? Потому что это нужно в 1 случае из 10000 и порой кэш и упорядоченная память в поколениях, да даже просто зарезервирована память работает быстрее чем всякие маллоки, фрагментирующие память.
Все кому не лень пиаряться об новые языки. До этого был го, до него руби.
К сожалению, беда все новых языков - это отсутствие качественных долгосрочных либ и от того, что все эти компании запускают свои микро-пуки на растах - больше качественных либ не становится.
раньше поюзают, раньше выгорят
>Swift
Это вообще отдельная секта, странно што местный педошизик у них в треде не пасется, рассказывая там какие они фанбои. Там мало того что устройства эпл это ебучее говно где все прибито гвоздями вплоть до того что даже нельзя запускать свой брауезр все что есть это нескучные обои над сафари и хуй чего поставишь не из эпп стора. Так и еще чтобы под эти гейфоны писать нужно иметь макбук за оверпрайс, некоторые чтобы вкатиться берут все это барахло в кредиты. И при каждом удобном случае с горящими глазами боготворят всю эту технику. Вот где сука фанбои.
Про ЛГБТ повесточку там уже говорить нехуй там весь топ состав во главе с директором геи
Ничего страшного
И что в этом плохого? Зато работает все хорошо. У меня айфон купленный в 2018 году работает как новый до сих пор, не смотря на то что весь уже разбитый перебитый ( да я ношу без чехла и стекла )
У них огромный рынок потребителей, они создали свою экосистему которую они развивают и это упрощает им жизнь, потому что не нужно согласовывать тысячи хуевин с другими производителями оборудования\софта.
По такой же логике тебе надо и Sony с их PS и Microsoft c XBox хейтить, там тоже все закрытое и гвоздями прибитое.
А вообще положняк такой:
Tier 1: GNU/Linux
Tier 2: Apple/MacOS
Tier 3: Microsoft/Windows
Если бы у меня не было выбора пользоваться линуксом, я бы лучше эпловской закрытой экосистемой пользоваться, чем индийским spyware дерьмом от мелкомягких.
>Потому что это нужно в 1 случае из 10000
Ну да, если ты занимаешься строго перекладыванием джсонов и круд-запросами, то вовсю будет работать эскейп-анализ и полноценный ГЦ может вообще никогда не сработать. Но в таких случаях и самый тупорылый RAII даже у тебя проблем не вызовет.
А если ты займешься чем-то сложнее сиквел запросов, то окажется, что с GC тоже нужно занулять ссылки, чтобы трейсинг шел быстрее, что GC нужно настраивать, что Джава файлы сама не закрывает, что в Юнити нужно делать свой маллок в виде обжект пулов, чтобы это говно не развалилось. В общем, все проблемы, которые GC якобы должен решать на самом деле остались, полноценно их решить ты теперь не можешь, потому что всё пятью слоями абстракций.
И вот в этот момент ты ощутишь на губах солоноватый привкус. Или уже ощущаешь, но тебе нравится, хер тебя знает.
>порой кэш и упорядоченная память в поколениях, да даже просто зарезервирована память работает быстрее чем всякие маллоки, фрагментирующие память.
Тебе уплотнять и резервировать память юристы Оракла запрещают?
>И вот в этот момент ты ощутишь на губах солоноватый привкус
Растеру виднее.
Понимаешь, раст тоже не дает ничего, ты так же можешь держать вечноживущий объект в верхней функции, гоняя ссылки или в случае раста, куда хуже, гоняя клоны.
Файлы, ну сахар есть using () {}, еще было локом напугал. Да, раст решает гонку, но какой ценой, столько костылей вокруг мутабельности, тот же Rc<inCell
Юнити, в анриле свой молодежный ГЦ есть. Главное что возможность есть сделать, в случае юнити шарпы там на правах скрипта.
>В общем, все проблемы, которые GC якобы должен решать на самом деле остались
Ламерская мысль - что вот я возьму си, ассемблер или машиный код и буду писать супер быстрый код. Писать оптимизированный код это отдельный скилл и отдельны труд, тот же techempower показывают, что даже написав на-супер-пупер языке можно оказаться на дне. у каждого был такой знакомы, максималист, который хотел писать на ассемблере или даже машинном коде (у меня оба был), или веб на с++, вот вы мне этих знакомых и напоминаете, когда после питона в раст долбится начинаете.
>Тебе уплотнять и резервировать память юристы Оракла запрещают?
Даже не знаю как это делать, это долбится в свой массив байтов, это практически пол GC руками написать? Ну офигеть - типа а че ты в космос не летаешь, вон смотри какая ракета у наса, сделай себе такую, че лицо скрючил, возьми и сделай
> это практически пол GC руками написать?
GC в JVM ничего не знает о программе, кроме графа объектов, и от него требуется нормально работать с любым валидным байткодом. Ты, я уж надеюсь, знаешь, что делает программа, которую сам же написал, и у тебя это даже тысячной доли усилий не займет. И
заниматься этим нужно даже реже, чем настраивать GC.
Опять какая-то абстрактная фигня.
Как уплотнять? Это же лютый менеджмент, а ты сказал это как будто вот сел и напиши. По сути тебе придется писать GC.
У тебя есть твоя модель данных, которая лежит в куче. Это или какие-то массивы или деревья или графы. Ты её обходишь и копируешь актуальные данные в другую кучу, старую грохаешь. Не знаю как конкретнее.
Если у тебя веб-сервер, то на каждый запрос своя куча. Если хешмапа, то пересобираешь её, когда накапливается слишком много удаленных ключей.
>По сути тебе придется писать GC.
Тебе в ЛЮБОМ случае придётся писать GС. Но в случае управляемых языков это придётся делать поверх другого GC, который слишком консервативный и всегда будет делать много лишней работы. В этом был посыл >>293844
> Так все IT-сообщество сейчас Wokeнутое.
Кроме плюсов, конечно же.
Но все же есть разница, когда поставили пидор/ниггер флаг просто на отъебись, чтобы им мозги не ебали, и когда явные шизики на полном серьезе топят за все это говно. Второе -- это случай Раста.
>Кроме плюсов, конечно же.
Аутистам тяжело продвигать повесточку, они живут в своем мирке и игнорируют все окружающее, поэтому туда бюджеты не выделяют
>На заводе переписал аппбар, которій используется работягами на рабочих местах для запуска нужного софта и много другого, с js/electron на tauri/rust/typescript.
А Zed'ом пользуешься?
Только твоим Zad'ом. Мы же пидорасты тут все.
Получается, если не готов сосать хуи и ебаться в жопу, то раст лучше не учить?
Сосать хуи и ебаться в жопу тебя никто не будет заставлять, даже если ты начнешь коммитить в Раст. Но лично мне противно пользоваться этой шизохуйней.
Если ты маслишь такими категориями, то с такими взглядами на жизнь ты в любом случае обречен сосать хуи, даже если выкатишься из программирования на завод
Для имакса лсп не завезли разве?
https://emacs-lsp.github.io/lsp-mode/page/lsp-rust-analyzer/
Хуя коупинг
Я хотел изучить раст для себя. Программирование для меня хобби. С++ сейчас превратился в монстра и хотелось, что-то более цельное с приятным инструментарием.
>го
>отсутствие качественных долгосрочных либ
Ладно хуй с ним в мозгах фанбоев хейта раста тут нихуя либ нет и все говно, написали и убежали на новый язык.
Но с гошкой то что, тоже маркетологи фанбои и нухя нет?
> Вот бы добавили нейтив cmake support
а сейчас там как?
клангд просто ищет где то файлик compile_commands.json?
Поработал с недельку, простой тестовый редактор в котором нихуя нет кроме примитивной работы с lsp, типичный блокнот. Смотрел как расширения писать, так у них там нихуя нет либо темы пили, либо поддержку языков по сути прокладку для lsp сервера, все. По сути написать нормальные расширения как в VSCode и жыдбрейнсе не выйдет. Там уже несколько ишью есть с вопросом о расширения, но пока ничего не говорят. Вот зато всяких Искуственных Идиотов добавляют один за другим, какую-то совместную работу, авторизацию через гитахаб и прочую хуйню, короче в приоритете монетизировать здесь и сейчас похоже.
Судя по всему история будет как с Atom та же команда пилили свой фреймворк для гуёв, сам продукт какой-то полуготовый так и загнулся, зато Electron теперь везде и всюду.
Так и тут запилили свой гуи фреймворк https://github.com/zed-industries/zed/tree/main/crates/gpui
Это так же как с игровыми движками - тот кто пишет игровые движки игр не делает. И тут будет так же, решили что у них будет всё своё с растом и шлюхами, но получится просто нагромождение кода. У майков полно и своих фреймворков гуя, но тем не менее вс-код сделали на электроне, потому что думали башкой как это потом развивать дальше и чтоб проще людям было.
>вс-код сделали на электроне,
Который сделала команда Atom, которая сейчас пили zed и точно также пилит свой фреймворк для иде
Самое смешное, когда программисты сортировались по операционным системам, были Windows-программисты и Linux-программисты. А MacOS-программисты, были как внеземные цивилизации - в принципе должны быть, но в глаза их никто не видел.
Сейчас ситуация не изменилась - разработчики под iOS есть, а под Mac OS X не наблюдаются.
Какой атом, шизик, это внутренняя разработка майков. Вс-код изначально даже под проприетарной лицензией был.
>И что в этом плохого?
Он обдвачеванный шиз, который умеет только пукать и копипастить фразочки с википедии, че поделать
Это как VIM\emacs индивидуумы пытаются доказать что они продуктивные без IDE) К слову, люблю иногда позалипать на ютубе в таких видосиках и покекать
>>294912
>разработчики под iOS есть, а под Mac OS X не наблюдаются.
Согласен, но не знаю, иос и свифт единственное что меня останавливает, ибо платформа\язык оч хороши
>>293780
>Соответственно, все новые языки программирования носят на своем челе клеймо SJW изначально.
Тоже +, но смотрел сурвей 2023 раста, там 50% лебсух геев и прочего, кекнул с этого. Но на свифте такого нет, максимум на WWDC всплывет клоун транс за 1 сезон, и все. Да и то, в 2024 он не появлялся
Я про электрон, его пилила команда из гитхаба для атома, теперь тоже самое делают на расте, пилят гуи для иде. Скорее всего исполнители разные, но вот эффективные менеджеры одни и те же. Вскод появился спустя 2 года после релиза электрона
>Он обдвачеванный шиз, который умеет только пукать и копипастить фразочки с википедии, че поделать
Я счастливый владелец Айфона, по сравнению с андроидом тут реально всё гвоздями прибито, а сафари это ебучее говно. Но да, анимация красивая, плавная, за 2 года не тормозит, обои нескучные. С банковскими приложениями отдельная история тоже нескучная
>Это как VIM\emacs индивидуумы
Тут тоже самое, у фанатиков эпл такие же разговоры лол, всё вокруг говно, а они в белом пальто
Кому он вообще всрался?
там память безопасная из коробки.... да и все в принципе
Смешно звучит, учитывая что половина плюсовиков ненавидит новые стандарты и комитет в целом
>половина плюсовиков ненавидит новые стандарты и комитет в целом
кто тебе сказал такую ерунду?
Это сишники ненавидят их, и линуксоиды, потому что у них нет компиляторов с поддержкой новых фич. У крестовиков всё норм с новыми стандартами.
>и линуксоиды, потому что у них нет компиляторов с поддержкой новых фич
Лол, обычно наоборот сначала в линуксах и маках что-то появляется, потом это допиливают под винду, а тут как-то наоборот
А что ты хочешь?) Пердолинг?) Так пердолься(без негатива) в андроиде, у меня и гейфон и ведроид и ниче, то один то другой юзаю
>А что ты хочешь?)
Выделять текст в браузере на двощах нажимать на номер поста и чтобы попало в цитату. Сафари не умеет, хром в андроиде умеет.
Это и еще тысячу мелочей, от установки сторонних приложений до того чтобы ебучие иконки на рабочем столе не сортировались сами по себе когда удаляешь приложение
>Пердолинг?
Для пердолинга у меня арч на компе есть, телефон использую как бытовой прибор
>Так пердолься(без негатива) в андроиде
Следующий телефон будет именно андроид, а яблофон переоцененное говно для фанатиков эпл
> а тут как-то наоборот
Лол. В плане стандартов крестов у майков всё сильно лучше. А ещё у линуксоидов часто устаревший gcc в системе, потому что на свежем может какой-то старый сишный код не собираться как надо, какие-нибудь ошибки сборки и подобное, а собирать им приходится каждый день что-то. Когда сидишь с двухлетним компилятором, то о каких свежих стандартах речь? Поэтому они и не переваривают ничего выше С++17, потому что компилятора нет. Шланг вообще сосёт по стандартам даже на свежем компиляторе.
У меня эта хуйня (rust-analyzer) не работает.
Так новые стандарты наоборот позволяют хоть как-то терпеть унижения и боль языка. в С++20+ многое улучшили в плане шаблонов, появились концепты которые сильно упрощают жизнь.
Наконец-то завезли нормальный формат. Корутины, хоть и недопиленные ( отсутствующие асинхронных деструкторов сводят на нет их адекватную применимость ), но в целом можно юзать если очень захотеть. std expected, string_view, jthread, heterogeneous lookup и т.д. куча всяких удобностей и полезностей.
Это я говорю как плюсовик с 15 летнем стажем.
>>295263
Ты бредишь, msvs вообще слабо поддерживает новый стандарт. Глянь табличку. Даже обоссаный интеловкий компилятор в который лет 5 не могли завести нормальную поддержку С++11 уже даже 23-й поддерживает, а msvc сосет.
Но имея опыт работы и на том и на том, могу с уверенностью сказать msvc говнище а не компилятор. Впрочем как и сама винда.
>std expected, string_view, jthread, heterogeneous lookup и т.д. куча всяких удобностей и полезностей.
Звучит, как очередной ненужный набор свистелок и перделок.
Мимо-сишный-скуф
>Наконец-то завезли нормальный формат.
Майки какую то смузи хлебную хрень завезли для тех кто принтфы cout, string stream не осилил
>>295494
>Корутины, хоть и недопиленные
Нежопиленное говно которое заставляет подключать какие то васянские библиотеки
Не мое мнение, буквально на работе это слышу 24/7
Плюсовики это известные ретрограды глобального масштаба, вот собственно и пример этого >>295517
>кто принтфы cout, string stream не осилил
Так тут концепция другая совсем, тут именно формат, а стримы это просто печать в стрим а если тебе надо отформатировать как-то по своему через стримы, то только костыльные модификаторы которыми ужасно неудобно пользоваться и которые далеко не все могут.
>заставляет подключать какие то васянские библиотеки
Нахуя? Тебе нужно лишь обозначить класс корутины своей можно прям шаблонный взять какой-нибудь да и все реализация эвейтеров тут уже на тебе, это функционал приложения.
Я лично запилил для себя либу на liburing с корутинами, норм тема только отлаживать бывает сложновато, но главное побольше трейсов запилить в код и запускать под санитайзером.
>Плюсовики это известные ретрограды глобального масштаба, вот собственно и пример этого
Так он сишный скуф, он никакого отношения к плюсам не имеет.
С++ абсолютно другой язык с другими концепциями и методами разработки, чем си. Умение писать на си != умение писать на С++. Зачастую код на С++ написанный сишником будет являться просто кривой реализацией си с классами, такое ниодин апрув в комите не пройдет.
На счет ретроградов, наоборот все плюсовики с моих работ старались как можно быстрее на новый стандарт перепрыгнуть для облегчения себе жизни.
>>295496
> табличку
Чел, эта табличка говно, потому что релизные фичи надо по репе STL смотреть, а preview вообще без списка изменений. Эта табличка основана на вики майков, которая обновляется раз в два года. MSVC единственный компилятор, в котором полностью реализовано С++23 вместе со стандартной либой. И это единственный компилятор, в котором полная реализация С++20, в том числе модулей.
>я бы лучше эпловской закрытой экосистемой пользоваться, чем индийским spyware дерьмом от мелкомягких.
>spyware дерьмом
Хех: https://blackpill.usite.pro/search/open%20source/
Выбор фреймворков дегенератский. Уже после этого тест не имеет смысла.
Конечно не нулевая, потом тебя ещё на вебку сфотает и на дваче начнет травить в этом треде
А потом мацкам эстафету перешлют, а они интелу с амуде
Анальной огородки бы ещё, вот тогда заебись. Как думаешь, почему в ведро линупса протащили пидораст, а вот с++ - нет?
ага, только половина из этих скуфов пишут на плюсах
>А там что, реально нельзя поставить сторонний браузер помимо Safari?
Браузер поставить можно, только разработчикам кроме движка webkit от сафари там ничего нельзя использовать, то есть по сути фаерфокс тупо нескучные обои поверх сафари как какой-нибудь амиго от маилсру обычный хром. Ну может там какие-то фичи типа закладок, синхронизации и прочего у других браузеров свои, но вот рендеринг и прочее поведение на странице это тупо сафари
Компелятор нет, а вот отвалится creates.io может легко, придется в настройках cargo прописывать зеркала. С докером такая ситуация была, но там обратно вернули
И что в этом плохого? Зато работает хорошо и безопасно и дауненок-пользователь не сможет скачать вирус.
>Кидает ссылку на самопальный сайт с бредом шизика автора
>Обосравшись пытается перекинуть своё говно в чужие штаны
А ты не очень умный, да?
Лол, это у тебя бред. Сейчас фронтендеры занимаются такой же хуйней для поддержки сафари как и занимались раньше для ИЕ, либо забивают хуй на все. Тут на двощах с айфона нельзя выделить текст и нажать на номер поста для цитаты текст в цитату не вставляется, в webm тредах я вместо половины видео вижу хуй обновлялся не помогло. Собственно и так по всему интернету во всяких мелочах проявляется. У нас фронтендер ебался неделю с анимациями webp или как они там хз специально под сафари, когда был редизайн, чего-то там куда-то переконвертировал чтобы заработало как надо. Webkit сейчас эпл тянет в одно ебало, для хрома сделали форк blink собственно все туда и перехали от гугла с мелкософт до qt с оперой. Они до кучи еще и свой движок для js используют.
Домохозяйкам может и не видно этого всего, но мне это очень сильно в глаза бросается.
>Сейчас фронтендеры занимаются такой же хуйней для поддержки сафари как и занимались раньше для ИЕ, либо забивают хуй на все.
У тебя точно бред, чел, прими уже свой галлоперидол. Сафари 2й по популярности браузер. Что значит "занимаются хуйнуй для поддержки" поддерживать браузер с 20% market share - это заниматься хуйней по твоему?
> Тут на двощах с айфона нельзя выделить текст и нажать на номер поста для цитаты текст в цитату не вставляется, в webm тредах я вместо половины видео вижу хуй обновлялся не помогло
Ой бедненький, наверное Apple должна была отдельно для твоего говна запилить поддержку чтоб ты на дваче срал своими шизомыслями? А то что макака хуй забил на поддержку чего либо ты не подумал.
>webm
Поддержка вебм уже давно есть. Все отлично работает.
> У нас фронтендер
Ну видимо у вас кривая обезьяна вместо фронтэндера, хотя в общем-то фронтендер - синоним этого...
>Домохозяйкам может и не видно этого всего, но мне это очень сильно в глаза бросается.
Да нет, у вас просто комманда криворуких фронтэндовых обезъян.
Сразу бы сказал что ты фронтэндер и тогда было бы все понятно про тебя.
Ля какая помидорка. :3
Как<рефакторить<такой<код>>> Это::же<прибито<все<гвоздями>>>?
Берешь и рефакторишь. Вроде бы если унаследовать DomainPrimitive от Relay, то вся махарайка схлопнется. Но пока лень.
Олсо, ты никогда не заглядывал в код STL, да?
> Как<рефакторить<такой<код>>> Это::же<прибито<все<гвоздями>>>?
А ты думаешь почему на Расте постоянно все переписывают :)
>Криворукие не могут под IE6 верстать
Какой подрыв фанатика эпл, он на втором месте из-за того что гвоздями прибит в ios, вот тебе скриншот из Firefox, он сафари под капотом и определяют его как сафари. Были бы там настоящие хром и фф, то статистика была бы другая. К тому же если статистику отфильтровать по десктопу и мобилкам, то вся популярность сафари именно на мобилках, на десктопе график стремительно идёт вниз
>но браузеросрач - это уже перебор.
Ладно, ок. Тоже думаю не место, короче фанатик эпл победил, пусть пиздует в /s/ свою победу празднует
Как и что ты собрался рефакторить и что у тебя не получается?
> Сафари 2й по популярности браузер. Что значит "занимаются хуйнуй для поддержки" поддерживать браузер с 20% market share - это заниматься хуйней по твоему?
Ты долбоеб? Это точно такой же тейк, какой был у спермоебов во времена Осла и держал всю индустрию в очке, пока Гугл не начал продвигать Хромога. Нет, серьезно, ты же не можешь в базовую логику, возможно ты умственно-отсталый.
мимо
> гвоздями прибит в ios, вот тебе скриншот из Firefox,
Это я и без тебя знал, дальше то что?
Сафари чем плох-то? В чем причина твоего горения?
В том, что твои криворукие дауны с фронта не могут верстать под сафари?
Короче всё с тобой ясно криворукая фронт макака, что ты забыл в этом треде вообще? Хотя это же раст....
Я думаю ты найдешь себе много друзей по разуму в комьюнити раста, лол.
>>296878
Ты блять сравни говно на палке в виде IE который вообще нихуя не поддерживал, и сафари который отлично работает.
Ебать пидоРастеры тупорые я в ахуе, хорошо в моём языке лоу айкью лгбт фемокуколдо гной не задерживается из-за его сложности.
Так я не фанбой эпла, чек пикрил, просто здраво рассуждаю в отличии от тупорылых макак которые горят от того, что им кросбраузерно приходится что-то делать.
Тред даунов тут >>>>>> https://2ch.hk/pr/res/3294005.html (М)
Чувак базанул. Я думал они очкуют такое говорить.
Как понять, почему мой глобальный лок во время выполнения функции все равно приводит иногда к дедлокам?
Ты используешь локи tokio? Иначе таска может переехать на другой поток и лок станет невалидным.
a << b | c
и
c | a << b
это равнозначно? сдвиг в обоих примерах выполняется раньше ИЛИ?
https://doc.rust-lang.org/reference/expressions.html#expression-precedence
Поэтому я везде пишу скобки.
А никак, тут как бы нормальное поведение, один лок блокирует, другой ожидает когда разблокируется потому что ты сам его заставил ждать, это как змея пытающаяся сожрать свой хвост. Я вообще пришел к тому чтобы локи имели минимальное время жизни, если метод длинный, то места с локами оборачиваю в {}, ну и в целом их минимум
При этом его хейтеры самые главные представители ЛГБТ судя по серии тредов
Я хочу использовать Arc<Mutex<bool>>, а сейчас тестирую через lazy_static! static ref Mutex<bool>.
Внутри функции, которая делает всю операцию, локая перед этим мой глобальный мьютекс, есть еще вызовы локов на стейт приложения, что-то вроде data.lock().await
Я стараюсь локать только когда надо получить что-то, и сразу же дропать лок.
А, вопрос не сразу понятен был. Да, это tikio::sync::Mutex
Мне так и нужно, чтобы один ждал завершение другого, а потом начал свою работу. Проблема в том, что в какой-то момент что-то блочится намертво и не продвигается дальше.
Мне нужен глобал лок, чтобы эта же функция рандомно не запускалась внешним ивентом и не начала параллельно изменять расшаренные данные, иначе алгоритм ломается. При этом локи на другие данные, необходимые для алгоритма, внутри функции я тоже оборачиваю в {}, либо сразу дропаю, как только лок становится не нужен.
Был такой экспириенс, нужно было быстро написать прототип одной идеи, писал на ts, дрочился, переписывал, в итоге дропнул (пересел на чистый js), ибо понял что большую часть времени рисую типы и подгоняю типы, вместо написания алгоритма. В общем, перепробовал шустро разные идеи, нашел лучше и уже потом навернул на все это типы.
Так вот, к вопросу что мешает. Порой мешает даже просто статическая типизация, вместо полета мысли занимаешься микроменеджментом и это обычная статик типизация. Так вот что творится в расте я просто боюсь представить с этими гига вложенными типами.
Насколько разработка на расте медленная?
Привыкаешь сразу писать в 75% времени так, чтобы компилятору нравилось. Остальное окупается за счет того, что если скомпилировалось - будет нормально работать в 95% случаев, и не придется долго сношаться с багами из-за UB или непродуманной архитектуры.
Но в сравнении с js или python - будет медленней там, где хочется по-быстрому набросать решение, а рефакторить потом. Некоторый опыт и High Level конструкции языка сглаживают эти моменты.
Если у тебя часто возникают подобные ситуации, то будешь страдать.
Алсо, дженерики и типы на это не влияют. Влияет только то, насколько ты хорошо понимаешь на практике работу борроу чекера и отдельные приколы раста.
> часть времени рисую типы и подгоняю типы
Скилл ишью (без негатива). Тебе в любом случае писать валидацию входных запросов. А потом такую же такую же на каждом потребителе.
>вместо написания алгоритма
Псевдокод никто не отменял. Сначала понимаешь, что тебе надо, потом добавляешь поля, которые забыл.
>я просто боюсь представить с этими гига вложенными типами.
Борроу чекер приучает не делать гигавложенных типов. Чем площе структуры, тем проще с ними работать и проще рефакторить.
https://github.com/rhaiscript/rhai
Зачем? Алсо, пидорастеры, зачем вам пидораст, если всё тоже самое можно делать на питоне или на го?
>Скилл ишью (без негатива).
18 лет проф. программирования на статик языках. О чем ты?
Ты в курсе вообще что такое прототипирование? Сначала ты пишешь одну сигнатуру, потом кардинально меняешь идею и бежишь переписывать под сотню сигнатур. Или ты думал от простой жизни прототипы на питоне пишут.
Давай расскажи, как на питоне пишут прототипы и где. Все залетные крокодилы почему-то про питон так говорят, но нигде не вижу, чтобы его использовали для написания каких-то мифических прототипов.
Да не бомби ты, зеленый. Нельзя везде носиться с одним и тем же паттерном "неосилил".
А зачем эта дилемма: либо так обмазываться типами, что типов становится больше чем кода, либо не писать типы вообще и потерять возможность навигации по коду и рефакторинга?
Я просто пишу обычный "жс" с ненавязчивой типизацией. Интерфейсы для сервисов с парой методов, интерфейсы или Record для POJO.
Если речь про переход на жсдок, то основная проблема жсдоков, как раз в том, что они не рефакторятся автоматически. Если изменил интерфейс, до придется обновлять все ссылки в жсдоках вручную.
Кто обзывается, тот так сам называется.
>>298801
>Сначала ты пишешь одну сигнатуру, потом кардинально меняешь идею и бежишь переписывать под сотню сигнатур
Прототип должен быть простынёй почти без абстракций и модулей. Когда будет что-то рабочее, то можно уже выносить повторяющийся код, добавлять обработку ошибок и так далее.
>Или ты думал от простой жизни прототипы на питоне пишут
В Питоне куча батареек и есть Пип. Можно за 15 секунд поднять HTTP-сервак который будет отдавать хелло ворлд. В Расте разве что экосистема менее развитая, но что-то похожее тоже можно делать. А вот динамические типы в лучшем случае вкусовщина.
Знаю эту тулзу, а теперь скажи мне, как много компаний ее используют и что-то там прототипируют для своих продуктов.
Алсо, в питоне уже давно пишут код с типизацией, обмазываются линтерами и тайпчекерами. А динамическую магию стараются юзать поменьше.
Кто-нибудь объяснит, что такое "писать прототипы на питоне"? И почему его нельзя писать на других языках.
К js можно поставить ts чтобы он проверял js код, по необходимости отключать его если нужно (или частично отключать, например по файлам или строгости), а потом либо jsDoc привязать или d.ts. Чем я и воспользовался в том случае.
Не то чтобы я хорошо знаю js, я его не очень люблю, но в тот момент возможность подключать/отключать проверку типов оказалась очень удобной.
Zed
Первое время мешает, потом пишешь уже нормально и что самое любопытное на других языках начинаешь писать как будто бы тебя ждёт бороу чекер, даже на js смотрю свой старый код там везде let и переменные дальше мутируются, а теперь когда пишу везде const, это прям сильно в глаза бросилось
Глаза протри шизик, на прошлой неделе последний коммит был, ещё и свежие ПР висят
Ты из какого года пишешь? Питонисты во всю используют тайпхинтинг и уже даже @override пишут. А говнякать на коленке удобнее на js, взял экспресс и хуяк хуяк набросал прототип
>Алсо, в питоне уже давно пишут код с типизацией, обмазываются линтерами и тайпчекерами.
если код на выброс, то нет.
>Кто-нибудь объяснит, что такое "писать прототипы на питоне"? И почему его нельзя писать на других языках.
минимально рабочий вариант для демонстрации работоспособности алгоритма / идеи. почему нельзя писать на других языках - внезапно разный complexity и наличие библиотек.
>>298708
>Скилл ишью (без негатива).
а у тебя снобизм и максимализм. без негатива.
>Псевдокод никто не отменял
лол зачем? быстрее написать его на js/python.
>>298801
>Ты в курсе вообще что такое прототипирование?
lдумаю что челик либо в универе еще, либо сразу после. иначе бы не задавал таких вопросов зачем нужно прототипирование.
Если работать полноценно, то только rustrover жыдбрейнс и тормознутая жаба или vscode + расширение rust analyzer помимо поддержки lsp сервера там более менее нормальный автокомплит и всякие переименования методов и полей структур умеет, плюс всякого по мелочи но электрон жрет всю память. А так есть просто текстовые редакторы к которым подключаешь lsp сервер и вперёд там от nvim и zed до всяких ноунеймов типа гномовского builder.
Если работаешь не в rustrover, то у тебя будет работа через lsp сервер, который тупо вызывает cargo check с выхлопом в формате json, а cargo check выполняет всю компиляцию кроме создания бинарника, то есть потребляет много ресурсов, если работаешь с большим проектом на слабом компе или у тебя ноут быстро садится, то отключи проверку кода при автосохранении и повесь запуск lsp на какую нибудь комбинацию клавиш, должно помочь.
Сейчас тоже в поисках чего-то легковесного в силу обстоятельств работаю с 8Гб оперативы на amd говне и так до конца года придется, но так и не нашел ничего подходящего кроме vscode
>лол зачем? быстрее написать его на js/python.
То, что интерпретируемый язык с кучей батареек быстрее в разработке я не оспаривал, но речь-то о типизации. Что там в ста местах нужно править я вообще не представляю.
>внезапно разный complexity
Типа, на питухоне у твоего алгоритма будет комплексити O(n) а на условных сях O(n^2)? Или ты о чём?
Открыл два последних коммита, подергали какую-то директиву, комментарий поменяли, и это за 4-7 дня. А я сегодня 9 часов код писал.
Разные миры.
>дажена js смотрю свой старый код там везде let и переменные дальше мутируются, а теперь когда пишу везде const
Что нужно знать об уровне местных фанбоев. Открыл для себя const.
А после раста в жопоскрипте тоже данные везде клонируешь?
>Разные миры.
Все правильно разные. Опенсорс проект куда вносить изменения крайне сложно, плюс отсутствие кабанчика с ПМ которые организуют процесс. Обычно там еще архитектура не очень вменяемая, поскольку разные люди, которые не всегда в контексте проекта начинают добавлять свои фичи, что усложняет поддержку.
>А я сегодня 9 часов код писал.
И этот мир, где тебя погоняют хлыстом и говорят что делать
>местных фанбоев
Самый главный фанбой здесь это ты, не нравиться язык, но один хуй приходишь. Вот это преданность, такая поддержка дорого стоит
>Открыл для себя const.
Иммутабельность
>данные везде клонируешь?
Передаю владение
>>299304
>То, что интерпретируемый язык с кучей батареек быстрее в разработке я не оспаривал, но речь-то о типизации. Что там в ста местах нужно править я вообще не представляю
тут я хз, может быть речь была про раст - что там в случае рефакторинга надо менять в 100 местах.
я в свободное время тоже раст ковыряю. дофаминовый язык, получаешь кайф от преодоления выебонов компилятора. некоторые задачи заходят прикольно с литкода, но списки это хоть помирай. писать на нем какие-то свои проекты(только если не нужно экономить память) не решился бы. дата рейсы тоже не актуально, с опытом уже знаешь где ставить мьютексы, а где вообще лучше не шарить память. плюсы тоже нахуй, в 2024 году до сих пор нет нормальной поддержки utf-8 в std, зато тоннами завозят перделки из других языков.
https://www.opennet.ru/opennews/art.shtml?num=62061
https://asterinas.github.io/
Китайцы что только не пишут.
https://2ch.hk/pr/res/3242329.html (М)
Умудрились компилятор для тайпскрипта в aot написать, причем у жопо-тайп-скриптов, нет поддержки нативно интов, лол.
> нет поддержки нативно интов
Там скорее всего может быть проблема с совместимостью ts тип number у js под капотом это f64.
Вообще я бы дождался полноценного релиза, они там еще во всю пилят его
Да пусть пилят, будущее все равно за компонентной системой wasi, пусть посмотрят как поезд проходит мимо.
Сам не понял, дроч имхо. Язык конечно сырой, попытался распечатать строку в аргументах - говорит надо инт передать. Пока чисто лулзы ловить.
Да, с auto костыли ебучие. Вывод типов одна из лучших фич крестов, а они заменяют её на такое. И ещё пикрил, что это нахуй, в крестах так можно.
Когда уже сделают нормальный возврат,
fn getStr() 8====D String
ведь весело когда тебе делать нечего и ты сидишь рисуешь стрелочки, хлебом не корми, хочу расставлять двоеточия, стрелочки, точки запятые.
Мне больше интересно что карбон с самими плюсами делать будет, как с мув семантикой работать будет, что с инициализацией сделает
Ну вариантов немного. Либо обосраться, либо поддержать в каком-то виде. Вот что они пишут:
"Yes, Carbon will support move semantics; see p0257. In particular, we are experimenting with a hybrid of destructive and non-destructive semantics that we are hoping will combine the advantages of both."
https://github.com/carbon-language/carbon-lang/issues/1685
У гугла не хватает спецов чтоб нормальные языки делать. Проект еле двигается, а системный язык требует ппц вложений, сам он не выстрелит. Никто не будет вендерложиться с свободных независимых плюсов на гугл кукан.
Автовыведение возвращаемого типа вроде не сразу в плюсах сделали, даже после auto. Я думаю за пару лет тут все ещё переколбасят. Пока надо ждать. Кому не терпится - писать на расте, правда когда карбон выпустят уже как Ватсон не сможешь без БЧ.
> правда когда карбон выпустят уже как Ватсон не сможешь без БЧ
БЧ - это литералли худшая вещь в расте, его выпил самое первое что хочется получить.
Плюсану, я до этого думал писать на ансейф расте. Но потом узнал что это не поможет лол. жаль его нельзя отключить.
Единственная вещь, из-за которой можно как-то продать это раст.
>БЧ - это литералли худшая вещь в расте
Кстати потомки как там в асинке дела, решили проблему с пинами?
Чё за проблема с пинами?
> Кстати потомки как там в асинке дела
Выкинут за ненадобностью. Любые протекающие абстракции говно.
Опять функции с большой буквы...
>Единственная вещь, из-за которой можно как-то продать это раст.
Кому продавать? Системщики его ненавидят, у прикладных и так ГЦ есть. Хотя я видел промытого питониста, которому не хватало безопасной памятью
Зиг высрал кросскомпиляцию си и его даже на бете теперь дрочат. Так что тулинг решает больше.
Я и спрашиваю, кто это? До раста потребности в этом не было, зато до релиза был раст с зелеными потоками. Еще вопрос что важнее.
Там и гц был емнип, отключаемый. Но поскольку рядом вышел го, надо было отличиться, выпили гц и грин треды.
Лол, го как раз показал какой технологии не хватало, но при этом показал как не надо дезайнить язык. Знаю людей, которые ждали что поверх рантайма натянут что-то годное (на фоне появление тогда котлина с его интеропом к джаве)
Так я согласен. Мне лично го не нравится его невыразительностью. Но многопоточка и рейс детектор - мое почтение.
>что почитать
ВСЁ Блять, все смотреть и читать! Чем больше ты читаешь, тем более ценным сотрудником становишься. Никого в мире не ебет, что ты чего-то не знаешь или не выучил, это твоя проблема. Тебе дадут задание, сделать до такого-то числа, сам и ебись с этим. Думаешь за тобой будут бегать, Сычееев, ну почитай книжечку, ну пожалуйста! Да кому ты нахуй обосрался. Не знаешь тему - тебе же хуже. Тебе бабки платят? Сроки ставят? Не выполняешь - придет другой чел и выполнит за тебя работу. Не бывает слишком много знаний, и вопрос "че почитать" не имеет смысла.
Очевидный тур го, еще почитай про работу со слайсами там могут быть сюрпризы и многопоточка как там работают горутины waitGroup, каналы, мьютексы. Остальное на каждом проекте будет индивидуальным
>>300069
>кукарек с дивана
Этого не слушай, если берут на перекат с других языков, то скорее всего есть онбординг и все в курсе что ты можешь тупить первое время и они сами перекатывались с других языков
Типы и функции с капитал кейса? Ебал я в рот, столько надежд было на этот карбон, видимо придется до конца жизни сидеть на с++
>ВСЁ Блять, все смотреть и читать!
Двачую, и начать надо с чтение двача, с перечитывания всех тредов javascript, потом питон тредов, потом руста.
Так писать может только мудень
var i I
i.M()
type I interface {
M()
}
Это вообще не читается. Не рекомендую го тур, его писали люди далекие от промышленного программирования. Как-будто в 70е годы старый болван сел за компуктер
Хорошо, а у тебя есть жена и лишние 300кило зеленых?
https://mitchellh.com/writing/zig-donation
>Mitchell Hashimoto
>I'm a developer living in Los Angeles, CA.
Лол, да он еще 100% и жену свою под негров подкладывает кроме этого.
>Как-будто в 70е годы старый болван сел за компуктер
Зумерок спок, новизна этикети мало что даёт на практике.
Ты не прав. Зиг это моча, обосранная говном.
Я глянул примеры, аллокаторы каждый раз при создании объекта или массива в куче? Жёстко конечно. И там ещё нет динамик контейнера типа вектор.
базово там все просто: в один момент времени либо 1 пишущая ссылка, либо множество читающих. это чтобы предотвратить рейс. проблема в том, что это все сопровождается кучей аннотаций компилятору, чтобы он тебе поверил что ты его не наебал где-то. и если вдруг, потом ты решишь это все засунуть по нескольким потокам - то сходу охуеешь. в противовес например го, где просто добавишь rwmutex и горутины.
>И там ещё нет динамик контейнера типа вектор.
Заорал. Это тред про системный язык или что нахуй?
Система владения была бы нормальной, если бы не было тупого запрета на число мутированных ссылок. Они победили какой-то тупой момент гонок, но поставили всех раком во всем языке.
Чего ты орешь? Vec это типичный динамический массив по типу ArrayList в других языках, с ним гораздо удобнее работать когда он есть в стандартной библиотеке и у всех в коде будет работать одинаково, чем с непонятной самописной недохуйней, которая везде разная и у уважающего себя криворукого Васяна обязательно наебнется в рантайме
Ну так просто берёшь любимую библиотеку/любимую реализацию
>у всех в коде будет работать одинаково
Хуёво.
Причем тут системный язык? В плюсах и расте он есть. Не вижу смысла в 24 году ебаться с изобретением велосипедов типа вектора или словаря. Концепция аллокаторов конечно потрясает своей "новизной", но можно было ее сделать не такой нарочитой. Короче вердикт - как показал го - победит язык с нормальным синтаксисом, богатой стандартной библиотекой, зелёными потоками из коробки и адекватной концепцией владения памятью(хотя бы не ебать мозг количеством пишущих ссылок).
>Не вижу смысла в 24 году ебаться с изобретением велосипедов типа вектора или словаря
Я просто хуею с местного паноптикума.
>Я глянул примеры, аллокаторы каждый раз при создании объекта или массива в куче?
Чтобы ты мог передать свой аллокатор, например тестовый, который отловить для тебя утечку
https://www.openmymind.net/learning_zig/heap_memory/#testing
В плюсах тоже можно сделать свой аллокатор. Только его не надо везде с собой таскать. А в большинстве случаев ты вообще про него не знаешь.
Это фишка стандартной либы, ты волен делать что хочешь, баран-чекера нет, вытащи фаллос из жопы, живи свободно.
Сейчас бы упрекать системный язык за то, что он дает тебе полный контроль.
А что делать, когда надо тестовый вернуть обратно на нормальный? Везде руками менять? Какой дегенерат это придумал?
>>300777
Тут даже не столько ебля с написанием коллекций типа вектора и всяких хэшмап, сколько универсальность решений, которые используются можно сказать всегда и любой человек работающий с этим языком их знает и не будет тратить время на понимания принципа работы. Ну и само собой эти коллекции уже опробовали множества людей, что уменьшает риск ошибок
>Нахуй ты в треде про системный язык, джавапидор?
Ахах, загуглил новые базворды и попал на джаву.
Зеленый
>Наличие стандартной имплементации контейнера в стдлибе вообще ничего не решает, если ты не обоссаный вкатун.
Ну если в соло писать крутые проекты хэлоуворды для того чтобы заполнить гитхаб перед собесом, то да ничего не влияет. Если разработка ведется командой, то использование стандартного решения, которое все знают будет в приоритете
>>IoC и DI
>Нахуй ты в треде про системный язык, джавапидор?
Как же ты весело позоришься
ещё много крейтов который уже не нужны из-за наличия аналогов в стандартной либе, но которые до сих пор юзаются в новых проектах из-за популярности.
Похуй + похуй
Ты хуесос и пидорас, у тебя:
Стандартное решение = хуйня из стдлиб
>IoC и DI
Ещё раз, здристни из треда про системный язык, джавапидорас.
>Стандартное решение = хуйня из стдлиб
Все правильно это хуйня с поведением которой все знакомы, а нестандартное решение хуйня от васяна, который уволился полгода назад и никто в душе не ебет что его словестный понос в 5к строк делает. Первое решение подойдет для работы, второе для васяна наполнить свой гитхаб.
>джавапидорас
Ты вместо того чтобы пугаться кода на жабе, почитал бы эту статью с хабра, которая в первой строчке выдачи гугла. Вот кстати примитивный пример DI на пике, когда AppState внедряется сверху и ты можешь замокать (например вместо настоящих моделей которые у тебя в стейте заглушки, которые отдают тебе нужный результат вместо запроса к БД) и покрыть тестами свой код не зная что делает весь остальной код.
Даже если ты не будешь писать на расте ты все осознанно или нет равно придешь к тому чтобы использовать DI в том или ином виде, так что лучше почитай чего умные дяди пишут
У них как использовался так и используются движок gecko https://firefox-source-docs.mozilla.org/overview/gecko.html они пилили новый движок в качестве эксперимента, но не потянули финансово, теперь этим занимается Linux Foundation, а там его пилят 3,5 человека чего-то выпускают, но пока стабильной версии нет еще. Оно и не удивительно за последние 15 лет постоянно добавляют новые фичи в html и css там одно только прочтение всех стандартов https://www.w3.org/TR/ займет месяцы
>с поведением которой все знакомы
Напомнило как вроде в 2016-2017 году в гну либс чёто там поменяли, у пидорax пригорело, хотя в стандарте никто это поведение не обещал.
>а нестандартное решение хуйня от васяна
>бyст
Ебаный ты джавапидарас, ты вообще не понимаешь, о чём ты пишешь.
Нет сырья и кадров, ну и раст - говно в целом.
>ты вообще не понимаешь, о чём ты пишешь.
Это ты не понимаешь о чем говоришь, а про DI прочитай умные статьи лучше, как-то ты ловко проигнорировал лол
Успешные менеджеры превратили язык в продукт и стали разводить хайп и доить. Лиса терпела, получила болт, вместо серво и дропнула паразитов, паразиты создали фонд, и стали разводить дальше.
Пикча - не удивлюсь, если это Arc дергается.
https://www.youtube.com/watch?v=yJmyYosyDDM
До релизной версии язык нельзя воспринимать всерьёз.
Ну то есть, когда мой стартап достигнет нагрузки в 40к юзеров в секунду нужно переключаться на Bun, а до тех пор Deno лучше.
Зафиксировали.
Это что от чего зависимость? И где тут Раст, зиг? Таймкоды кидай.
Ты не разговариваешь, а чего-то кукарекаешь, сам не понимаешь чего сказать хочешь, но надо поогрызаться словно тебя раскаленной кочергой ебут если не ответишь.
Речь же выше шла что ты протестировать свой код не в состоянии, тебе предложили подробнее узнать про DI, ты давай чего-то про жабу ныть, хотя о ней тут ни слова не сказано лол и теперь чего-то обижаешься как баба в месячные
Да он наверное впервые услышал такое, пошёл гуглить, а там везде примеры с датой и спрингом
|___ crate1
| |____ .git
|___ crate2
| |____ .git
|___ crate3
| |____ .git
так кто-нибудь делает? крейты сами по себе довольно независимы и могли бы применяться отдельно, но всё же хочется запихать их в один воркспейс, а также что бы у них была отдельная история коммитов, как быть?
Можешь добавить через относительные пути.
workspace
|___ crate1
|___ crate2
|___ crate3
|____ .git
У нас так сделано, также как тут https://github.com/cloudflare/pingora как быть в твоем случае хз, это неудобно будет работать с иде
Файл получается большой и долго потом считывается. Есть какие-нибудь способы "из коробки" фрагментировать его на множество файлов, типа каждый элемент в отдельном файле и читается только нужный файл?
И, главное, чтобы это было все прозрачно при декодировании, т.е. мне не пришлось бы прописывать "если нужен этот элемент, то читать этот файл".
Типа указал, вот струкрура, разбить так-то, а дальше оно само все выводит. И при считывании считывает не все структуру, а нужные файлы в зависимости от того, какой элемент или поле читают?
Дохуя хочу, да?
А что вообще хранится в структуре? Может имеет смысл использовать какие-нибудь специальные решения именно для хранилищ.
Например блохчейны работают на leveldb https://github.com/google/leveldb на расте есть библиотеки для нее например https://crates.io/crates/leveldb-rs-binding там есть заброшенные ищи что посвежее она переваривает сотни гигабайт блоков и транзакций в эфире. Как раз похоже на твою задачу, там принцип как у хэшмапы и все раскидано по файлам, правда я с ней работал только в гошке когда ковыряли эфировскую ноду, на расте не знаю как. Может и на расте есть какие-то реализации чего-то похожего, смотри в эту сторону.
Ковыряю крейт (работающий) и отталкиваюсь от того, что есть там, а не пишу что-то from scratch.
Посмотрел повнимательнее, там Vec<u8> на очень дохуя гигов, а все остальные читают с него через сырые указатели (в unsafe): slice::from_raw_parts
slice::from_raw_parts_mut
малой кровью тут не обойтись
РЯЯЯЯ АНСЕЙФ
>раст хуйня стд либа говно почему так?
>>мы специально держим её наиболее минимальной, чтобы дать юзерам самостоятельно выбирать, подходящие под задачи крейты, что довольно легко с наличием хорошего пакетного менеджера
нахуй тогда вообще нужны std, core, alloc, proc_macro, test крейты, идущие вместе с компилятором, можно было их также сделать доступными только через менеджер пакетов и выкинуть нахуй prelude, тогда бы точно ни у кого не было вопросов, почему стандартная либа такая маленькая, т.к. без крейтов искаропки и неявного импорта (основной фактор) не было бы установки, что стандартная либа есть и всем бы было ясно, что надо либо пилить самому, либо брать готовые и явно их импортировать. подводный? почему так не сделали? есть no_implicit_prelude. no_std, no_core, но имхо они должны были быть дефолтными атрибутами.
Раст мертворожденный говноязык, не заморачивайся
let a = b;
В одном случае он выполняет копирование, а в другом перемещение. Это две разные операции, но синтаксически они ни как не разделяются, в итоге совершенно не понятна семантика программы, потому что она сплошь состоит из этих неявных операций. Rust вроде как собирался бороться с неопределенным поведением, но сам порождает неопределенное поведение своим кривым синтаксисом и скрытой семантикой.
Потому что писать "батарейки" надо качественно и долго так как нужен реальный фидбэк по реальному коду, а не маня api, потому как потом это все не выкинуть. Понятно что ресурсов на все это нет и надо "продавать продукт", а не заниматься чепухой с разработкой, поэтому и добавили затычек, глядишь попенсорщики нахаляву допилят.
Во первых в расте нет такого понятия мувает, во вторых всегда мувает
> неопределенное поведение
Значение знаешь?
Это ты еще операторов << и >> в плюсах не видел, вот там действительно нихуя не понятно что они делают, уже начиная с хэлоуворда какой-то шифт оператор со строкой, хуй пойми чего делает, в итоге совершенно не понятна семантика программы, потому что она сплошь состоит из этих неявных операций.
У них нет открытой отчетности по инвестициям фонда, а это всегда значит - кушать фонд.
Лол, хеллоу ворд раста с макроса тебя встречает. То есть шизики главный свой недостаток пытаются натянуть на древние плюсы.
>Это ты еще операторов << и >> в плюсах не видел, вот там действительно нихуя не понятно что они делают
Не пизди, все там понятно, это битовый сдвиг, но как любой оператор его можно перегрузить и делать что угодно в зависимости от твоей фантазии
>>305401
https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html#variables-and-data-interacting-with-move
Да это мув, это разное поведение не у оператора, а разное поведение у типов при муве. Примитивы с фиксированной длиной при перемещении копируются. Тоже самое если будет блок кода с move {} все примитивы туда скопируются, а остальные типы передадут владение. Вот список этих типов на пике, при желании можно своему типу сделать такое же поведение если имплементировать маркер трейт Copy https://doc.rust-lang.org/std/marker/trait.Copy.html#
Покормил
Мува в расте нет, то что ты мувом из плюсов называешь просто копирование структуры
В случае интов мув и копирование это одно и тоже
Оператор равенства всегда делает одно и тоже
Как функция, не включай дурочка, на гейрасте тоже есть перегрузка операторов. но нет перегрузи функций, лол
Почему тогда в случае:
let b = String::from("hello");
let a = b;
переменную b мы не можем использовать, а в случае:
let b = 5;
let a = b;
доступны обе переменные a и b?
Значит всё-таки это разные операции и делают они не одно и то же.
Напряги хотя бы две извилины, я в тебя верю
Подсказка: в обоих случаях операция равенства делает одно и тоже, дальше сам
Лол растеры сами не знаю почему происходит двойное поведение.
Там на примитивы реализован трейт Сopy, поэтому передачи владения не происходит. Но это неявная магическая херня, поэтому раст сосет, а зиг рулит.
У тебя еще побомбит от затенения переменных. Атовыведение типов и затенение просто дарят пласт плавающих ошибок. Очень безопасненько, по питоновски просто.
Трейт копи никак не меняет поведения оператора равенства
Изучи уже вопрос чтобы не позориться, зиг ребенок
Нафиг мне учить магическую анально-ограниченную говнину?
Если есть мув-семантика, так пусть она будет всегда, а не под капотом спрятана за трейты, которые ты либо подключил либо нет.
мы 90% времени читаем код, а не пишем и любое подводное руби-поведение превращает язык в тыкву.
> Пусть она будет всегда
А кто тебе ее отключает? Попроси его вернуть обратно, а то как ты программировать будешь
> Нафиг мне учить
Да не учи ничего, да и вообще не програмиируй, нах напрягаться
вот бы ты еще в тред не щитпостил, но не думаю что ты удержишься
>У тебя еще побомбит от затенения переменных. Атовыведение типов и затенение просто дарят пласт плавающих ошибок.
std::string image_path("hui.png");
std::optional<ImageFile> maybe_image_handle = ImageFile::load(image_path);
std::vector<uint32_t> image_decoded;
if (maybe_image_handle) {
std::optional<std::vector<uint32_t> maybe_image_decoded = image_handle.decode();
if (maybe_image_decoded) {
image_decoded = std::move(*maybe_image_decoded);
}
}
}
Ух сколько ошибок я избежал, збс. И английский вспомнил. А auto так вообще только мешает.
>Но это неявная магическая херня, поэтому раст сосет, а зиг рулит.
Это явная херня поскольку тип имплементирует трейт, тут нет никакой магии. Если ты откроешь доку и прочитаешь про маркер трейты, то у тебя вообе никаких тупых вопросов не будет. Маркер трейты собственно для этого и нужны
>затенение
Если пишешь бред сумасшедшего на 1000 строк в одном методе, то земля тебе пухом тут встрянешь, а если пишешь нормальный код, то у тебя таких проблем не возникнет
Снова покормил
>Это явная херня поскольку тип имплементирует трейт
Где? Быть может строкой ниже? Или быть может строкой выше?, Или может мы импортировали трейт? Или хотя бы макрос повесили? Или аннотацию?
А может это тупо магический неочевидны кусок говна?
>а если пишешь нормальный код,
И снова плохие программисты. Ты плохо не пиши, пиши хорошо.
Для тоталитарного языка, с кучей ограничений, такая дрисня смотрится издевкой.
>Для тоталитарного языка, с кучей ограничений, такая дрисня смотрится издевкой.
Сам придумал сам оскорбился. У тебя в Го даже указатель на функцию передать нельзя, кто тут тоталитарный.
Спасибо что предупредил. Правда, я не хотел его использовать и вообще не понимаю зачем он нужен. Лучше бы к расту делали сноску, чтобы люди не тратили свое время на сие подделие.
>Где?
В крейте где ты используешь, никто в другом месте к строке Copy не добавит.
Ты можешь имлементировать трейты из других крейтов, только к типам которые в твоем крейте.
Ты можешь импелементировать только свои трейты к чужим типам.
Ты можешь имплементировать свои трейты к своим типам.
Всё.
>Быть может строкой ниже? Или быть может строкой выше?,
Есть правила хорошего тона, которые судя по всему к таким как ты не относятся, делать имплементации непосредственно рядом с типом или трейтом, который ты сам же и написал. Но ты, я погляжу, человек творческий найдешь где спрятать.
> Или хотя бы макрос повесили?
Ты явно в коде будешь использовать этот макрос своими руками
>Или аннотацию?
Ты это увидишь это в #[drive] над твоим типом
>Или может мы импортировали трейт?
От импорта трейта не происходит имплементации
>И снова плохие программисты. Ты плохо не пиши, пиши хорошо.
Речь идет о базовых вещах, как KISS, SOLID, DRY. Если ты объявил в одном методе 2 переменных с одинаковым именем, да к тому же это может привести к какой-то путанице, то наверное тут что-то не так с кодом. Хотя куда уж нам, бородатым дядям, до таких особенных творческих мальчиков как ты.
>в Го даже указатель на функцию передать нельзя
А это что?
type callback func(c int) string
func call(c callback)...
есть структура
есть ручная имплементация трейтов Encode и Decode для этой структуры
с encode понятно:
self.имя_поля.encode(encoder)?;
в decode аналогично:
Self {
имя_поля: Decode::decode(decoder)?,
};
так вот блядь
вижу конструкцию вида isize::decode(decoder)?
что она блядь возвращает? понятно, что isize, но откуда она его берет, если в encode ничего такого нет?
мне казалось, что кодируем, то и можем декодировать
короче, понял как это гавно работает
там нет привязки к полям структуры
она видимо тупо побитово считывает, а isize::decode(decoder) это просто следующие биты после предыдущего decode(decoder)
Какой-то буллшит с разноцветными функциями, я так и не понял. На мой взгляд есть чисто философские проблемы с фреймворками типа tokio, которые вхуяривают универсальный комбайн в мою системщину. Ты берёшь системный язык, нужный чтобы четко управлять потоком данных, а потом делегируешь всё это громадной либе размером с нод.жс.
Но в этом никто кроме меня проблемы не видит.
Как и в любой асинхронщине - тебе надо покрасить весь код или костылить синхронные костыли повсюду. А ещё это по производительности всегда хуже нормальной многопоточности.
Смысл проблемы цветных функций, что все что трогает асинк, сам становится асинком. Это не проблема раста, да и в целом всем насрать.
А по самому токио какие проблемы?
>что все что трогает асинк, сам становится асинком
Если ты подключаешь какую-то либу для логгирования, тебе нужно использовать эту либу везде. В ООП ты либо пишешь всё приложение вокруг гигаобъекта, либо передаёшь в функциях по 20 параметров. Так, сука, программирование работаёт.
>А по самому токио какие проблемы?
Да я уже сказал. У тебя есть огромный рантайм, который должен делать тебе хорошо. А если он вдруг не делает тебе хорошо, то тебе бог тебе в помощь. Нужно что-то менее универсальное, зато гибкое.
> В ООП
> либо передаёшь в функциях по 20 параметров.
Не понимаю о чем ты, но вот фишка процедурного программирования, это как раз в функциях овер 5-10 аргументов.
Где ты увидел 20 в методах, я хз.
Помнится я срался с одним чуваком, который меня убеждал что это вообще не проблема. Но выглядит на грани фанатизма, типа как некоторые гошники усирались что дженерики не нужны.
>Где ты увидел 20 в методах, я хз.
Вменяемые люди так не делают, поэтому есть один убер-объект, который управляет. Получается, что методы этого объекта имеют свой цвет, и если ты хочешь добавить новый функционал, то тебе нужно расширять этот класс. Прямо как с асинком.
Ты не понимаешь концепт цветных функций, прочитай уже статью (она там гуглится, автор и ввел это понятие)
В случае синхронного апи - они всегда синии, причем тут ООП. (т.е. могут вызывать друг друга, как и зеленые из го, а вот про красные ты прочитаешь уже сам)
>причем тут ООП
Есть глобальная функция ToLowerCase, есть метод класса CountLetters. Первую из второй ты вызвать можешь, а вторую из первой только если ты создашь объект этого класса. Не щелкает?
>т.е. могут вызывать друг друга, как и зеленые из го,
В го есть рантайм, который для каждого потока\корутины поддерживает свой стекфрейм и пересобирает его по мере надобности. Там все функции красные. А вот если ты хочешь позвать нативную функцию, которая ничего не знает о Го неожиданно нужно делать кучу приседаний.
Сейчас бы с ГОвном сравнивать и говорить что если у них так сделано, то значит и у нас норм. Хотя например в крестах корутины имеют обратную ABI-совместимость с прошлыми стандартами и корутину можно вызвать даже если твой компилятор их не поддерживает.
Чего куда пересобирает? Восстановление контекста исполнения?
>приседать
Ты про вызов из нативного кода гошной функции?
Вызвать метод у несозданного объекта, это как вызвать функцию у неподключенного модуля. Иди уже отсюда, это раздел для программистов
Сами слушают голоса в голове про шизоцветные функции, а обострение у меня.
>>306987
>Чего куда пересобирает? Восстановление контекста исполнения?
Стек корутины где хранится и как устроен?
>Ты про вызов из нативного кода гошной функции?
И наоборот. Точно также ты не можешь из корутины на Го сделать DLL'ку, которую можно вызвать из Си, не запихав в неё весь гошный рантайм. И это даже вообще не проблема, но именно в Расте из этого раздувают драму.
>>306972
Корутины не вызываются, это просто стейтмашины. Токио тоже был до асинка.
А что означает создать корутину вне контекста, в котором она будет исполняться?
>Стек корутины где хранится и как устроен?
ты на вопрос ответишь прямо или так и будешь туманно попукивать с умным видом?
> И наоборот. Точно также ты не можешь из корутины на Го сделать DLL'ку, которую можно вызвать из Си
чего наоборот? из го вызывать сишные либы не проблема, если следить за памятью. вызывать из си гошные функции это никому не унужная хуйня.
Не понял проблемы, tokio - опицональный рантайм, если не нравится замени его другим/своим. Вполне нормальная идея для системного языка как по мне.
Не юзал асинк раст для микроконтроллеров или подобных мест где важен размер рантайма, но полагаю примеры таких рантаймов есть:
https://github.com/embassy-rs/embassy
Пробовал гуглить, но даже зная ссылку, гугл отказывается их искать. Есть какие-нибудь шаблоны по поиску md-книг?
>Не понял проблемы, tokio - опицональный рантайм
Кстати выше джавапидарас говорил, что надо всё тащить в стандартную библиотеку, ваше ебало если бы токи был в ней?
Нормальную реализацию как в каком-нибудь шарпе можно было бы и притащить. Но кроме дотнета никто не пилит стд, у всех всё в стиле Тодда "Сами допилят" Говарда.
Ебать чурка.
>джавапидарас
Это какой-то залетный студент услышал про DI когда обосрался с тестированием и начал искать джавистов под кроватью после первых ссылок в гугле.
Речь же выше шла про всякие коллекции типа вектора и хэшмапы, что для разработки в команде стандартные решения гораздо лучше самописных костылей васянов которые уволились год назад. А для всяких специфичных штук можно использовать no_std и запускать свой DOOM на тесте для беременности
>ваше ебало если бы токи был в ней
Не нужно его в стд, токио по сути нужен только для бекенда
так ты свой пост перечитай что ты там утверждал. и хейт в сторону асинка обоснован. но не конкретного языка, а концепции в целом. потому что на го такой код пишется проще и не выглядит как кусок костыльного говна. но некоторые насктолько фанатично преданы своему любимому $language_name что будут даже костыли выставлять как достоинства.
Без ансейфа реализуются, но для производительности лучше с ним
> в таких алгоритмах ноды связываются ссылками друг на друга
Ты совсем зелёный? Ну подожди, в универе на первом курсе расскажут что граф можно хранить и матрицей и списком ребер и тому подобным
Какой конкретно?
Я так понял связи произвольные, тогда каждая нода содержит Vec<Optional<Node>> ну и проблем с редактированием и обходом таких нод без использования ансейфа не вижу
https://www.youtube.com/watch?v=8VWC9toafz8
Арены с индексами. Есть профит, что индексы не обязаны быть размером с указатель.
>каждая нода содержит Vec<Optional<Node>>
Как раст поймет, кто владелец ноды и что можно высвободить память для них?
>уиии васяны используют свои костыли(аллокаторы)
Джавапидорас и его подсос сисярпопидор выше не одобряют использование арен.
На си хеллоуворлды почему-то занимают всего 15Кб.
> Почему хеллоуворлд на расте весит 400Кб?
Раст не умеет стд триммить, всегда всё с собой таскает.
Бля ну потому что си использует системную библиотеку STD для вывода текста и так далее. Он не включает её в бинарник. А раст включает. Поэтому у него размер бинарника больше. Чтобы было честно, надо компилить с флагом no_STD https://docs.rust-embedded.org/book/intro/no-std.html
Это бодипозитивный системный язык, ты не понимаешь.
На винде сишнная либа весит 120 кб, раст её линкует динамически. Так что твоё объяснение не принимается.
Чел, ты на это уже жаловался. Смени методичку.
>Что там такого в бинарнике, что для того чтобы вывести два слова в консоль надо 400Кб кода!?
Выведи LLVM IR и посмотри. Или вообще в хекс-редакторе бинарь открой.
Не гори, лучше скачай приложение Сбербанка на 400 метров.
value.update_ref();
}
hash_map.values_mut().map(|value| value.update_ref());
в update_ref() передается &mut self и обновляются поля структуры, которая лежит в hash_map в качестве значения
в первом случае все ОК, а во втором ошибок не выдает, но update_ref не делает то, что требуется
вместо map надо юзать что-то другое?
Ленивые итераторы. Ты создаёшь итератор, но ни разу не делаешь next(). На это должен быть ворнинг.
Хуею с этой чурки, которая забегает в тред системного языка и рассказывает как ей не насрать.
Как выше уже написали итераторы ленивые, тебе нужно вызвать next или делать collect и только тогда будет вызван метод, который ты передал.
Можно в код нырнуть и глянуть как оно там работает, там довольно все просто написано .map() просто делает обертку и возвращает эту структуру https://doc.rust-lang.org/src/core/iter/adapters/map.rs.html#61 чтобы произошел вызов твоей функции, нужно вызвать next(), тогда структура Map вызовет у итератора метод next() и если там есть что вернуть то в Option вызовется метод, который ты передал https://doc.rust-lang.org/src/core/iter/adapters/map.rs.html#106
>>308401
>вместо map надо юзать что-то другое?
Если тебе нужно в цикле просто вызывать что-то другое, то лучше первый вариант. А если надо манипулировать с данными и потом их во что-то собрать, то удобнее итераторы
Уже не только джавистов, но и шарпистов под кроватью ищешь лол
Как корректно забить нулями кусок заданной длины (в T) начиная с поинтера? Чтобы все остальное осталось в памяти нетронутым, т.к. на этот вектор еще дохуя mut T.
Понятно, что это что-то типа from_raw_parts_mut в unsafe, но как конкретно?
Не совсем понял чего ты хочешь, может тебе надо заранее выделить память под нужную длину вектора, тогда
Vec::with_capacity(длина)
нет, есть вектор на 100000000 элементов
есть мутабельный указатель на абстрактный 10000ый элемент
надо следующие 100 элементов сделать нулями
при этом надо, чтобы этот вектор на 100000000 никуда не релоцировался, т.к. на него еще овердохуя указателей
эту ссылку я ждал, спасибо)
Реакт нейтив все еще 0.75, может пойдем скажем им чтобы не пользовались? и в доту не играли, которая еще в бете
>У Шарпа сейчас ровно 1 мб у хеллоуворлда с АОТ-компиляцией.
Это прям без вирт машины? То есть автономный, можно переносить?
Да. Компиляция в нативный код, пикрил, кроме winapi ничего не линкует. Для сравнения на втором пике с JIT.
Принудительно выключена рефлексия. Из-за неё на этапе компиляции нельзя понять какой код используется, а какой нет. А без этого понимания нельзя тримить либы, соответственно рефлексия заставляет весь дотнет с собой таскать.
Т.е. все либы без рефлексии работают. Весь не-гуевый дотнет работает. С WPF ещё были проблемы, когда последний раз год назад чекал, из-за XAML, который через рефлексию в IL компилируется.
Из бонусов есть возможность вызывать дотнетовский код из сишки, делать нативные либы с FFI под другие ЯП. И потребление памяти в разы меньше чем в JIT. По скорости никаких изменений.
В целом профитов мало, разве что делать портабельные утилиты или всякие службы, постоянно висящие в фоне.
В любом случае прикольно что они дотнет во все стороны развивают.
Я несколько лет назад писал веб-бота на селениуме, так вот там надо было цепочку действий делать (помимо авторизации) и каждый раз перезапускать и ждать все эти действие было проблемной (буквально вносишь строчку кода чтобы глянуть результат и минутами ждешь имитацию человека в браузере) и тут вижу что дотнет сделал горячую перезагрузку - ппц я тогда кайфанул с этого (и как вовремя для меня они это сделали).
1. Нет (т.к. большая часть того что ты называешь рантаймом - это компайл-тайм)
2. Нахуя?
3. Выкидывай std вообще, дёргай libc напрямую из unsafe, еби гусей https://github.com/johnthagen/min-sized-rust?tab=readme-ov-file#removing-libstd-with-no_std
ембеддед плюется от раста, нахер ты повелся на хайп
При этом этот вектор является полем структуры, которую ебут в хвост и гриву, гоняют туда-сюда, но не удаляют и сам вектор, повторюсь, не трогают. И структуру не клонируют, а ебут через ссылки. Вектору похуй или есть шанс, что он куда-нибудь переедет?
Если ты ничего с ним не делаешь, то ничего не произойдет, очевидно. А зачем тебе указатель на вектор, если ты будешь им пользоваться как иммутабельной ссылкой на слайс?
ковыряю готовое, *mut T были до меня