Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 553 98 124
Rust #32 /rust/ Аноним 16/04/24 Втр 20:01:19 3125439 1
image 4479Кб, 1550x2150
1550x2150
Добро пожаловать в тред гарантий, обещаний, владения, заимствования и тайных знаков

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

Предыдущий >>3060192 (OP)
Аноним 16/04/24 Втр 21:23:16 3125574 2
>>3125439 (OP)
В /пр/ бамплимит 1000, ты запомни на будущее. Сам на этом обжигался.
Аноним 16/04/24 Втр 22:01:16 3125648 3
>>3125574
Угу, а что предыдущий тонет тогда?
Аноним 16/04/24 Втр 22:04:18 3125652 4
>>3125574
Бамплимит давно стал 500.
Аноним 16/04/24 Втр 22:07:53 3125656 5
>>3125652
Пусть тонет, раст не нужен и опасен.
Аноним 16/04/24 Втр 22:09:09 3125658 6
>>3125656
Ты не нужен, гнида. Как бы тебя забанить по подсети.
Аноним 16/04/24 Втр 22:09:44 3125659 7
>>3125656
Посмотрим мы на твоё ебало, когда завершим переписывание линукса на раст.
Аноним 16/04/24 Втр 22:26:34 3125681 8
>>3125658
Но раст правда опасен.

Вот как скриптовый язык - вполне себе ничего, он разрабатывался вебмакакой, его уровень - заменить жс в среде сиси-трансов. Пусть себе играются, пишут скриптики какие-нибудь, JSON парсят. Может какой сервер прикольный напишут, который никто не будет использовать.

Но почему-то крашенные трансы хотят раст в ядро засунуть. К чему это всё? Вызывает вопросы серьёзные.

>>3125659
Никогда. В ядре ничего не написано на расте и не будет написано никогда, даже драйвера.
Аноним 16/04/24 Втр 22:40:39 3125690 9
>>3125681
Причём тут трансы? Пойди подрочи уже, шизик.
Аноним 16/04/24 Втр 22:56:48 3125702 10
>>3125690
В смысле причем трансы? 70% людей кто работает над коре либой раста - трансы. У них там круговая ебля, они всех гетересексуалов двинули из разрабтки ядра. В компиляторе та же проблема, кста.
Аноним 16/04/24 Втр 23:31:37 3125720 11
Аноним 16/04/24 Втр 23:48:40 3125733 12
>>3125720
В ядре этого нет, всё в порядке.

>>3125728
Нет, я не пишу на расте.
Аноним 17/04/24 Срд 05:55:26 3125833 13
есть ли библиотека на раст эксельки шлепать и графики рисовать?
Аноним 17/04/24 Срд 07:38:29 3125851 14
Аноним 17/04/24 Срд 10:36:30 3126032 15
image.png 80Кб, 490x717
490x717
image.png 115Кб, 657x905
657x905
image.png 29Кб, 918x244
918x244
image.png 59Кб, 1685x751
1685x751
Анончики, подскажите пожалуйста. Вот был у меня код как на пикриле 1 и всё было хорошо, но захотелось переделать и сделал как на пикриле 2. Теперь раст говорит "cannot return value referencing temporary value" (пиркилы 3, 4). Я понимаю в чём проблема кода на пикриле 4, но ведь я в пикриле 2 возвращаю ссылку не на что-то что было создано внутри метода, а на часть структуры которая продолжит существовать и после того как метод вернёт значение? Я думал что может быть проблема в том что после того как метод вернёт ссылку кто-то сможет мутировать структуру, вызвав переаллокацию содержимого HashMap и таким образом возвращённая ссылка будет инвалидирована, но ведь борроу чекер не должен позволить мутировать структуру пока существует живая ссылка на её часть...

Я смотрю что ".read().await" возвращает " RwLockReadGuard<'{error}, HashMap<String, Room>>" и, видать, возвращаемая ссылка привязывается не к HashMap которая в структуре лежит, а привязвается к "RwLockReadGuard" и инввалидируется когда этот самый гуард дропается в конце метода. Но это получается что я могу использовать ссылку только пока живой гуард? А как тогда разбить код на два метода как у меня на пикриле 2?
Аноним 17/04/24 Срд 10:44:29 3126043 16
>>3125733
>В ядре этого нет, всё в порядке.
В смысле нет? Вот же я прямо файл скинул.
Аноним 17/04/24 Срд 10:49:33 3126049 17
>>3125733
Так и будешь в грязных ходить получается?
Аноним 17/04/24 Срд 11:15:42 3126097 18
>>3126032
Суть read() в RwLock в том, чтобы заблокировать вызывающий тред, до тех пор пока все писатели не закончат свою работу. После этого уже сколько угодно читателей могут работать с получившимся значением, пока RwLockReadGuard существует. Ты не можешь передать ссылку на его содержимое куда-то ещё, иначе как RwLock сможет выполнять свои гарантии? Т.е. представь что это было бы возможно, ты передал ссылку на внутреннее содержимое, RwLockReadGuard был дропнут и тут в другом треде вызывается write(). Во write() будет проверка, что никаких других читателей и писателей активных нет, поэтому он со смелой душой начнёт менять внутреннее значение. А в первом потоке у тебя ссылка, кровь, кишки, распидарасило.

Хз как лучше тебе сделать, у меня нет должного опыта. Попробуй Room ещё в один Arc обернуть что-ли, лол, и возвращать клон Arc'a.
Аноним 17/04/24 Срд 13:01:21 3126239 19
>>3125702
А в других языках трансов нет? Опомнись. 2024 год на дворе, трансы захватели все айти-сообщества.
> Доёбываешься к расту из-за трансов
> В твоём любимом языке корлибу тоже пишут анальники, а натуралы сидят тихо, не отсвечивают, чтоб не заканселили.
Аноним 17/04/24 Срд 13:48:10 3126284 20
>>3125439 (OP)
Растокуны, сап
Начинаю изучать раст и запнулся на владении

let s1 = String::from("hello");

println!("{}, world!", s1);
println!("{}, world!", s1);

Почему этот код компилируется? Ведь владение строкой передается в первый принтлн. Но он компилируется! Заранее спасибо

Алсо ответ чатгпт

В вашем примере переменная s1 владеет строковым объектом String::from("hello"). Когда s1 передается в функцию println!, она делает это по значению, а не по ссылке. Это означает, что происходит перемещение (move) владения с s1 внутрь функции println!. После этого первый вызов println! забирает владение строки, и переменная s1 больше не может быть использована после этого вызова. Поэтому попытка использовать s1 во втором вызове println! вызовет ошибку компиляции, так как она больше не владеет строкой.

Чтобы позволить s1 использоваться после передачи в println!, можно использовать клонирование строки
Аноним 17/04/24 Срд 14:34:17 3126322 21
>>3126284
Это макрос, который использует built-in'ы компилятора, им насрать на правила языка. Считай, что в нём происходит неявная передача по ссылке, т.е. заимствование.
Аноним 17/04/24 Срд 14:57:09 3126348 22
>>3126322
понял
ответ в макросах, буду читать дальше - пойму
спасибо!

Еще тогда вопрос: а чем собственно владение отличается от деструктора в C++? И там, и там при выходе вызывается магическая функция (дроп или деструктор) при выходе из скоупа. Пока что для себя ответил: компилятор раста не даст в двойное удаление одного значение, но это все или есть еще профити?
Аноним 17/04/24 Срд 15:19:51 3126367 23
>>3126348
Ещё не даст
двойную запись
запись + чтение
в том числе в однопоточном коде, например, когда ты итерируешь по вектору, то в этот вектор нельзя втавлять/изымать элементы.
Аноним 17/04/24 Срд 15:19:56 3126368 24
>>3126348
На мой взгляд принципиальное отличие — это дефолтное действие с данными когда ты их "передаёшь" куда-то (например как аргумент в функцию или банально связываешь с новым именем). В плюсах исторически — это операция копирования. Она инстинктивно предполагается человеком и вполне удобна в большинстве случаев, однако как показала многолетняя практика является источником многих проблем. В современных плюсах появилась move-семантика, но во-первых всё остальное легаси языка никуда не делось, а вместе с ним и поле для ошибок, а во-вторых оно чуть-чуть менее эффективно чем в расте (имхо конечно, я на эту тему спорил пару тредов назад с каким-то растохейтером, если инетересно можешь полистать, там был небольшой разбор стандартной библиотеки плюсов вплоть на дизассемблирования насколько я помню). Сам концепт RAII одинаков, верно.
Аноним 17/04/24 Срд 15:30:18 3126377 25
>>3126367
>двойную запись
>запись + чтение
можно подробнее? не очень понял

>>3126368
так вот что дает эта мув-семантика? Я так понимаю, что мув-семантика необходима для поддержания работы владения (2-ое правило гласит, что данными может владеть только одно значение, не больше). А какие преимущества дает владение перед деструкторами? Для себя выделил только предотвращение от ошибки двойного освобождения
Аноним 17/04/24 Срд 15:56:10 3126398 26
>>3125720
>Драйвер пока только один
Это буквально 1в1 на С, но почему то сишная версия выглядит проще и понятнее.
Аноним 17/04/24 Срд 16:09:32 3126419 27
>>3126377
>А какие преимущества дает владение перед деструкторами?
А какое преимущество у тёплой одеждой перед оранжевой? Это некорректный вопрос. Деструкторы есть в расте, просто необходимо реализовать трейт Drop для своего типа. К схеме владения они не имеют отношения.
Аноним 17/04/24 Срд 16:14:21 3126436 28
>>3126419
Оке, понял ошибку
Тогда так: зачем была введена концепция владения? Какую проблему она решает?
Аноним 17/04/24 Срд 16:15:19 3126439 29
>>3126436
>Какую проблему она решает?
Корректности програм.
Аноним 17/04/24 Срд 16:30:01 3126462 30
>>3126436
>Тогда так: зачем была введена концепция владения? Какую проблему она решает?
Давай так, ты видимо ждёшь что я начну приводить какие-то конкретные примеры, но это означает пересказ всего растбука и растономикона тут. Схема владение влияет очень на многое в дизайне языка. Вот например, вопрос >>3126032. Там компилятор не даёт анону выстрелить себе в ногу.

В целом >>3126439 правильно сказал, но не упомянул одну важную деталь. Это способ проверить на этапе компиляции, что программа корректная. Возможно не единственный, возможно не самый оптимальный или удобный, но оно работает.
Аноним 17/04/24 Срд 16:45:54 3126491 31
Аноним 17/04/24 Срд 16:52:19 3126505 32
>>3126462
А чё там решается, в итоге, корректность время жизни и всё? Выходы за границы это чисто рантайм проверочки в стандартных типах типо слайсов?
Аноним 17/04/24 Срд 17:13:00 3126540 33
>>3126505
Это вопрос в контексте владения или в целом? Видимо в целом, потому что выходы за границы явно не имеют отношения к владению. Хз, мне кажется вторая мощная вещь в расте — это система типов и сопоставление образцов (pattern matching), которые полностью контролируются компиляторм. Ну и в целом отслеживаются какие-то вещи, которые обычно служат источником уязвимостей. Например, был вопрос про println!, в отличие от сишного printf, в нём невозможно организовать атаку некорректной форматной строкой, потому что а) форматная строка обязана быть строковым литералом б) проверка аргументов будет на этапе компиляции.
Аноним 17/04/24 Срд 17:16:14 3126544 34
>>3126540
Конкретно про владение, с помощью этого же решается только задача об определении времени жизни объектов?
Аноним 17/04/24 Срд 17:36:01 3126559 35
>>3126544
Ну да. Тебе как программисту не нужно контролировать время жизни руками либо полагаться на рантайм. Если получилось скомпилировать программу, то оно как-то само всё делается, причём максимально эффективным способом.
Аноним 17/04/24 Срд 19:14:35 3126702 36
>>3126436
> зачем была введена концепция владения? Какую проблему она решает?
Zero cost garbage collector.
Ящитаю.
Аноним 18/04/24 Чтв 00:13:33 3126971 37
>>3126702
Это уровень смарт поинтеров в с++, и они почему-то не считаются зеро кост
Аноним 18/04/24 Чтв 00:43:45 3126980 38
>>3126971
Наверное это потому, что они работают в рантайме, не думал? Впрочем, в расте этого добра тоже навалом да ещё и в нескольких вариациях.
Аноним 18/04/24 Чтв 01:01:14 3126986 39
>>3126980
У вас раст в компайл-тайме освобождает память даже не аллоцировав?
Аноним 18/04/24 Чтв 01:09:33 3126987 40
>>3126980
На куче не может быть zero cost памяти. И в расте всё тоже в рантайме работает. Разница со смарт поитерами только в наличии боров чекера - в крестах ты можешь взять ссылку на смарт-поинтер и проебать объект, по производительности разницы никакой нет.
Аноним 18/04/24 Чтв 01:52:36 3126991 41
>>3126436
В первую очередь проблему несинхронизированного доступа к объекту из двух мест.
Аноним 18/04/24 Чтв 01:55:38 3126992 42
>>3126986
>>3126987
Речь о том, что концепция владения относится не только к умным указателям.

Соре, но пожалуй я больше в этой специальной олимпиаде участвовать не буду. В прошлый раз мне доказывали, что владение и мув это одно и то же. В этот раз, что владение и умные указатели это одно и тоже. Сами вбрасываете, сами и доказывайте.
Аноним 18/04/24 Чтв 02:12:16 3126995 43
>>3126991
тут уже про многопоточку?
Аноним 18/04/24 Чтв 02:14:39 3126996 44
>>3126462
>но это означает пересказ всего растбука
а можешь кратко для примера пару кейсов без расписывания? Мне просто понять направление и масштабность

Читаю растбук и там как бы вся книга - последствия введения концепции владения, а не профиты
Аноним 18/04/24 Чтв 02:16:47 3126997 45
>>3126980
>в расте этого добра тоже
о каком добре ты говоришь, анон?
Аноним 18/04/24 Чтв 09:45:30 3127062 46
unwrap unwrap unsafe unsafe unwrap unwrap unsafe unsafe
Аноним 18/04/24 Чтв 11:31:04 3127194 47
image 411Кб, 1403x1428
1403x1428
>>3126995
Нет, классический пример с итерацией по контейнеру анон уже приводил >>3126367. Есть два места, где мы обращаемся к вектору как к структуре данных — проверка что итератор достиг конца вектора в конце шага цикла и изменение размера контейнера в теле цикла. Получается один читатель и один писатель существуют одновременно. К чему это приводит, сам видишь.

https://ideone.com/zUXA5R
Аноним 18/04/24 Чтв 11:37:25 3127209 48
>>3126997
Про умные указатели. В плюсах это unique_ptr и shared_ptr + weak_ptr. Прямые аналоги в расте это Box и Rc. Почему-то чел выше считает, что они заменяют концепцию владения, я хз почему.
Аноним 18/04/24 Чтв 11:45:55 3127227 49
>>3126996
Концепцию владения нужно рассматривать вместе с другими основными механизмами управления памятью в расте — заимствования и времени жизни, потому что без них программы писать можно конечно, но грустно и не очень эффективно для языка, предназначенного для системного программирования в том числе.
В целом, этим решаются базовые проблемы управления памятью, которые опять же >>3126367 обозначил:
- нулевые или висящие ссылки
- двойное удаление
- пропущенное удаление
- гонки

Тебе похоже непонятно что такое гонка, ну так вот пример с вектором >>3127194 это она и есть.

Это как бы прямые результаты. Но косвенно действительно очень много последствий. Чтобы далеко не ходить за примером посмотри на >>3126032. Я пытался объяснить поведение компилятора в >>3126097. Вкратце, компилятор не дал некорректно воспользоваться структурой данных и сделал это благодаря владению и заимствованию.
Аноним 18/04/24 Чтв 12:54:52 3127317 50
>>3127194
> К чему это приводит
К неумению писать код?
Аноним 18/04/24 Чтв 12:59:48 3127323 51
1707836554805.png 88Кб, 719x1287
719x1287
>>3127194
Откуда вот такие дебилы лезут? Какой код написал, так он и работает.
>>3127227
> Тебе похоже непонятно что такое гонка
Это ты не знаешь базовых понятий. Какая нахуй гонка в однопоточном выполнении.
Аноним 18/04/24 Чтв 13:02:57 3127328 52
>>3127227
>проблемы управления памятью
>гонки
ох бой
Аноним 18/04/24 Чтв 13:06:28 3127332 53
>>3127323
>пикрил
Всегда проигрываю с этих выкрутасов с классиками, нахуя было создавать такой язык? Чтобы не скушно было что ли лол?

Мимо-сишный-байтослесарь
Аноним 18/04/24 Чтв 13:33:46 3127391 54
>>3127209
> Почему-то чел выше считает
> я хз почему
Это латентный педик, который ИТТ "гоняет трансов". Вместо того, чтобы признаться себе в том, что ему нравятся хуйцы. В связи с таким сложным подавлением своих желаний, дурачок объявил войну "пидоrustу" и срёт здесь по КД уже который тред.

Ситуация в общем-то энциклопедичная.
Аноним 18/04/24 Чтв 13:34:59 3127395 55
>>3127317
>К неумению писать код?
>>3127323
>Откуда вот такие дебилы лезут? Какой код написал, так он и работает.
Вот-вот, раст тем и хорош, что не нужно думать обо всех подводных камнях (и высокомерно называть это умением писать код либо переходить на оскорбления). Тебе просто не дают возможности сделать такую и другие подобные ошибки. Я лично люблю когда машина делает за меня рутинную работу.

>>3127323
>Это ты не знаешь базовых понятий. Какая нахуй гонка в однопоточном выполнении.
>>3127328
Что шаблон порвался? Ну назовите это как-то по другому или дополните пример многопоточностью, где ваша фантазия? Писал так, чтобы было понятнее о чём речь. Я если честно принципиальной разницы не вижу. В одном потоке можно даже сдуру дедлок сделать. Суть проблемы не меняется от количества потоков, только сложность отладки.
Аноним 18/04/24 Чтв 13:43:04 3127403 56
>>3127395
>не нужно думать обо всех подводных камнях
В пидорасте тоже полно неявной хуиты как в плюсах, смысл одно говно заметь другим аналогичным говном?
>Ну назовите это как-то по другому
Давай мы тебя не будет мужиком называть, а по-другому.
>Я если честно принципиальной разницы не вижу
Дак ясно всё с тобой, даунёнок.
Аноним 18/04/24 Чтв 13:49:19 3127415 57
>>3127403
>полно неявной хуиты как в плюсах
Вся хуита в расте вылазит на этапе конпеляции, в отличие от.
Аноним 18/04/24 Чтв 13:52:41 3127425 58
Аноним 18/04/24 Чтв 14:09:00 3127458 59
>>3127425
Твоей мамки а она и не против
Аноним 18/04/24 Чтв 14:11:36 3127462 60
>>3127403
>Дак ясно всё с тобой, даунёнок.
Даунёнка ты в зеркале видишь, дегенерат. Пока ты только в лужу пердишь, бросаясь голословными утверждениями.
Аноним 18/04/24 Чтв 14:32:45 3127494 61
>>3127458
>-Вся хуита в расте вылазит на этапе конпеляции, в отличие от.
>-Анус ставишь?
>-РЯЯЯЯ УИИИ
Безопасен снаружи и опасен внутри лол
Аноним 18/04/24 Чтв 14:53:26 3127518 62
А я знаю, что т[...] 63Кб, 553x766
553x766
>>3127403
> пидораст
> мы тебя не будет мужиком называть
>>3127425
> Анус ставишь?
> Анус
> Анус
>>3127403
> пидораст
Аноним 18/04/24 Чтв 15:12:42 3127545 63
>>3127395
> Я лично люблю когда машина делает за меня рутинную работу.
Питонист, ты точно в нужный тред зашёл?
Аноним 18/04/24 Чтв 15:44:40 3127598 64
>>3127227
>Тебе похоже непонятно что такое гонка
это Data races из растбука?
Аноним 18/04/24 Чтв 15:50:38 3127604 65
>>3127227
И да, спасибо за объяснение, анон!
Аноним 18/04/24 Чтв 15:52:21 3127607 66
>>3127395
>В одном потоке можно даже сдуру дедлок сделать
А это как? Можно пример? Правда интересно
Аноним 18/04/24 Чтв 16:01:58 3127618 67
image 625Кб, 1440x1538
1440x1538
>>3127598
Ну я имел в виду именно это, да.
https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html

Кстати, в этой главе авторы не слова не упоминают про многопоточность, хотя это безусловно самая неприятная в отладке ситуация. Местным обитателям потоки видимо кажутся какими-то магическими сущностями наделёнными особыми свойствами. На деле это просто абстракция над CPU, которую обычно реализуют в ядре и оборачивают в виде удобных библиотек для прикладных программистов. Но ничего не мешает тебе самостоятельно сделать подобную абстракцию в своей программе и запускать её на одном ядре. Кроме твердолобости конечно, лол.
Аноним 18/04/24 Чтв 16:24:56 3127646 68
>>3127618
ну вот там я и читал и объяснение Data races еще больше запутало - эту тему можно было как-то больше разжевать, чтоб раскрыть что именно под этим понимается. Там есть намек на многопоточку (similar to a race condition), и это меня смутило (вроде намек есть, а прямых слов нет)
Аноним 18/04/24 Чтв 16:29:36 3127652 69
>>3127618
>>3127646
Алсо смутила фраза "at the same time", что не то же самое как "once at time", что как бы еще больше намекает на многопоточность
Аноним 18/04/24 Чтв 16:47:54 3127672 70
>>3127652
Ты создал строку и начал асинхронную запись в файл типа как здесь: https://learn.microsoft.com/en-us/windows/win32/fileio/synchronous-and-asynchronous-i-o
И не подождав на ивенте решил эту строку затереть. А в это время контроллер твоего SSD читает твою память и записывает какой-то мусор. Вот и получается, что никаких потоков, по крайней мере явно, ты не создаёшь, а гонка есть.

Или ты подписался на какой-то коллбек и забыл отписаться вовремя. А потом этот коллбек триггерится и расхуяривает тебе всю кучу. Код полностью однопоточный и синхронный, но искать ты это будет весь день.
Аноним 18/04/24 Чтв 17:00:00 3127688 71
>>3127618
> потоки
> абстракция над CPU
Угомоните уже этого дегенерата. С каждым разом всё кринжовее и кринжовее выдаёт перлы.
Аноним 18/04/24 Чтв 17:03:07 3127696 72
>>3127646
>>3127652
Слушай, ну если удобнее думать про многопоточность в этом контексте, то так и делай, ничего плохого в этом нет на самом деле. Я сам именно так себе это и представлял, когда читал растбук. Просто когда начинаешь самостоятельно что-то пробовать писать, то приходит осознание, что это относится не только для многопоточности.

>>3127607
Ну вот держи, набросал на скорую руку:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=fc1251d48c7448d92ca1e0b4a0e6d0bd

Раскомментируешь 111 строку, получишь классический дедлок, вызванный неправильным неправильным порядком блокирования ресурсов (они всегда должны блокироваться в одном и томже порядке).

Я хоть и назвал тут всё терминами связанными с многопоточностью для облегчения понимания, но по сути тут в одном нативном потоке обрабатывается две очереди сообщений. При этом сообщения управляют блокировкой некоторых ресурсов. Только не спрашивай меня, зачем в одном нативном потоке обрабатывать две очереди, я с таким в жизни никогда не сталкивался, поэтому и написал "сдуру". Ну можно представить, что какие-то команды поступают с двух разных сокетов, данные с которых поток ожидает через select() если есть его аналог в расте. Наверное это больше на жизнь похоже.
Аноним 18/04/24 Чтв 17:13:08 3127705 73
>>3127688
Что, шаблон продолжает рваться и трещать, дебилушка? Я так-то под эмбед пишу на сях, работал с embOS, сейчас проект на FreeRTOS. Так вот, там нет ни потоков, ни процессов, сюрприз. Вместо них таски. Но почему-то есть параллелизм со всеми своими проблемами. На одноядерном процессоре, кстати.
Аноним 18/04/24 Чтв 17:25:04 3127715 74
Эксплуатировать рейскондишн едва ли не проще чем переполнение буффера, кстати.
Аноним 18/04/24 Чтв 17:35:24 3127723 75
>>3127705
Что ты там абстрагируешь на ЦП, клован. Аппаратные ядра ЦП не имеют вообще никакого отношения к системным потокам.
Аноним 18/04/24 Чтв 17:55:15 3127742 76
>>3127723
> Аппаратные ядра ЦП не имеют вообще никакого отношения к системным потокам.
Ну хоть в чём-то ты со мной согласен.
Аноним 18/04/24 Чтв 22:20:37 3128012 77
>>3127672
>коллбек триггерится
выполняется в отдельном потоке? Обычно же берется поток из пула. Ну то есть для работы в юзерспейсе обязательно нужен поток
Аноним 18/04/24 Чтв 22:36:47 3128027 78
>>3127705
кстати, вроде есть возможность на расте писать под эмбед. Или нет?
Аноним 18/04/24 Чтв 22:46:08 3128030 79
>>3128012
>выполняется в отдельном потоке?

Необязательно. Это может быть ивент луп за двумя слоями абстракций.
Аноним 18/04/24 Чтв 23:03:25 3128036 80
>>3128030
так операционка предоставляет выполнение только в потоке
да и ивент луп оперирует пулом потоков
Аноним 19/04/24 Птн 10:10:59 3128225 81
>>3128027
Да есть конечно. Вот классное видео, если интересно по быстрому глянуть, в котором объясняется как поморгать диодом на голом железе: https://www.youtube.com/watch?v=jZT8APrzvc4
Есть куча проектов всяких RTOS, чтобы не писать всё в одном unsafe: https://arewertosyet.com Мне ещё попадались какие-то коммерческие разработки.
Вообще был в своё время интересный стэнфордский курс CS140e, в котором авторы обучали расту на примере разработки своей ОС: https://cs140e.sergio.bz Видео, кстати похоже писал чувак, проходивший этот курс.
Аноним 19/04/24 Птн 14:03:25 3128599 82
>>3128225
я в мк не очень разбираюсь, но хочу поучить раст, в том числе в будущем и для этого. А ты разбираешься в мк, можно задать пару вопросов?
Аноним 19/04/24 Птн 15:14:39 3128693 83
>>3127672
>И не подождав на ивенте решил эту строку затереть. А в это время контроллер твоего SSD читает твою память и записывает какой-то мусор.
Это не так работает, упрощённо:
1) ты заполнил буфер в ядре своим юзерспейсовым говном, тебе вернули управление
2) ты (твой планировщик) опять сделал системный вызов со своим юзерспейсовым говном, тебе вернули ошибку EAGAIN, потому что буфер в ядре ещё занят предыдущим твоим говном
3) планировщик в ядре вызвал старт драйвера ссд и тот стартовал дма передачу
4) ..
5) тебе вернули управление ..
6) контроллер ссд дёрнул прерывание/дма часть выставила флаг о завершении передачи -> ядро перемещает указатель в буфере (высвобождает часть), на следующем системном вызове твоё говно скопируется в освобождённую часть и процесс повторится
Это всё если ты не используешь какой-нибудь метод эвентов по типу селектов/полл/еполл, в случае с последними всё ещё проще, какая тут может быть гонка?
Аноним 19/04/24 Птн 16:28:54 3128756 84
>>3128693
Во-первых, это никак не следует из доков. Кто мешает запинить память и сразу DMA-шить в буфер юзера? Во-вторых, пусть ты сделал два асинхронных вызова в один и тот же буфер и потом позвал WaitForMultipleObjects, и оба ивента завершились одновременно. 1. Что будет в буфере? 2. Куда скопируется результат, если буфер уже дропнут или переаллоцирован?
Аноним 19/04/24 Птн 16:36:08 3128761 85
>>3128756
>ассинхронный вызов
У тебя один поток/процесс, ассинхронность через неблокирующее ио.
Аноним 19/04/24 Птн 16:45:36 3128768 86
>>3128761
Да, и? Я сделал два неблокирующих чтения в один буфер и стал ждать на ивентах. Получаем гонку в формально однопоточной приложухе. Бинго? То же самое можно получить в какой-нибудь куде.
Аноним 19/04/24 Птн 20:44:18 3129010 87
>>3125439 (OP)
аноны, остановился в изучении на теме "модули" и возник вопрос: а есть ли в природе пример, где модуль приватный? То есть, если есть код в приватном дочернем модуле - он сам не вызовется, значит его надо вызывать из родительского модуля. Но чтобы его вызвать из родительского - надо этот дочерний сделать публичным. Итого: все модули должны быть публичными?
Аноним 19/04/24 Птн 20:50:57 3129016 88
>>3129010
> а есть ли в природе пример, где модуль приватный?
Да, есть пример в астрофизике: чёрная дыра, собсна. Полностью приватна от всей остальной Вселенной. А смысл?
Аноним 19/04/24 Птн 20:56:15 3129019 89
>>3129016
так в том-то и вопрос: а зачем делать модули по умолчанию приватными? Зачем вообще вводить для модулей концепцию приватности/открытости? Чтоб перед каждым модулем писать pub?
Аноним 19/04/24 Птн 20:59:26 3129021 90
>>3129019
В растбуке это поясняется. Я уже не помню, а открывать лень. Давай ты сам откроешь.
Аноним 19/04/24 Птн 22:25:08 3129132 91
>>3129019
Для того чтобы твои юзеры не могли сломать логику твоего крейта, вызывая не те функции не в том порядке.
Аноним 19/04/24 Птн 22:26:56 3129136 92
Аноним 19/04/24 Птн 22:28:24 3129138 93
Есть ли смысл начинать изучать раст, если не планируешь долбиться в жепу?
Аноним 19/04/24 Птн 22:31:44 3129143 94
>>3129138
В свете современных реалий долбиться в жёпу или нет далеко не всегда зависит от твоих планов. Так что, однозначно учить.
Аноним 19/04/24 Птн 23:48:52 3129193 95
>>3128599
А я не очень разбираюсь в программировании на расте под MCU. Вопросы задавать тебе никто не может запретить.
Аноним 20/04/24 Суб 00:44:08 3129234 96
>>3129021
как бы и читаю - вот
>>3129010
>остановился в изучении на теме "модули" и возник вопрос
либо в другой главе (что сомнительно), либо ты не понял мой вопрос
Аноним 20/04/24 Суб 00:44:46 3129236 97
>>3129132
видимо, ты тоже не понял мой вопрос
Аноним 20/04/24 Суб 00:45:19 3129237 98
>>3129136
я только читаю растбук и пока мне это ни о чем не говорит
можно пояснить?
Аноним 20/04/24 Суб 00:56:56 3129248 99
>>3129193
Ты интересуешься растом и мк - этого достаточно
Расскажи в двух словах, если сможешь, что за RTOS такие, для чего они, как использовать. Я пока на интуиции могу сказать, что это такой код, который подключается как библиотека, используется как фреймворк, где ты вкрыпываешь свой код в точки расширения. Сам по себе предоставляет абстракции типа потока, семафороф разных. Компилится с твоим кодом в один бинарь и заливается на мк. Где прав/где фигню нагадал? Чем можешь дополнить? Еще интересует, но предположений нет: поддерживают ли эти оси сон? Ну то есть, если задачи нет - он уходит в сон, чтоб мк потреблял по минимуму или ему приходится все равно поддерживать работу rtos?
Второй вопрос: я могу писать на расте для есп32 (лежит такая, как-то игрался)? Или раст поддерживают только определенные мк? Ну то есть там же разные процессоры, разные архитектуры, под какие архитектуры может компилить раст? Или обязательно еще должна быть инструментальная поддержка пот производителя? Алсо, когда игрался с есп, где-то видел какой-то конфиг с частотами там и все такое. Это как и куда задавать, если писать на расте?
Буду рад, если сможешь ответить хоть на что-то
Аноним 20/04/24 Суб 10:21:47 3129428 100
>>3129234
> ты не понял мой вопрос
>>3129236
> ты тоже не понял мой вопрос
>>3129019
> зачем делать модули по умолчанию приватными?
Внутри одного файла вышестоящий модуль может обращаться к нижестоящему модулю, игнорируя параметры доступа, так что модуль приватен для всех, кроме модуля в том же файле. Не?
Аноним 20/04/24 Суб 12:45:13 3129531 101
>>3129428
>Внутри одного файла вышестоящий модуль может обращаться к нижестоящему модулю
нет же
и файлы вообще не при чем, тут роляет дерево модулей
Аноним 20/04/24 Суб 12:49:09 3129537 102
Аноним 20/04/24 Суб 13:04:03 3129550 103
Аноним 20/04/24 Суб 13:05:47 3129551 104
А можно для растц написать мэйк файл, чтобы не через эту ебалу каргу всё собирать?
Аноним 20/04/24 Суб 13:09:43 3129556 105
>>3129551
Можно. Но все скрипты придётся писать самому, если кто-то еще не заморочился.
Аноним 20/04/24 Суб 14:03:35 3129607 106
>>3129556
>Но все скрипты придётся писать самому
Поджавоскриптованный соевый зумерок-пидорок не палится.
Аноним 20/04/24 Суб 14:15:51 3129621 107
Аноним 20/04/24 Суб 15:21:52 3129696 108
Аноним 20/04/24 Суб 15:24:12 3129697 109
>>3129248
>Где прав/где фигню нагадал?
Всё так.
Аноним 20/04/24 Суб 16:14:37 3129723 110
>>3129248
>Где прав/где фигню нагадал? Чем можешь дополнить?
Да в в целом всё верно. Ещё могу сказать, что обычно вендор железки предоставляет Board Support Package (BSP). Это такой пакет из ОС и драйверов, с примерами. Берёшь какой-нибудь и начинаешь его под свою задачу адаптировать. Но конечно никто не мешает выбросить это всё и сделать руками, если конечно имеется вся необходимая документация.

>Еще интересует, но предположений нет: поддерживают ли эти оси сон? Ну то есть, если задачи нет - он уходит в сон, чтоб мк потреблял по минимуму или ему приходится все равно поддерживать работу rtos?
Да есть конечно. Но ты сам явно указываешь когда уйти в состояние сна. При этом нужно не забыть самому усыпить всю периферию ну и сделать какие-то действия, которые требуются в твоей конкретной системе (таски там засаспендить например, или обнулить какой-нибудь контекст).

>я могу писать на расте для есп32
да
>Ну то есть там же разные процессоры, разные архитектуры, под какие архитектуры может компилить раст?
https://doc.rust-lang.org/rustc/platform-support.html
>Алсо, когда игрался с есп, где-то видел какой-то конфиг с частотами там и все такое. Это как и куда задавать, если писать на расте?
Хз что за конфиг ты имеешь в виду. Если не с нуля писать будешь, то думаю найдёшь аналоги. Если с нуля, то читать документацию по железу.
Аноним 20/04/24 Суб 16:58:11 3129756 111
>>3129723
Спасибо, анон!
Но еще пара вопросов осталась
>Это такой пакет из ОС и драйверов
Драйверов? А что за драйвера и что они делают?
>указываешь когда уйти в состояние сна
А что для этого надо? Дергать код, который в референс мануалах к платам или ос предоставляет какуют-то абстракцию? И да, что происходит после пробуждения? Типа рестарт и запуск по новой или пытается восстановить контекст и продолжить работу с места, который останвился? Если второе, то кто за это отвечает: мк, ос?

>https://doc.rust-lang.org/rustc/platform-support.html
ох ты ж огромное тебе спасибо - тут надо курить, но есть откуда копать!
Аноним 21/04/24 Вск 14:57:08 3130627 112
>>3129756
Один только совет, не стоит на расте писать фирмвари, раст не для этого всё-таки.
Аноним 21/04/24 Вск 15:25:23 3130654 113
>>3130627
>не стоит на расте писать
Слова не мальчика, но мужа.

Алсо, на линкедине сейчас микрософт безуспешно ищет челов со знанием раста и опытом в гипервизорах. Все успели податься?
Аноним 21/04/24 Вск 20:37:05 3131005 114
>>3130627
Почему? Разве это не системный язык?
Аноним 21/04/24 Вск 20:49:43 3131023 115
>>3130627
>не стоит на расте писать фирмвари
>системный язык
ну вот все и встало на свои места, очередная джава/сисярп
Аноним 21/04/24 Вск 21:13:59 3131084 116
Как же я заебался. Я просто хочу передать референс на синглтон в ансихронный tokio::spawn блок. Но говнине это очевидно не нравится (unsafe не помогает), и похоже единственный вариант пофиксить это через Мьютекс. Но есть одно но, синглтон делает веб запросы и при любом локе застревает на секунду, а то и больше. Трейта Copy у объекта нет, async move посылает меня нахуй, я просто не знаю что мне делать
Аноним 21/04/24 Вск 21:17:52 3131090 117
>>3131084
>я просто не знаю что мне делать
писать на джаве и не выебываться
там таких проблем нет
Аноним 21/04/24 Вск 21:26:51 3131095 118
>>3129756
>Драйверов? А что за драйвера и что они делают?
Мммм, драйвер — это код, управляющий каким-нибудь периферийным устройством.
>А что для этого надо? Дергать код, который в референс мануалах к платам или ос предоставляет какуют-то абстракцию?
Вручную — это когда ты пишешь всякие значения в разные управляющие регистры процессора и других подключенных устройств. Но обычно есть какой-то HAL (hardware abstraction layer), собственно набор тех самых драйверов, который идёт в составе того самого BSP и там уже всё это написано для тебя. ОС не предоставляют таких интерфейсов. Как ты говорил, это скорее фреймворк для построения прошивки.
>И да, что происходит после пробуждения? Типа рестарт и запуск по новой или пытается восстановить контекст и продолжить работу с места, который останвился? Если второе, то кто за это отвечает: мк, ос?
Да как сам напишешь, так и будет. Только выключение/включение с восстановлением контекста называется гибернацией, а сон — это перевод процессора и периферии в энергосберегающий режим, из которого они выходят по таймауту или по какому-нибудь сигналу. Работа прошивки в таком случае не прекращается, очевидно.
Аноним 21/04/24 Вск 21:32:45 3131099 119
>>3131084
>Но есть одно но, синглтон делает веб запросы и при любом локе застревает на секунду, а то и больше.
Не понял, а чего ты хочешь? Чтобы можно было из разных потоков его дёргать одновременно и играть в русскую рулетку, когда эта конструкция развалится?
Аноним 21/04/24 Вск 21:33:01 3131100 120
>>3131084
RwLock юзай вместо мудикса.
Аноним 21/04/24 Вск 21:35:41 3131106 121
>>3131084
Ну если тебе мутировать объект не нужно то мб RwLock вместо мутекса взять? Сколько угодно читателей можно будет иметь одновременно. Ну или ещё может как вариант во время когда ты держишь лок просто дать команду синглтону чето сделать (послать запрос) и дать ему колбек который дёрнуть когда будет ответ и сразу по фасту съебаться из критической секции и снять лок. Или ещё может не давтать колбек а давать команду синглтону сделать запрос и обновить своё внутренне состояние когда будет готово и после отдачи команды снимать лока и на вызывающей стороне изредка поллить синглтон на предмет готовности результата, ну либо может не поллить а сделать через кондвар какой-нить - типа вызывающий код блокируется на кондваре а синглтон обновляет кондвар когда ответ готов
Аноним 21/04/24 Вск 21:45:35 3131112 122
>>3131084
Вдогонку

>передать референс в ансихронный tokio::spawn блок
Ясен хуй не нравится, это recipe for disaster потому что хуй знает будет ли твой референс валиден когда его величество асинхронный рантайм соизволит начать выполнять таску. В std::thread есть скоупед потоки для этого, а в токио хз. Как ты это ансейфом решать хотел? Делать сырой указатель из референса? Ну так проблема никуда не девается если ты не на 100% уверен что он будет валиден когда будешь его разименовывать его
Аноним 21/04/24 Вск 22:24:23 3131135 123
>>3131084
Раз это синглтон, не проще мувнуть его в отдельный тред, а запросы через каналы mpsc буферизированные посылать? Где-то видел такие, которые и в синк и асинк могут одновременно.
Аноним 21/04/24 Вск 22:25:18 3131138 124
>>3131095
>есть какой-то HAL
Он для каждой борды свой? То есть не универсальный, а производитель создает свой со своим набором АПИ?

>>3131095
>Да как сам напишешь, так и будет
А по умолчанию? Ну вот я ввел в сон, потом таймер стригернул - что дальше? Что делает мк? Какие инструкции, с какого месте?

>>3131095
>Работа прошивки в таком случае не прекращается
А что ты под этим имеешь в виду? Что все контексты сохранены, что все выполняется? Просто я читал про разные виды сна когда-то по-диагонали, и там процессор чуть ли не выключался, в работе оставался таймер. То есть ты хочешь сказать, что при пробуждении по таймеру, например, автоматически платой в кэш загрузится все то, что было до сна, стэки тоже и процессор просто продолжит оттуда, откуда остановился? Не очень понимаю как это в коде выглядит... Он продолжит выполнять все то, что идем после вызова sleep()?
Аноним 21/04/24 Вск 23:09:21 3131171 125
>>3131135
Если честно не знаю как это должно работать, потому что запрос у меня блокирует поток пока не резолвнется. Поэтому и раскидал параллельные запросы по потокам. Сделал через RwLock как тут советовали, в принципе нормально, спасибо анонам
Аноним 22/04/24 Пнд 00:04:10 3131186 126
image.png 296Кб, 952x760
952x760
Коллеги, жизненно?
Аноним 22/04/24 Пнд 01:17:40 3131200 127
>>3131186
Пост писал трансфоб
Аноним 22/04/24 Пнд 11:09:33 3131397 128
Аноним 22/04/24 Пнд 13:11:19 3131591 129
>>3131186
Бери токио и не еби мозги
Аноним 22/04/24 Пнд 13:44:34 3131628 130
>>3131084
>>3131397
Вообще считаю синглтон антипаттерном.
Аноним 22/04/24 Пнд 14:41:21 3131713 131
>>3131186
>try_get()::unwrap()
Теперь это не РЯЯ_АНСЕЙФ язык а UNWRAP()::UNWRAP().
Аноним 22/04/24 Пнд 14:42:48 3131716 132
>>3131186
>sleep
>spin_lock
Мне вот интересно, чем думал Линус пуская этих вредителей в ядро.
Аноним 22/04/24 Пнд 14:57:09 3131749 133
>>3131716
Шиз спок, это не стандартная либа а рандомная хуитка с крейтс.ио
Аноним 22/04/24 Пнд 18:16:51 3132029 134
Аноним 22/04/24 Пнд 18:38:03 3132057 135
>>3132029
Ты неправильно шутишь, лучше так:

- Причина паники?
- ".unwrap()"
Аноним 22/04/24 Пнд 18:46:41 3132072 136
>>3131397
У меня в целом похоже, но вместо Box у меня Arc::new(RwLock::new(worker))
Аноним 22/04/24 Пнд 20:41:30 3132215 137
Аноним 22/04/24 Пнд 23:40:08 3132343 138
>>3132215
>Причина гонки?
Лучший.
Аноним 23/04/24 Втр 01:51:40 3132407 139
>>3131138
>Он для каждой борды свой? То есть не универсальный, а производитель создает свой со своим набором АПИ?
Да есть конечно попытки сделать что-то универсальное. Но лично я отношусь к этому как кроссплатформенной разработке десктопных приложений. Прекрасная утопия. Для несложных проектов наверное применимо, но как только что-то посложнее делаешь, то приходится жрать, что китайцы дают в проприетарном виде без доков...
>А по умолчанию? Ну вот я ввел в сон, потом таймер стригернул - что дальше? Что делает мк? Какие инструкции, с какого месте?
Ну вот следующую инструкцию и продолжит делать, после обработки прерывания, которое пробудило устройство. Но от железки зависит конечно в первую очередь, сложно говорить за все. Возможно может потребоваться нетривиальное восстановление контекста, которое слишком долго делать в обработчике прерывания.
>Просто я читал про разные виды сна когда-то по-диагонали, и там процессор чуть ли не выключался, в работе оставался таймер.
Это действительно так. В популярном кортексе например их парочка и вендоры ещё бывают свои добавляют. Чем экономичнее режим тем меньше он отличается от полного выключения.
>То есть ты хочешь сказать, что при пробуждении по таймеру, например, автоматически платой в кэш загрузится все то, что было до сна, стэки тоже и процессор просто продолжит оттуда, откуда остановился?
Как писал, зависит от режима и железа. Если говорить про тот же кортекс, то обычно ничего там никуда во сне не девается. Т.е. оперативка хранит содержимое, регистры тоже. Обработали прерывание и вперёд, дальше молотить.

Вообще, я если честно слабовато эту тему знаю. Сейчас порылся по коду проекта, над которым сейчас работаю, так там WFI (инструкция, которая переводит в режим сна) есть и в HALе и в ядре RTOS. Напиздел я получается, насчёт того что в ОС не бывает. Я правда глубоко не стал лезть, используется ли у нас где-то сон из FreeRTOS. Возможно там разница как раз в выборе режима, типа FreeRTOS переводит проц в обычный sleep при необходимости, например, когда все таски заблокированы. Deep sleep из HALа точно ручками дёргаем.
Аноним 23/04/24 Втр 03:44:58 3132418 140
>>3132407
Понял, спасибо тебе, анон
А проект на расте или ты просто растолюбитель?
Аноним 23/04/24 Втр 03:52:04 3132421 141
>>3125439 (OP)
Аноны, сейчас очень сонный, возможно пишу бредовый вопрос, но изучая раст, тестил разный свой код, проверял идейки и нагенерил вот это: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=807d460d9c7a5d3d94f3bd43449927ed
Объясните мне, плз: правильно ли я понимаю, что тут одной строкой владеют два объекта? Интуиция подсказывает, что такого быть не может, так как по правилам владения раста владеть объектом может кто-то один, но я тут вижу одну строку и ДВЕ переменные b, которые владеют одной строкой
Помогите решить внутренний спор
Аноним 23/04/24 Втр 04:21:49 3132426 142
Аноним 23/04/24 Втр 11:59:13 3132661 143
>>3132418
Основной проект на С, но есть небольшие сопровождающие разработки на расте (не под микроконтроллеры). Сам раст ковыряю для общего развития пока, очень интересный и кайфовый язык.

>>3132421
>>3132426
Вкину свои 5 копеек, вдруг кому-то другому будет интересно. В расте есть механизм pattern matching, который тут применяется. Довольно мощная штука, которая используется не только в ветках match, а по сути при любом объявлении переменной. Она позволяет деструктуризацию образца. При этом владение данными передаётся по общим правилам раста, для чего используются ключевые слова ref и mut, например:

if let Foo(bar) = foo {... // <- передача владением
if let Foo(ref bar) = foo {... // <- заимствование по неизменяемой ссылке
if let Foo(ref mut bar) = foo {... // <- заимствование по изменяемой ссылке

Для удобства, если образец, который ты сопоставляешь, сам является ссылкой, то и связывание происходит по ссылке:
https://doc.rust-lang.org/reference/patterns.html#binding-modes

Таким образом в первом match у тебя a связывается по ссылке, как и b и таких алиасов может быть в данном случае сколько угодно. А во втором match уже происходит передача владения значением сначала в a, а потом в b.
Аноним 24/04/24 Срд 19:49:58 3134234 144
Раст хвастались своей безопасностью, а оказалось, что все программы для Windows, написанные на расте, содержат критический баг.
Аноним 24/04/24 Срд 20:13:41 3134268 145
>>3134234
> содержат критический баг
Ржавчину?
Аноним 24/04/24 Срд 21:07:32 3134297 146
17045791342250.jpg 196Кб, 686x686
686x686
> The vulnerability, which carries a perfect 10-out-of-10 CVSS severity score, is tracked as CVE-2024-24576. It affects the Rust standard library, which was found to be improperly escaping arguments when invoking batch files on Windows using the library's Command API – specifically, std::process::Command.
Сперма.
Аноним 24/04/24 Срд 21:20:06 3134311 147
>>3134297
> критический баг в std
Никогда такого не было и вот опять. Прям чувствую безопасность.
> improperly escaping arguments
Там вообще ебучий цирк с конями в std под виндой, как будто студенты писали. Например тот же принт, конвертирующий два раза строку из utf-8 в utf-16, вместо вызова SetConsoleCP. Это сразу было понятно, что снизив уровень входа с помощью "безопасности", пришедшие питонисты начнут писать такое забагованное говно, что нейросети позавидуют.
Аноним 24/04/24 Срд 22:36:37 3134387 148
>>3132661
Спасибо.
Я об этом в растбуке читал, но вдруг кто-то не читал.
Аноним 25/04/24 Чтв 00:10:00 3134453 149
>>3134311
>растоделы набажили в стандартной библиотеке
>чертовы питонисты
Аноним 25/04/24 Чтв 09:37:05 3134687 150
>>3134311
>Например тот же принт, конвертирующий два раза строку из utf-8 в utf-16, вместо вызова SetConsoleCP

В API винды поддержка utf8 появилась примерно вчера, и работает через жопу.
Аноним 25/04/24 Чтв 11:20:51 3134799 151
>>3134687
> В API винды поддержка utf8 появилась примерно вчера
XP вчера появился? Ну ладно. CP65001 в консольке как минимум с Висты работает, в XP он тоже был, но я не возьмусь утверждать что cmd.exe корректно шрифты рендерил.
> работает через жопу
Если речь про вывод в консольку, то он работает как часы, никаких проблем нет. Проблемы могут быть только если ты при включенном CP65001 станешь выводить UTF-16 туда.
Претензия к реализации раста в том что у него всё к UTF-8 прибито гвоздями. То что он в рантайме каждую строку конвертит - это пиздец костыли. Я ещё понял бы если он поддерживал UTF-16 строки и можно было бы без конверсии их использовать, но ведь нет.
Аноним 25/04/24 Чтв 11:56:37 3134819 152
Аноним 25/04/24 Чтв 12:05:58 3134835 153
>>3134799
https://learn.microsoft.com/ru-ru/windows/apps/design/globalizing/use-utf8-code-page

Чтобы винда правильно поняла твою кодировку, нужно указать параметр в какой-то ебать её в сраку эксемельке. То есть, если приложение линкуешь не ты, а просто передаёшь свою либу, то может оказаться, что там настроен какой-нибудь EBCDIC, а твой текст выглядит как даэдрические письмена. И даже не весь WinAPI умеет с этим работать, и иногда всё-равно придется мудиться с этим преобразованием.
Аноним 25/04/24 Чтв 12:20:34 3134848 154
Как уменьшить размер бинарника с 500Кб до 16Кб?
Аноним 25/04/24 Чтв 12:21:35 3134849 155
>>3134819
И куда ты её деть сможешь? Даже принт не примет её. И она всё так же в рантайме работает, конвертируя строки в UTF-8.
>>3134835
> указать параметр в какой-то ебать её в сраку эксемельке
Чел, у тебя документация от WindowsApps, очнись. Это никакого отношения к WinAPI не имеет. Ты бы ещё UWP притащил сюда.
> То есть
То есть ты бредишь, одним вызовом функции консолька переводится в нужную кодировку. Вот правильное место в документации:
https://learn.microsoft.com/en-us/windows/win32/intl/unicode
> И даже не весь WinAPI умеет с этим работать
Ему строго поебать как и чем строка закодирована. Передашь UTF-8 - он будет с UTF-8 работать. Для WinAPI строка это просто указатель на чар.
> придется мудиться с этим преобразованием
Только если в UTF-16 строка. Чем собственно в расте и занимаются, когда можно было не делать этого.
Аноним 25/04/24 Чтв 13:18:21 3134927 156
image 271Кб, 640x640
640x640
Аноним 25/04/24 Чтв 13:40:49 3134951 157
>>3134848
Пиши на языке, который ближе к железу.
Аноним 25/04/24 Чтв 13:50:28 3134958 158
16820248503090.mp4 10001Кб, 352x640, 00:00:21
352x640
>>3134848
UPX здесь не поможет
Аноним 25/04/24 Чтв 14:08:36 3134966 159
>>3134849
>Чел, у тебя документация от WindowsApps, очнись. Это никакого отношения к WinAPI не имеет. Ты бы ещё UWP притащил сюда.

У WindowsApps какое-то отдельное WinAPI?

>То есть ты бредишь, одним вызовом функции консолька переводится в нужную кодировку

А когда вызывать эту функцию? Ты закинул DLL'ку в папку и она каждый раз, когда хочет что-то высрать, твою консоль перенастраивает?

>Для WinAPI строка это просто указатель на чар.
Ну здрасьте приехали. И зачем тогда каждый вызов дублируется с суффиксом A и W, зачем нужны локали, чем Windows-1251 отличается от CP-866?
Аноним 25/04/24 Чтв 14:24:58 3134969 160
>>3134966
> У WindowsApps какое-то отдельное WinAPI?
Это вообще совершенно разные вещи. WindowsApps - это свежее крестовое API из 11 винды.
> И зачем тогда каждый вызов дублируется с суффиксом A и W
Затем что в винде есть UTF-16 и всё остальное, сделано для совместимости с однобайтным легаси времён начала нулевых. Всё остальное под А, работает в заданной кодировке, если кодировка указана как UTF-8, то оно и будет.
Аноним 25/04/24 Чтв 15:27:16 3135030 161
>>3134969
>Это вообще совершенно разные вещи. WindowsApps - это свежее крестовое API из 11 винды.

И зачем в описании для 11 винды упоминается какой-то левый апдейт для 10? Может потому что это на самом деле обертка над winapi?

>Всё остальное под А, работает в заданной кодировке, если кодировка указана как UTF-8, то оно и будет.

Иными словами, UTF16 - всё также остаётся основной кодировкой, а UTF8 - это бедный родственник, который зависит от глобального состояния или манифестов, которые хер знает кто выставляет и может поменять в любой момент. Я прямо уверен, что винда делает такую же конвертацию, что std Раста.
Аноним 25/04/24 Чтв 15:45:24 3135046 162
>>3135030
> Может потому что это на самом деле обертка над winapi?
Нет. Это уже то, на чём встроенный виндовый софт пишется в 11 винде, там WinAPI не используется вообще, это легаси.
> Иными словами
Иными словами ты нихуя не понял.
> UTF8 - это бедный родственник, который зависит от глобального состояния или манифестов
Глобальное окружение и манифесты - это каким будет дефолт. Контроль за кодировками у софта.
> Я прямо уверен, что винда делает такую же конвертацию
Чел, я тебе даже кидал ссылку из документации WinAPI, там нативная поддержка UTF-8. Алсо, виндовый терминал который в 11 винде по умолчанию в WSL окружении переключает вывод в UTF-8 и оставляет линуксовый выхлоп как есть, а не занимается хуитой как растаны с конверсией в UTF-16.
Аноним 25/04/24 Чтв 15:52:25 3135051 163
У меня вопрос, если всех заебал сишный УБ, хочется писать действительно надёжный софт, хули вы побежали на дырявый раст для пидоров, а не выбрали мужскую Аду? Трансовики, оправдывайтесь.
Аноним 25/04/24 Чтв 16:35:22 3135115 164
Screenshot20240[...].png 367Кб, 1440x3120
1440x3120
>>3135051
>а не выбрали мужскую Аду?
Это говно уже окаменело.
Аноним 25/04/24 Чтв 16:37:25 3135120 165
>>3135115
Один абзац текста и 5 абзацев предупреждений. Я такое говно только в консультант+ видел: параграф ХХХ утратил силу.
Аноним 25/04/24 Чтв 16:46:38 3135140 166
>Это говно уже окаменело.
>Один абзац текста и 5 абзацев предупреждений. Я такое говно только в консультант+ видел
Какие же пидорасты долбоёбы пиздец. Бегом писать прошивки для баттплаг.ио.
Аноним 25/04/24 Чтв 17:14:12 3135201 167
Аноним 25/04/24 Чтв 17:26:49 3135219 168
>>3135140
Пукнул и слился. Ясно.
мимо мейнтейнер баттплаг.ио
Аноним 25/04/24 Чтв 18:41:55 3135301 169
>>3135046
> Нет. Это уже то, на чём встроенный виндовый софт пишется в 11 винде, там WinAPI не используется вообще, это легаси.
Зуб даёшь? Я ведь сейчас в репу залезу и проверю как они винапи не юзают.
Аноним 25/04/24 Чтв 19:31:40 3135380 170
1684262401757.png 254Кб, 1972x1732
1972x1732
>>3135301
Ну давай. Пикрилейтед в самом SDK, WinAPI там используют только для разработки - в юнит-тестах и при логировании, на случай когда что-то отъебнёт. В сорсах естественно оригинальное WinAPI не трогают, частично оно переписано на крестах для обратной совместимости. Ну и там белым по чёрному написано - первым делом удаляйте все хедеры и либы WinAPI и заменяйте на WindowsApps.
Аноним 26/04/24 Птн 15:12:50 3136051 171
image 45Кб, 1041x889
1041x889
>>3135051
Навернул я этого говна, спасибо. Помимо того, что дока бедная, а от иде там только название, эта самая Ада нечеловечески неудобна. Похоже, что при её создании применялась та же парадигма, что и в жабе: "искуственно переусложнено - значит безопасно". И ты ж, сука, зацени иронию:
☑ вызвать функцию игнорируя возврат - ошибка
◻ харкнуть иксепшон в любом месте и забить на перехват - пожалуйста
◻ нормального Result - нет
◻ хочешь, чтобы твоя память освобождалась сама? - изволь использовать Finalization

У меня была идея использовать аду в алготрейдинге громко звучит только из-за её интервальных типов, которые там то, что доктор прописал. Но без нормального Result - хз, скорее всего забью. Единственный Result, который там можно сделать - тупо контейнер без map и прочего сахара, так как с дженериками там всё очень хуёво, анонимных функций тоже нет.
Аноним 26/04/24 Птн 16:03:10 3136088 172
Аноним 26/04/24 Птн 16:17:09 3136106 173
>>3136051
>вызвать функцию игнорируя возврат - ошибка
Это заебись, так и надо делать, вспомни ещё в Си базовый флаг флаг -Werror.
>харкнуть иксепшон в любом месте и забить на перехват - пожалуйста
Ты просто не понимаешь сути эксепшенов.
>хочешь, чтобы твоя память освобождалась сама? - изволь использовать Finalization
Обычный базовый язык, в спарке вообще куч нет (хотя в новом вроде завезли).
Аноним 26/04/24 Птн 16:44:20 3136152 174
image 4Кб, 313x158
313x158
image 3Кб, 481x43
481x43
>>3136106
>Ты просто не понимаешь сути эксепшенов.
В Аде смузихлёбский подход а-ля котлин, в той же джаве с ними и то построже. Один хрен, я бы продпочёл Result, но его нет.

>>3136088
>Что за IDE?
gnat studio
Говнецо ещё то, но базовые вещи делает. Написано на самой аде + дохрена питона. Чсх, у них есть коммерческая версия под раст. В поставке appimage постоянно чего-то не хватает, вот, например, оно пытается позвать внешнюю утилиту и не может.
Аноним 27/04/24 Суб 12:14:06 3136940 175
Так, ну и почему у вас бинарники большие? Сборки мумора в рантайме нет, бибнумы и джит отсутствуют. Шо там, копирование инлайном 1000 раз?
Аноним 27/04/24 Суб 12:17:03 3136942 176
>>3136940
Там стд, всегда с собой носит всё говно.
Аноним 27/04/24 Суб 12:34:09 3136979 177
16977255373760.jpg 48Кб, 309x416
309x416
>>3136942
Символ не надо линковать, если он не нужен.
Аноним 27/04/24 Суб 12:35:28 3136981 178
>>3136979
Твоего мнения никто не спрашивал. Линкуют потому что могут. И хули ты сделаешь им?
Аноним 27/04/24 Суб 12:38:51 3136989 179
Аноним 27/04/24 Суб 16:22:58 3137190 180
В каком редакторе можно писать код на расте? Пробовал вс код - не понравилось. Официальный плагин написан через жопу, постоянно отваливается, глючит. Видимо не случайно там сделана кнопка "перезапустить". Ни для одного языка не видел более убогого плагина.
Аноним 27/04/24 Суб 16:27:55 3137192 181
Аноним 27/04/24 Суб 16:31:43 3137194 182
idea-rust.jpg 16Кб, 421x192
421x192
>>3137192
А бесплатные варианты есть?
Аноним 27/04/24 Суб 16:39:22 3137199 183
image 412Кб, 1728x1708
1728x1708
>>3136979
Это поведение по умолчанию наверное для какого угодно компилятора.
Аноним 27/04/24 Суб 17:06:55 3137214 184
>>3137199
Оптимизации включать пробовал? В крестах такого говна нет. Даже в винде если захотеть весь vcruntime статически прилинковать например чтоб на XP запускать, то будет всего 130 кб весить бинарник. По умолчанию там 10 кб бинарники, вц-рантайм в системе всегда уже есть, если 10+ винда. В расте же 350+ кб всегда.
Аноним 27/04/24 Суб 17:11:08 3137218 185
> Disclaimer: This post is a very long collection of thoughts and problems I've had over the years, and also addresses some of the arguments I've been repeatedly told. This post expresses my opinion the has been formed over using Rust for gamedev for many thousands of hours over many years, and multiple finished games. This isn't meant to brag or indicate success, but rather just show there has been more than enough effort put into Rust, to dispel the the commonly said "once you gain enough experience it'll all make sense" argument.
https://loglog.games/blog/leaving-rust-gamedev/
Аноним 27/04/24 Суб 17:17:08 3137222 186
Аноним 27/04/24 Суб 17:18:10 3137224 187
image 208Кб, 1424x1246
1424x1246
>>3137214
>В расте же 350+ кб всегда.
Это ложь.

Про манёвры с оптимизацией я промолчу, раст тоже можно до усрачки оптимизировать. Моё сообщение было о другом. Для тех кто не понял — напишу более подробно: LTO нигде по умолчанию не включён и все символы всегда попадают в бинарник. Это так-то нефига не тривиальная задача, исключить ненужные.
Аноним 27/04/24 Суб 17:30:21 3137229 188
Аноним 27/04/24 Суб 17:41:52 3137230 189
Аноним 27/04/24 Суб 17:49:10 3137237 190
>>3137224
> Это ложь.
А теперь попробуй сделать это же под виндой. Раст же вроде безопасный, но по факту он либо выдаст ошибку компиляции, либо скомпилит нерабочий бинарник. И то что у тебя где-то в системе лежит динамическая либа делает ещё хуже, ведь твой собранный файл не портабельный.
> LTO нигде по умолчанию не включён
Зато он почти везде включен при оптимизациях. Но в расте хоть включай, хоть выключай - всё равно насрёт в бинарник или надо таскать с собой либы.
> Это так-то нефига не тривиальная задача, исключить ненужные.
Даже в дотнете с этим справились, кода пилили AOT-компиляцию в нативный код. А ведь там даже есть рантайм-рефлексия.
Аноним 27/04/24 Суб 18:03:20 3137242 191
>>3137230
Голанг - это издевательство над людми?
Аноним 27/04/24 Суб 18:10:12 3137245 192
Аноним 27/04/24 Суб 18:10:27 3137246 193
>>3137222
>>3137229
Я слышал, что есть какая-то новая иде для раста, но она вышла только на макоси, но обещают сделать и для остальных.
Аноним 27/04/24 Суб 18:11:54 3137247 194
>>3137218
>does what it's supposed to while keeping its codebase readable, the last point being quite rare in the Rust ecosystem
))
Аноним 27/04/24 Суб 18:17:06 3137251 195
>>3137237
>Зато он почти везде включен при оптимизациях.
Ложь.
>Но в расте хоть включай, хоть выключай - всё равно насрёт в бинарник или надо таскать с собой либы.
Чем насрёт-то?

Остальной оффтопик в виде дотнета, винды и прочих майкрософтовых поделок обсуждать не могу — не пользуюсь их продуктами уже лет 15, кроме гитхаба (увы). Наверное, там действительно всё плохо хотя казалось бы куда ещё...
Аноним 27/04/24 Суб 18:24:34 3137259 196
>>3137199
> по умолчанию
> -static
Старайся лучше.
Аноним 27/04/24 Суб 18:26:56 3137260 197
>>3137242
Я не ГОвнарь, может там как-то по другому это реализовано. Но вон в конце прошлого года Андрюха выкатил костыль в виде автоформатирования с чисткой от неиспользуемых переменных. Челы всё правильно пишут про жопную боль когда хуяк-хуяк делаешь, а автоформат не ослабляет жопную боль, только создаёт потенциальные баги. Вот ты условно в поисках багов жонглируешь переменными, некоторые из которых неиспользуемые, а где гарантия что используемая в данный момент - это то что должно быть по задумке? Автоформат стёр их и всё, код допустим не твой, там может что-то сломано и никто не узнает об этом до появления проблем. В любом нормальном ЯП тебе будут идти варнинги и ты всегда будешь знать что вот там какой-то пердолинг происходил и с ним надо будет разобраться руками.
Отдельно проиграл с пердоли, предлагающего искать в сорсах подчёркивания регулярками.
Аноним 27/04/24 Суб 18:28:44 3137265 198
1562706434521.mp4 2674Кб, 480x360, 00:00:16
480x360
>>3137251
> кроме пердоликса ничего не нужно
Сразу бы с этого начинал.
Аноним 27/04/24 Суб 18:30:48 3137268 199
>>3137199
Ты не старался понять мысль. Это ответ на утверждение, что якобы символы не линкуются если они не нужны. Ты можешь и с динамической линковкой собрать, там не так впечатляюще будет "насрато" конечно, но всё равно будет куча "лишних" символов почему-то.
Аноним 27/04/24 Суб 18:31:16 3137269 200
Аноним 27/04/24 Суб 18:32:03 3137272 201
>>3137265
Рад, что ты со мной согласен.
Аноним 27/04/24 Суб 18:47:12 3137287 202
>>3137268
Так тебе вроде сказали, что с -O3 там не будет этого мусора. А то в одном месте без оптимизаций, а в другом --release с какими-то ключами.
Аноним 27/04/24 Суб 18:54:56 3137296 203
image 199Кб, 1424x1246
1424x1246
>>3137287
>Так тебе вроде сказали, что с -O3 там не будет этого мусора. А то в одном месте без оптимизаций, а в другом --release с какими-то ключами.
Анус ставишь? То что мне сказали свидетельствует только о непонимании говорящих о том что такое -O3, --release, LTO, динамическая и статическая линковка. Да вы вообще не понимаете как линкер работает, лол. Зато радостно цепляетесь за различия в дефолтных настройках компилятора.
Аноним 27/04/24 Суб 18:59:07 3137298 204
>>3137296
> Да вы вообще не понимаете как линкер работает, лол.
Это ты не понимаешь, ведь unused_fn у тебя используется.
> Зато радостно цепляетесь за различия в дефолтных настройках компилятора.
Так ты покажи что будет по дефолту в расте, не стесняйся. А то сначала про дефолт речь шла, а как до раста дошли так сборка с ключами.
Аноним 27/04/24 Суб 19:08:53 3137307 205
>>3137296
Чел, в сишке нет модулей и все глобальные функции экспортируются. Ты можешь их динамически импортировать в другом бинарнике, как будто это либа, а не исполняемый файл. Поэтому у тебя нет неиспользуемых функций. А вот если бы ты на крестах с модулями написал, то там без явного указания необходимости экспортировать компилятор удалил бы всё это. Учи базу.
Аноним 27/04/24 Суб 19:09:50 3137308 206
image 224Кб, 1424x1246
1424x1246
>>3137298
>Это ты не понимаешь, ведь unused_fn у тебя используется.
Как она используется и почему без неё всё работает?

>Так ты покажи что будет по дефолту в расте, не стесняйся. А то сначала про дефолт речь шла, а как до раста дошли так сборка с ключами.
Будет как и в любом другом языке при использовании статической линковки. Не помню, чтобы речь шла про дефолты. Первое упоминание этого слова в треде в контексте компиляторов — в моём посте.
Аноним 27/04/24 Суб 19:11:06 3137309 207
Аноним 27/04/24 Суб 19:18:52 3137316 208
>>3137308
Ты так и не показал что будет в расте, только виляешь жопой и никак не можешь объяснить почему у раста такие жирные бинарники. С динамической линковки вдруг перескакиваешь на LTO и обратно.
Ответь на простые вопросы уже: почему LTO в расте не вырезает мусор и зачем ты отделив мусор динамической линковкой притворяешься что его теперь нет?
Аноним 27/04/24 Суб 19:20:49 3137319 209
>>3137265
Автор видоса хоть понимает смысл колясочника в линуксах?
Аноним 27/04/24 Суб 19:30:57 3137325 210
>>3137316
Я смотрю мы уже прекратили обсуждать попадание "лишних" символов в бинарник и перешли к обсуждению жирности последних? Ну так я и не виляю жопой. Я только не согласился с утверждением >>3137214, что растовые бинарники весят больше 350Кб безотносительно способа сборки. И привёл наглядный пример. Выводы за меня ты уже сам начал делать, кек. Ладно, чао, эта тема мне уже не интересна, её обсосали 100 раз до этого.
Аноним 27/04/24 Суб 19:37:50 3137332 211
>>3137308
> при использовании статической линковки
А как в расте статически прилинковать всё, чтоб понимать сколько говна он носит с собой? Я вот сейчас собрал под виндой, а там динамически прилинкован рантайм сишки и крестов, на полтора мб, лол. В линуксе наверняка libc линкуется, поверх сотен кб самого раста.
>>3137325
> перешли к обсуждению жирности последних
Вроде про это и был разговор? Это ты зачем-то от него уйти пытаешься. То что у тебя там от чего-то очко порвалось не имеет к сути вопроса никакого отношения.
> эта тема мне уже не интересна
Норм ты слился, так и не сказав ничего по сути вопроса.
Аноним 27/04/24 Суб 19:54:23 3137337 212
>>3137332
>А как в расте статически прилинковать всё, чтоб понимать сколько говна он носит с собой?
Он по дефолту так делает, поэтому просто cargo build. Добавление --release этого не меняет, если что.
>Вроде про это и был разговор?
Нет, я это не обсуждал, хотя меня почему-то постоянно пытались вывести на это. Более того, я изначально в >>3137199 и раст-то не упоминал, лол. Повторю, мне эта специальная олимпиада не интересна. Другие темы готов пообсуждать.
Аноним 27/04/24 Суб 20:02:58 3137346 213
>>3137337
> Он по дефолту так делает
Нет. Вот тут ты пиздишь в наглую. Запусти и посмотри в рантайме что он налинковал динамически. В крестах под виндой если собрать с /MT, то он реально статический билд сделает, вообще без динамической линковки, аж на 130 кб. Но в расте там две dll висят.
Аноним 27/04/24 Суб 20:31:50 3137370 214
image 352Кб, 2768x1918
2768x1918
>>3137346
>В линуксе наверняка libc линкуется, поверх сотен кб самого раста.
Кстати, да, это интересный вопрос оказался. У меня такой результат. Получается примерно 700 кб libc и ещё 700кб между растовой библиотекой и libgcc_s (сложно сказать в какой пропорции). Остальное думаю пренебрежимо мало. Хотя и libgcc_s думаю тоже крошечная, доводилось в её исходники лазить.

Почитать про волшебные флаги если интересно: https://doc.rust-lang.org/reference/linkage.html#static-and-dynamic-c-runtimes
Аноним 27/04/24 Суб 20:35:35 3137373 215
>>3137370
Крутые утилиты на скрине. А в венде есть такие?
Аноним 27/04/24 Суб 20:35:45 3137374 216
Вы ёбнутые? Сейчас даже ебаный калькулятор на андроид 100МБ+ весит, собирайте статический бинарник и не ебите мозг.
Аноним 27/04/24 Суб 20:37:14 3137377 217
>>3137370
Теперь бы ещё узнать что будет если таких либ не найдено. Или libc какой-то очень не той версии, что была при сборке. У ГОвна вроде реально портативные бинарники под линуксом, хоть и жирные в несколько мб.
Аноним 27/04/24 Суб 20:39:53 3137378 218
Аноним 27/04/24 Суб 20:43:57 3137386 219
1587752702714.png 17Кб, 1175x175
1175x175
1595235145010.png 20Кб, 1169x206
1169x206
>>3137370
Под виндой на первом скрине msvc тулчейн, на втором gnu. gnu генерит бинарник аж на 1.1 мб. И нахуя ему сокет я не понял, это хеллоу ворлд, зонды линукса какие-то.
Аноним 27/04/24 Суб 20:58:31 3137404 220
>>3137374
Я кстати, соглы. Особенно, если учесть, что одинаковые страницы памяти всё равно будут общими. Страдает только место на диске, но они всё равно безразмерные нынче.

>>3137377
Что-то не очень понял, что ты имеешь в виду. Либ тут никаких не требуется. А если ты запускаешь приложение слинкованное с версией библиотеки, которая не совместима с ядром, то будет упавшее приложение. На винде попроще с этим, там над обратной совместимостью трясутся.
Аноним 27/04/24 Суб 21:04:35 3137414 221
>>3137374
Для малварей важно. Как малвари писать на расте с таким?
Аноним 28/04/24 Вск 11:44:35 3137654 222
Аноним 28/04/24 Вск 12:40:43 3137717 223
>>3137374
Лол, эффективный язык. Может сразу на джаве тогда писать и проблем с боров-чекером не иметь? Ну раз +-100 МБ погрешность
Аноним 28/04/24 Вск 12:48:15 3137726 224
>>3137717
Мы пользуемся растом не из-за размера бинарника, а как раз из-за боровчекера. Нам нравится, когда создаваемые программой данные освобождаются автоматически и zero-cost-ово.
Аноним 28/04/24 Вск 12:57:38 3137739 225
>>3137726
Так в джаве они тоже освобождаются автоматически
>zero-cost-ово
Просто мантры https://verdagon.dev/blog/myth-zero-overhead-memory-safety , такие же как раньше были про маленькие артефакты компиляции
inb4 аррряяя, тебе чего пару мс жалко чтоли, не еби мозг!
Аноним 28/04/24 Вск 13:08:58 3137755 226
1714298939574.png 14Кб, 192x192
192x192
>>3137739
Чё тебе пару милисек жалко штоле? Не еби мозг!
Аноним 28/04/24 Вск 13:09:25 3137757 227
>>3137386
>gnu генерит бинарник аж на 1.1 мб.
Он по умолчанию символы не стирает. Надо с -s собирать или strip --strip-unneeded сделать.
Аноним 28/04/24 Вск 13:12:51 3137767 228
Аноним 28/04/24 Вск 13:22:03 3137780 229
>>3137767
Ты-то куда лезешь игроблять со своим гейдевом?
Аноним 28/04/24 Вск 13:26:15 3137787 230
image.png 326Кб, 600x600
600x600
Аноним 28/04/24 Вск 13:43:23 3137810 231
4304a42b1fbefa6[...].jpg 81Кб, 800x600
800x600
>>3137780
Я вообще пытался вкатываться в геймдев на Go.
Аноним 28/04/24 Вск 13:48:49 3137817 232
Аноним 28/04/24 Вск 13:56:12 3137835 233
Аноним 28/04/24 Вск 14:02:50 3137843 234
Аноним 28/04/24 Вск 14:16:56 3137860 235
>>3137237
>Даже в дотнете с этим справились, кода пилили AOT-компиляцию в нативный код. А ведь там даже есть рантайм-рефлексия
Она не работает, там надо вручную прописывать элементы, которые ты через рефлексию трогаешь, чтоб linker лишнего не порезал и прилага не упала в рантайме. Те же грабли с разными ioc-контейнерами, json-парсерами и всякой лабудой, которая работает на рефлексии или уже, подозреваю, на кодогенерации рослином. Да и как ты себе представляешь, то linker не порежет тебе класс, например, который ты в рантайме определяешь?

мимохочусбежатьнарастсдотнета,провожуразведку
Аноним 28/04/24 Вск 15:14:58 3137932 236
>>3137404
> Особенно, если учесть, что одинаковые страницы памяти всё равно будут общими
так разные файлы будут лежать в разных страницах, не?
Аноним 28/04/24 Вск 15:58:30 3137969 237
>>3137218
Итак, выяснили что раст не для системного программирования, теперь выяснили, что раст не подходит для гейдева. Как так, пидорасты?
Аноним 28/04/24 Вск 15:59:51 3137972 238
>>3136152
>-Один хрен, я бы продпочёл Result, но его нет.
>-Ну на вот тебе Result
>...
>func().unwrap()
>func1().unwrap()
>func2().unwrap()
Аноним 28/04/24 Вск 16:07:37 3137984 239
Аноним 28/04/24 Вск 16:08:34 3137988 240
>>3137969
Пока только выяснили, что твоя мамаша шлюха, а папаша - членодевка.
Аноним 28/04/24 Вск 16:10:16 3137991 241
Аноним 28/04/24 Вск 16:13:12 3137997 242
>>3137988
Ты выше почитай, челик разрабатывал реальные игры на пидорасте в течении 3-х лет, его мнение чего-то да стоит, а твоё - тупо мусор.
Аноним 28/04/24 Вск 16:14:27 3138001 243
>>3137991
Там выше челик жаловался, что в аде можно не обрабатывать исключение, мол, не правильно это, а ты тут с затычкой в виде ? прибегаешь лол.
Аноним 28/04/24 Вск 16:22:06 3138015 244
>>3137997
>пук-среньк, обратите внимание уже на эту ссылку
Челик, просто иди нахуй. Мало у кого есть желание читать чей-то километровый провокационный высер на неродном языке. Хочешь обсуждения — напиши вкратце про что там или хотя бы что тебе больше всего понравилось.
Аноним 28/04/24 Вск 16:24:24 3138021 245
>>3138001
Так это и есть обработка, не так разве? Минимально придётся типы ошибок приводить.
Аноним 28/04/24 Вск 16:24:31 3138023 246
>>3138015
>провокационный высер на неродном языке
Русорастофобский пост
Просто 10/10 реакция.
Аноним 28/04/24 Вск 16:31:16 3138031 247
>>3138023
Ну я так и понял, что кроме заголовка и первого параграфа ты сам не читал.
Аноним 28/04/24 Вск 16:36:27 3138039 248
>>3138031
И как ты это понял, свидетель пидораста?
Аноним 28/04/24 Вск 16:49:33 3138050 249
>>3138039
Так прочитай хотя бы второй параграф. Ты делаешь вывод о целом языке исходя из очень специфического опыта конкретных людей. Там автор сам пишет, что его опыт нельзя экстраполировать. Повторю, там много всего понаписано, возможно по делу, но лично у меня нет никакого желания в это вникать. Тем более, чтобы беседу с тобой вести, сам-то ты этого не делал.
Аноним 28/04/24 Вск 16:51:26 3138051 250
>>3138050
>Повторю, там много всего понаписано, возможно по делу, но лично у меня нет никакого желания в это вникать.
Вся суть пuдopaшки. Если кто не понял, годная статья, стоит вообще всем читать.
Аноним 28/04/24 Вск 17:18:16 3138083 251
>>3137860
>ты в рантайме определяешь
используешь*
долгофикс
Аноним 28/04/24 Вск 18:10:16 3138120 252
>>3137984
Ого, не знал. А как это работает? Ядро не устанет память сверять кусок за куском? Вряд ли для этого хэш-мапу заводили
Аноним 28/04/24 Вск 20:11:53 3138213 253
>>3138120
Хэшировать страницы дешевле, чем грузить-выгружать.
Аноним 28/04/24 Вск 20:44:57 3138231 254
>>3138120
Да устаёт, конечно. Хешмапой это и реализовано, насколько я знаю. Но я слукавил, на самом деле это нигде не включено по умолчанию.
Аноним 28/04/24 Вск 20:50:22 3138233 255
1658836264556.mp4 3369Кб, 140x228, 00:01:10
140x228
>>3138231
> слукавил
Проще говоря напиздел, наебал, высрал дезу.
Аноним 28/04/24 Вск 20:54:43 3138236 256
>>3138233
Ага, насрал дезу тебе за щеку.
Аноним 29/04/24 Пнд 09:31:38 3138502 257
В каком бреду надо было придумать такой синтаксис?
let x = {
let y = 1;
y + 1
}
Аноним 29/04/24 Пнд 09:48:00 3138508 258
Аноним 29/04/24 Пнд 10:52:58 3138527 259
Аноним 29/04/24 Пнд 11:02:46 3138538 260
>>3138502
Пошёл нахуй, кретин
Аноним 29/04/24 Пнд 11:03:12 3138539 261
>>3138502
Пародия на sml
let val x = let val y = 1 in y+1
Аноним 29/04/24 Пнд 11:17:30 3138550 262
>>3138539
Ты заблудился? Вали нахуй с треда.
Аноним 29/04/24 Пнд 13:16:16 3138665 263
>>3138502
Завтра ищешь в интернете книжку Introduction to the theory of computation. Пофиг если ничего не поймешь. Затем идешь на www.agner.org и изучаешь микроархитектуру процессоров от корки до корки. Потом зубришь, именно, сука, вызубриваешь нотацию гомотопной теории типов, чтобы от зубов отскакивало.
Когда напишешь свой первый однопроходный компилятор, по пути изучив ассемблер, скачиваешь и изучаешь изучаешь любой фреймворк для кроссплатформенной кодогенерации, рекомендую LLVM или C--. Как переделаешь компилятор, чтобы имел по крайней мере вывод типов по Хиндли-Милнеру, можешь идти дальше - тебя ждет увлекательный мир оптимизаций. Многопоточность, сверхбыстрая векторизация, ленивые итераторы. Отсос хиккующих выблѣдков / просто неудачников типа Тима Пайка или сисярп/джава-удососов, которые сосут уд по жизни не заставит себя ждать и уже через пол года твой фаундейшен ты будешь получать такие суммы, что любая трансдевочка будет течь при одном упоминании твоих контрибьюторов.
Аноним 29/04/24 Пнд 13:52:30 3138703 264
>>3138665
Я уже писал компиляторы без всей этой лабуды по книге дракона (Ахо, Ульям).

Речь про то, что программисту надо следить за этой точкой с запятой в конце, от чего зависит семантика. Это настолько тупое решение, что не передать.
Аноним 29/04/24 Пнд 14:01:27 3138710 265
>>3138703
А как было бы лучше по твоему мнению?
Аноним 29/04/24 Пнд 14:19:28 3138728 266
Аноним 29/04/24 Пнд 14:23:34 3138732 267
>>3138703
Зато односложные лямбды выглядят заебок.
let double = |x| x * 2;

Чем людям мешают эти точки с запятой? Нанюхаются своего питона, понимаешь.
Аноним 29/04/24 Пнд 14:24:56 3138735 268
>>3138703
> От чего зависи семантика.
1. Любой блок возвращает что-то. Даже пустой блок возвращает ().
2. Лишний ; меняет тип взвращаемого значения всегда, компилятор почти сразу находит несоотвествие типов и сообщает об этом разрабу.
Твоя проблема надумана.
Аноним 29/04/24 Пнд 14:35:06 3138740 269
>>3138710
return или закорючку какую-нибудь в конце
...
y + 1 ->
}
Аноним 29/04/24 Пнд 14:47:06 3138746 270
>>3138740
Но return нельзя использовать, т.к. он сам по себе возвращает ! или never (https://doc.rust-lang.org/std/primitive.never.html). Ну и в замыкании его семантика будет неясна. А в чём принципиальная разница между отсутствием ; и закорючкой в конце?
Аноним 29/04/24 Пнд 15:01:31 3138763 271
Хотя про замыкание спизданул не подумав, забей.
Аноним 29/04/24 Пнд 15:20:30 3138784 272
>>3138001
Чтобы использовать ? у тебя в сигнатуре должен быть явно задан тип, для которого этот ? разрешено использовать. То есть, какую попало ошибку ты при помощи ? не пробросишь.
Если возможных ошибок несколько и все охота пробросить, то можно привести через enum к общему типу ошибки и пробрасывать уже его или проще через специальные сторонние макросы.
Аноним 29/04/24 Пнд 15:25:42 3138790 273
Аноним 29/04/24 Пнд 15:31:19 3138802 274
1580097340128.mp4 488Кб, 1280x720, 00:00:02
1280x720
>>3138763
> спизданул
Опять хотел уважаемых растанов наебать?
Аноним 29/04/24 Пнд 15:59:48 3138823 275
Реально ли устроится сейчас на работу на Rust? Что надо кроме языка знать?
Аноним 29/04/24 Пнд 16:09:49 3138828 276
>>3138823
Опыт работы на с/с++ от 6 лет, высшее образование, знание линукса, сетевых протоколов, алгоритмов и структур данных
Аноним 29/04/24 Пнд 16:32:53 3138842 277
>>3138828
Под Виндоуз. Опыт администрирования БД приветствуется. Знание Python будет большим плюсом.
Аноним 29/04/24 Пнд 17:23:59 3138893 278
>>3138508
>>3138538
Говорят, что соевый язык, а порвались как настоящие базовики.
Аноним 30/04/24 Втр 09:00:42 3139392 279
fibonachi.jpg 124Кб, 1031x828
1031x828
Я правильно решил?
Аноним 30/04/24 Втр 10:16:57 3139472 280
Аноним 30/04/24 Втр 10:20:33 3139476 281
>>3139472
Но ведь числа Фибоначчи - это математическая последовательность, а не компьютерный массив данных, поэтому логично считать её начиная с 1, а не с 0.
Аноним 30/04/24 Втр 10:22:23 3139479 282
>>3139392
> рантайм вычисления
Это ты так траллишь, да?
Аноним 30/04/24 Втр 10:23:18 3139480 283
Аноним 30/04/24 Втр 10:29:40 3139483 284
>>3139476
Последовательность, да, которая определяется так:
fib(0) = 0
fib(1) = 1
fib(n) = fib(n - 1) + fib(n - 2)

Логично, когда ты пишешь функция вычисления числа Фибоначчи, что её аргументом является не порядковый номер числа, а некоторому числу. Которое, даже может быть отрицательным.

Сори, неправильно выразился, когда писал про подсчёт чисел. Не проснулся ещё.
Аноним 03/05/24 Птн 21:39:42 3143896 285
Что нужно знать/уметь чтобы найти/устроиться на работу на сабже? Что вообще на собесах спрашивают? Что лайвкодят если вообще кодяд?
Аноним 04/05/24 Суб 03:26:39 3144149 286
>>3143896
Тестовое дали, потом недели 3 или месяц проверяли, детально придирались, чуть ли не к каждому слову, что я память лишнюю высвободил, по растовским меркам если ты сделал временную переменную и скопировал значение туда, то это нохайр автоматом.
Аноним 04/05/24 Суб 07:59:11 3144182 287
>>3144149
Ты может в какую-то эмбедед дрочильню подавался?
Аноним 05/05/24 Вск 17:45:20 3145667 288
image.png 37Кб, 558x489
558x489
Я правильно понимаю что единственный способ заставить этот код работать это обернуть в RefCell?
Аноним 05/05/24 Вск 18:20:50 3145710 289
>>3144182
Ты думаешь у тебя прям другой случай и всё будет НИ ТАК? И не будет миллипридирок к лишнему освобожденному байтику? Лул.
Аноним 05/05/24 Вск 18:57:54 3145758 290
>>3145710
Конечно. Я талантливее, способнее и самостоятельнее большинства кодерков. А проблемы с лишними байтиками это чисто рабочий момент который разрешается на уровнях кодревью/дрочева дев окружения/репортов с прода.
Аноним 05/05/24 Вск 20:36:40 3145879 291
image.png 5Кб, 289x107
289x107
>>3145667
Можно немного проще.
Аноним 05/05/24 Вск 20:41:26 3145888 292
image.png 64Кб, 1920x1036
1920x1036
Аноним 05/05/24 Вск 21:52:43 3145924 293
1672748202169.mp4 2320Кб, 2738x1708, 00:00:14
2738x1708
>>3145888
Нахуй в браузер заходить. В 2k24 код вот так пишут. Хорошая IDE умеет за тебя писать код.
Аноним 05/05/24 Вск 22:21:27 3145933 294
1714936887301.png 23Кб, 657x277
657x277
>>3145924
Напиши туда инструкцию, чтобы она написала тебе код программы, которая висит значком в трее и контекстным меню показывает опции
> Следующая картинка
> Показать окно
> Выход
Окно пикрелейтед.
Посмотрим, как твой цопелот справится.
Аноним 05/05/24 Вск 23:01:12 3145966 295
1712431992107.png 371Кб, 2578x1733
2578x1733
>>3145933
Ну оно не умнее меня. А я не знаю какие либы надо для этого взять сходу. Оно код пишет, winapi знает, но импортит странное, какая-то ебля с либами нужна. На крестах с инклюдами ебля, он тоже сам не может справиться, надо в симейке дрочить что-то. А вот на питоне сходу написало рабочий код на qt. Можно дальше просить хотелки, тут я просто попросил иконку в трее с меню сделать. Ты не думай что оно тебе рабочий софт на тысячи строк может написать с нуля, только отдельные куски по реквестам, хоть какой-то контекст нужен нейронке.
Аноним 06/05/24 Пнд 00:30:53 3146002 296
image.png 2Кб, 311x82
311x82
Кто знает как focus terminal показать в панели как на скрине?
Я его убрал и третий час пытаюсь найти галочку
Аноним 06/05/24 Пнд 00:59:33 3146026 297
>>3145667
Да. Rc не позволяет менять внутренние данные, а твой код требует изменяемой ссылки. Именно для этих случаев и существуют разные Cell'ы.
Аноним 06/05/24 Пнд 03:15:08 3146042 298
Аноним 06/05/24 Пнд 17:27:34 3146613 299
>>3146002
А мог бы уже оформить исюйку.
Аноним 07/05/24 Втр 12:44:31 3147304 300
>>3146613
А можно было и тяночку оформить, вместо того чтобы с боровчекером ебаться
Аноним 07/05/24 Втр 16:45:41 3147545 301
>>3147304
Ннно ведь боровчекер лучше тяночьки!!!
Аноним 07/05/24 Втр 21:42:58 3147892 302
Скачал RustRover. Дебаггер не встаёт на брейку внутри лямбды.

Вы ебанутые?
Аноним 08/05/24 Срд 00:01:57 3148141 303
>>3147892
Ну все, заканчивай обратно
Аноним 09/05/24 Чтв 22:00:41 3150166 304
>>3148141
Вы как пишете на этом говне? Или это какой-то игрушечный язык? Типа ЛОГО?
Аноним 10/05/24 Птн 00:22:05 3150236 305
Аноним 10/05/24 Птн 06:07:45 3150297 306
Аноним 10/05/24 Птн 12:59:50 3150517 307
image 560Кб, 3648x1988
3648x1988
Сегодняшний дейлик на литкоде удивил меня тем, что в расте нет сортировки чисел с плавающей точкой. Пришлось изгаляться новым типом. Заодно попробовал оптимизировать с помощью unsafe-кода, но выигрыша это почти никакого не дало. Ну и самое смешное, что предыдущее рабоче-крестьянское решение, с коллекционирование и сортировкой долей заметно быстрее, хотя и жрёт в 10 раз больше памяти.
Аноним 10/05/24 Птн 17:40:30 3150880 308
show.png 2Кб, 256x50
256x50
Аноним 11/05/24 Суб 11:06:34 3151497 309
>>3150880
Так я его и использовал, посмотри на скрин. Его можно применить в сортировке, но не для того чтобы помещать числа с плавающей точкой в кучу (BinaryHeap).
Аноним 11/05/24 Суб 13:54:48 3151672 310
>>3150517
> чисел с плавающей точкой.
> primes
Ору с индуса.
Аноним 11/05/24 Суб 14:47:06 3151727 311
>>3151672
К счастью, в Индии английский — второй официальный язык. Поэтому индус смог прочитать условие задачи и понять, что там нужно делить одно простое число на другое.
Аноним 11/05/24 Суб 14:52:10 3151738 312
>>3151727
Не нужно.
a/b > c/d iff da > bc for a,b,c,d > 0
Аноним 11/05/24 Суб 15:07:41 3151759 313
>>3151738
Прекрасное понимание школьной математики, только это никак не упрощает решение этой задачи. Всё равно придётся писать обёртку имплементирующую Ord, только не для f32, а для пары чисел.

Для простой сортировки можно использовать вместо total_cmp. Я правда не уверен, что это будет эффективнее на процессорах с FPU.
Аноним 11/05/24 Суб 15:45:57 3151780 314
>>3151727
> алгоритмические задачи
> делить
Ты ёбнулся? Никогда не используй плавающую точку если её нет в исходных данных.
Аноним 11/05/24 Суб 16:13:59 3151794 315
>>3151759
> не упрощает решение этой задачи.
Я тебе не просто ускорил хиндукод, а спас от ошибок. Ты ведь и не знаешь, что некоторые i32 равны после преобразования в f32.
Аноним 11/05/24 Суб 19:01:08 3152010 316
>>3151738
>>3151794
А я нихуя непонил. Обесните анончики.
мимовкатун
Аноним 11/05/24 Суб 20:13:02 3152112 317
>>3151794
К данной задаче это никак не относится. Пиздец, просто невозможно предугадать к чему могут доебаться на дваче после твоего поста. Слишком много специалистов по всему.
Аноним 11/05/24 Суб 20:22:45 3152134 318
>>3151780
А ещё не надо умножать неизвестно что на неизвестно что. Угадай почему.
Аноним 11/05/24 Суб 22:55:58 3152362 319
>>3152134
С этим как раз понятно как работать, начиная от использования overflowing_mul, и заканчивая переходом в 64/128 бит.

А умение работать c проёбом точности обычно идёт с курсом по численным методам, где от тебя сразу спрашивают с какой точностью ты хочешь решить задачу.
Аноним 11/05/24 Суб 23:37:59 3152413 320
image 733Кб, 2668x1770
2668x1770
Аноним 12/05/24 Вск 07:10:11 3152503 321
ownership.jpg 109Кб, 1252x1814
1252x1814
Мнения?
Аноним 12/05/24 Вск 08:23:51 3152514 322
>>3152413
Спасибо. Буду думоть. Разбираца.
>>3152503
Годнота. Схоронил.
Аноним 12/05/24 Вск 08:30:27 3152516 323
1612418775826.png 75Кб, 430x252
430x252
>>3152503
Каждый раз проигрываю.
Аноним 12/05/24 Вск 08:54:34 3152530 324
17100501909770.jpg 32Кб, 225x225
225x225
>>3152516
Два оператора сравнения и сдвиг. Могли бы и в макрос обернуть.
Аноним 12/05/24 Вск 09:34:51 3152550 325
Аноним 12/05/24 Вск 19:21:00 3153215 326
>>3152530
Если вдруг появился тип Rc<RefCell<HashMap<&'a str, Matrix<f64, 4, 4>>>>>, то проще сделать алиас.
Аноним 12/05/24 Вск 19:24:21 3153226 327
>>3153215
Выводится будет алиас или вот эта лапша? В тех же крестах можно полностью скрыть тип, но тут наверняка будет всё так же эта срань.
Аноним 12/05/24 Вск 20:01:50 3153292 328
>>3153226
Лапша. Хотя может есть какая-то опция в раст-аналайзере. Просто не делай синтаксических ошибок, лмао.
Аноним 13/05/24 Пнд 00:29:26 3153636 329
image 708Кб, 3648x1988
3648x1988
image 720Кб, 3648x1988
3648x1988
image 608Кб, 1505x1521
1505x1521
image 725Кб, 3648x1988
3648x1988
Продолжаю сортировать числа с плавающей точкой. Вчерашний литкодовский дейлик был довольно сложный, решил его только сегодня. Ради интереса попробовал сделать сортировку пар целых чисел, вместо результата деления, как настоятельно "советовал" токсичный анонас выше. Было подозрение, что это может оказаться даже чуть медленнее из-за того, что на каждой итерации сортировки потребуются дополнительные вычисления, как и для вычисления итогового результата, но нет, в пределах погрешности результаты идентичны. Правда растовский total_cmp оказался нетривиальным (для меня) и тоже сравнивает целые числа, поэтому попробовал напрямую сравнивать f64, вот это точно вышло медленнее.
Аноним 13/05/24 Пнд 00:58:07 3153681 330
>>3153636
емакс что-ли? мощно
Аноним 13/05/24 Пнд 18:33:15 3154652 331
Чтобы такого закодить на расте чтобы после этого меня сразу взяли на работу сеньором? Ядро линукса переписывать не буду.
Аноним 13/05/24 Пнд 18:49:20 3154681 332
Аноним 13/05/24 Пнд 19:15:56 3154731 333
Аноним 13/05/24 Пнд 22:48:19 3154990 334
>>3154731
Да хз, мне так глубоко лезть желания нет. Да и профайлер это больше про поиск медленной функции, а тут скорее надо сравнивать дизассемблер для разных вариантов.
Аноним 17/05/24 Птн 22:45:39 3159869 335
image 674Кб, 1571x596
1571x596
Аноним 18/05/24 Суб 12:05:57 3160144 336
image 156Кб, 862x782
862x782
https://github.com/DioxusLabs/dioxus/

Пробовал эту штуку кто-нибудь? Вот прям можно для мобилок хоть счас норм аппликуху собрать?

самому некогда, иду по горам лазить
Аноним 18/05/24 Суб 12:36:11 3160167 337
>>3160144
Так это очередная веб-параша на вебвью. С таким же успехом можешь взять любой веб-гуй, хоть электрон. На расте уже есть несколько подобных высеров, каждый год новый появляется. Сейчас хеллоу-ворлд собрал, так же как и таури запускается с задержкой в секунду - идёт ебучая инициализация вебвью. Смешно видеть высеры про перфоманс, когда их говно запускается медленнее электрона.
Аноним 18/05/24 Суб 15:56:06 3160505 338
Tauri или egui?
Аноним 18/05/24 Суб 17:58:51 3160721 339
Аноним 19/05/24 Вск 12:51:31 3161651 340
Аноним 19/05/24 Вск 13:15:29 3161680 341
>>3152503
Шиз не освоил miro и решил захуярить схемку ascii графикой

По теме треда - реквестирую, что с Rust произошло хорошего в контексте промышленного применения за последние 4 года?

Где уже можно пользоваться, где сырое шо пиздец. Вчера на хабре наткнулся на нытье, что раст в gamedev - сырое недоразумение. Это так? А что в других сферах?
Аноним 19/05/24 Вск 13:32:01 3161697 342
>>3161680
Для дебилов стаковерфловнутых раст будет сырым недоразумением даже когда на нём космические корабли будут летать. Для нормальных людей всё уже давно хорошо и можно юзать деінде.
Аноним 19/05/24 Вск 14:54:46 3161795 343
Аноним 19/05/24 Вск 16:36:54 3161847 344
>>3161680
В вебе ещё как-то терпимо, всё остальное пиздец, да. Причём автобинды на сишные/крестовые либы - это лучшее что есть в расте.
Аноним 19/05/24 Вск 17:46:32 3161959 345
>>3161680
>Шиз не освоил miro
Нормальные люди юзают канвасы в обсидиане вместо этого поделия для вебмакак
Аноним 19/05/24 Вск 19:29:44 3162095 346
image 30Кб, 1327x716
1327x716
>>3160167
Калькулятор и список подлинкованных либ. Получается, без этого зоопарка и не собрать. Но, блин, удобно же. Для мобилок его попробовать, штоле.
Аноним 20/05/24 Пнд 21:54:58 3163468 347
>>3152503
Объясните разницу между Cell и RefCell. Я же правильно понимаю что когда они обёрнуты в Rc/Arc разницы по сути нет?
Аноним 20/05/24 Пнд 22:44:18 3163512 348
>>3162095
>libxslt
Разве этой мразью еще пользуются? Пятнадцать лет назад ее пытались вкорячить в бэкенд, не вкорячилось.
Аноним 20/05/24 Пнд 23:21:04 3163566 349
>>3163468
Содержимое Cell можно забрать только по значению, зато его не надо лочить. C Rc никак не связан.
Аноним 21/05/24 Втр 12:10:14 3163973 350
>>3163512
Это зависимость вебвьюхи гтк-шной.
Аноним 21/05/24 Втр 14:57:42 3164162 351
>>3163468
Разница есть. Cell::get() возвращает копию значения, RefCell::borrow() и borrow_mut() ссылки. Первое подходит для примитивных типов, которые и так обычно копируются, второе для всего остального. Если попробовать объяснить другими словами, то Cell используется, когда необходимо поменять "неизменяемое" значение примитивного типа (т.е. типа, реализующего трейт Copy), а RefCell, когда необходимо сделать проверки заимствования в рантайме, чтобы поменять "неизменяемое" содержимое какого-то значения. Обрати внимание, что есть разница между значением и содержимым.
Аноним 22/05/24 Срд 12:04:54 3165182 352
image 52Кб, 499x488
499x488
Ууу, бля, ууу.
Аноним 22/05/24 Срд 13:25:56 3165263 353
>>3165182
Лол clion для свободных бесплатных православных сей и плюсов платный, а rustrover для корпоративного богомерзкого раста бесплатный.
То-то жопа у местного дурачка-антикорпораста подгорит.
Аноним 22/05/24 Срд 14:08:03 3165331 354
Screencast from[...].webm 71Кб, 392x601, 00:00:09
392x601
image 10Кб, 497x318
497x318
image 4Кб, 843x38
843x38
>>3162095
Зацените, аноны, как можно. Пиздец, конечно, они заморочились, но выглядит прям многообещающе.
Аноним 22/05/24 Срд 14:09:48 3165336 355
>>3165331
Забыл добавить - это дефолтный пример калькулятора, где все изменения я показал на скринах.
Аноним 22/05/24 Срд 15:08:22 3165424 356
>>3165331
Выглядит скорее как хуйня. На нормальных фреймворках гуя хоть на том же дотнете, на имгуи всё ещё примитивнее всё это сильно проще реализуется, без всяких костылей в строках и лапши.
Аноним 22/05/24 Срд 17:27:47 3165618 357
>>3165182
>системный язык
>надо пользовать иде
Пидорастики такие пидорастики.
Аноним 22/05/24 Срд 17:42:26 3165632 358
>>3165618
>> Загринтекстил чот
>> Загринтекстил чот не связанное
> Сделал тупонький манявывод
Хейтерки такие хейтерки
Аноним 22/05/24 Срд 18:16:16 3165678 359
>>3165182
Я пробовал этот кал пару недель назад и удалил. Даже вспомнить не могу почему снёс нахуй. Вреде бомбанул от уёбищной подсветки синтаксиса, хуже чем в вскоде.
Аноним 22/05/24 Срд 21:27:22 3165891 360
>>3165424
Да лан? Ну покажи. Вкратце задача - по клику по кнопке в некой группе переопределять надписи и значения всех кнопок из группы, в идеале как у меня в примере - перетрясыванием набора исходных значений (у меня это shuffle).


Собсно у меня есть задача, где надо будет реализовать нечто подобное. Изначально хотел cursive, но там пиздец, потом egui, но там немногим легче. А тут прям самое то.
Аноним 24/05/24 Птн 18:39:44 3168049 361
764356.jpeg 7Кб, 248x204
248x204
Screenshot 2024[...].png 104Кб, 965x787
965x787
c2f93391d12c413[...].png 476Кб, 1397x346
1397x346
Screenshot 2024[...].png 100Кб, 870x887
870x887
Свидетели векторизующихся итераторов в треде есть?
Почему так? Хочу разобраться.
Аноним 24/05/24 Птн 19:23:15 3168070 362
1704033386622.png 410Кб, 2799x1319
2799x1319
>>3168049
В расте всё очень плохо с этим, оно в зачаточной стадии находится. Странно ожидать от веб-параши производительности в итеративных вычислениях.
Аноним 24/05/24 Птн 21:15:07 3168154 363
1628435076086.png 77Кб, 1302x375
1302x375
>>3165891
С imgui будет пикрилейтед. Не надо никаких лямбд, не надо никаких полей и лапши в строках.
Аноним 25/05/24 Суб 11:51:06 3168555 364
Cап, сейчас кожу на питоне, думаю перекатиться в раст как более перспективный язык на рынке труда
Поясните нормальное решение? Стоит также дрочить алгоритмы на расте или у вас другие паттерны?
В целом раст сильно сложнее?
Не обзывайте пожалуйста
Аноним 25/05/24 Суб 11:52:21 3168557 365
>>3168154
Вот и хорошо, вот и замечательно. Думаю, на egui похожим образом можно сделать.
Зато тут стили, кроссплатформенность и, что для меня важно, реактивность через их этот Signal, который можно шарить между тредами.
Аноним 25/05/24 Суб 11:57:26 3168565 366
>>3168555
>как более перспективный язык на рынке труда
Смотря что кодишь. Если машоб/нейронки, то как бы mojo не оказался более перспективным. Если бэк, то goвно явно перспективнее. Самый перспективный способ получить деньги за работу на расте сейчас - это самому внедрить его на текущей работке. Типа, есть какая-то задача, которая реализована бажно и тормознуто на пыхе/петухоне, ты за выходные переписываешь её на раст и презентуешь барину. Барин ссыт кипятком от такой скорости и стабильности, повышает тебе ЗП, ты докидываешь абзац в резюме - который тоже не факт, что пригодится.
Аноним 25/05/24 Суб 12:06:22 3168577 367
>>3168565
>переписываешь её на раст и презентуешь барину.
А потом просишь повысить зп еще, потому что тебе на замену он никого не найдет
Аноним 25/05/24 Суб 12:19:18 3168586 368
>>3168557
> Зато тут стили, кроссплатформенность
Да и на imgui всё это есть. У egui ещё производительность такая себе, я недавно чекал его в очередной раз и довольно грустно для десктопного гуя. У imgui хотя бы на уровне qt производительность.
Можешь посмотреть какие ебанутые комбайны можно на нём делать:
https://github.com/WerWolv/ImHex
Аноним 25/05/24 Суб 14:49:00 3168730 369
>>3165182
нахуй ты местных нищуков так пугаешь? там бесплатно для некоммерческого использования
Аноним 25/05/24 Суб 14:50:57 3168731 370
Аноним 25/05/24 Суб 14:51:27 3168732 371
Аноним 25/05/24 Суб 15:50:28 3168782 372
image 47Кб, 1281x625
1281x625
>>3168586
Да лан, мне и на диоксусе збс.
Поясню, почему: в моей задаче гуй не самое важное, лишь бы было удобно работать с условным бэком - диоксус это могёт. Параллельно хотелось бы
а. Оставаться в экосистеме раста (хотя бы затем, чтобы прям из ide смотреть код сторонней функции)
б. Изучить что-то новое, потенциально годное для портфолио - реактивные гуи на DOM+CSS я ещё не делал, теперь вот поделаю.
Аноним 26/05/24 Вск 00:06:16 3169269 373
image.png 308Кб, 591x1280
591x1280
Аноним 26/05/24 Вск 08:52:01 3169362 374
image 30Кб, 679x744
679x744
Аноним 26/05/24 Вск 08:54:13 3169364 375
image 99Кб, 679x744
679x744
>>3169269
>>3169362
GPT у меня сейчас стоит на промо-4о, жалко тратить
Аноним 26/05/24 Вск 09:25:18 3169380 376
>>3169269
Я даже не знаю, смеяться или плакать над тем, что слабоумный консерватор не в курсе того, что вместо твиттера теперь Х -- прибежище наиболее слабоумных консерваторов.
Аноним 26/05/24 Вск 10:07:33 3169410 377
>>3169380
Слабоумные либералы в твиттере, слабоумные консерваторы в X
Аноним 26/05/24 Вск 10:56:03 3169449 378
Kojikaep01010.jpg 173Кб, 1280x720
1280x720
>>3169269
Отвечает прям как типичный пидорастер.
Наверное язык/система программирования соответствует мышлению определенной категории людей.

Проще говоря язык от либерах для либерах.
С ценрализованной инфраструктурой, надзором от большого брата и с изменчивой семантикой чтоб никакое пропитое быдло грязными мазутными руками не могло разобраться в замысловатом творческом коде господина пидорастера.
Аноним 26/05/24 Вск 10:57:54 3169452 379
>>3169449
> *пропитый быдло-технарь
Аноним 26/05/24 Вск 11:16:08 3169464 380
>>3169449
>С ценрализованной инфраструктурой
то ли дело, есть 3-4 слабо совместимых между сбой компилятора, а нужные либы надо гуглить. И потом ебаться долгими вечерами, прилаживаю одно к другому, ммм...
Аноним 26/05/24 Вск 11:38:47 3169492 381
>>3169449
Да, я тоже удивлен, что выдача гопоты не отличается от стокового члена RUSTCEAN. Может быть, все это и не люди пишут?
Аноним 26/05/24 Вск 12:57:22 3169603 382
17099921125010.jpg 1425Кб, 1800x2400
1800x2400
>>3169464
>то ли дело, есть 3-4 слабо совместимых между сбой компилятора, а нужные либы надо гуглить
В карге лежат "либы" уровня tinyxml2 это влучшем случае, а в типичном уровня leftpad. То есть то что в нормальном мире либами и не считается, считается модулями.субмодулями.

Либы это libsdl libtorrent libopenssl libgtk3

Что касается несовместимости то это надо спрашивать у ллвм/шланг почему он изобрел велосипед с квадратными колесами, а не взял уже готовый Gimple на котором написаны фронтенды для гцц. Хотя я знаю ответ - авторы хотели и рыбку съесть и на хуй присесть запилить компилятор который и как HOT и как JIT работает, со вторым в итоге пососали хуев и теперь мы имеем странный компилятор который переводит языки в байткод (LLVM IR) который прожевывает аки виртуальная машина и выпукивает машинный код.
Аноним 26/05/24 Вск 14:19:21 3169776 383
>>3169603
В карге всё есть, не пизди.
>Либы это
>libsdl
wgpu/winit
>libtorrent
тут +- . при желании можно состряпать rust-only клиент на том, что есть, но пусть будет минус, хуй с тобой
>libopenssl
rustls заменяет openssl почти во всех крейтах, где нужно шифрование
>libgtk3
Прямо сейчас полно замен, если не требуется писать именно gtk/qt
Из последнего https://github.com/lapce/floem и https://github.com/audulus/rui - стильно, модно, реактивно.
Аноним 26/05/24 Вск 16:16:02 3169960 384
>>3169776
В плюсах например есть библиотека lodepng это примерно такая же small+fast библиотека-модуль которая легко подключается к проекту и собирается с ним, но это не замена всяким libpng, libjpeg-turbo итд. она не умеет в разность бит на цвет и не умеет в полный стандарт, не имеет симд и опенмп для обработки больших данных.

А ты предлагаешь трехколесные велосипеды в качестве альтернативы квадроциклу, вот поэтому раст и сосет.
Аноним 26/05/24 Вск 16:48:42 3170008 385
>>3169960
Используй биндинги, ноу проблем. Вообще, конкретно эта предъява к расту очень легко применима к любому другому языку не из мира C/C++ , причём в гораздо большей степени.
Если взять и посравнивать, то окажется, что по количеству либ, написанных на нём самом, раст всасывает разве что жабе/шарпу. А из компилируемых языков он вообще первый - это я говорю про вне С/С++ тусовочки, напомню.

Тогда уже говно-языки hare/zig/ocaml/fortran/nim/crystal/elixir/jai/mojo/.. - на них ведь тоже без биндингов к сям далеко не уедешь.
Аноним 26/05/24 Вск 17:31:40 3170053 386
>>3170008
>Используй биндинги, ноу проблем.
Ну да, когда растобляди переписали свою альтернативу, то дыряшка сразу не нужна, но когда чего-то не хватает, то обертки из швятого растокода над сишной либой - это не зашквар.

>Тогда уже говно-языки
>zig
Лол, что? Некоторые уже сишный код собирают через zic cc, да и в целом нет ни одного языка, где существовала бы такая легкая интеграция с кодовой базой на Си(ну кроме самого си).
Аноним 26/05/24 Вск 18:36:55 3170109 387
>>3170053
>когда растобляди переписали свою альтернативу, то дыряшка сразу не нужна
>когда чего-то не хватает, то обертки из швятого растокода над сишной либой - это не зашквар
Не вижу тут противоречия, но вижу скулёж брошенки.

>Некоторые уже сишный код собирают через zic cc
От этого сишный код не становится зиганутым кодом, зато появляется мешанина, написанная хуй пойми на чём. Вообще, этого говна, совместимого с обычной сишкой, было уже немало и ничем оно принципиально не выделялось, разве что добавляло немного сахарку. Те же обж-си, ди, ним.
Аноним 26/05/24 Вск 18:45:07 3170116 388
>>3170053
Зиг - это буквально "Хедеры - эта сложнааа", он ни одной проблемы не решает.
Аноним 26/05/24 Вск 19:00:27 3170128 389
Аноним 26/05/24 Вск 19:15:24 3170141 390
>>3170128
Я и сам не прочь перекатиться, но на что-то типа mojo, когда его допилят. Сейчас там даже тулинг развернуть - уже изрядно поебаться и не на всяком линухе работает при этом.
А zig в своей нише низкоуровневого байтоёбства пускай и ошивается, я не против.
Аноним 26/05/24 Вск 19:32:43 3170169 391
>>3170109
>Не вижу тут противоречия, но вижу скулёж брошенки.
А оно есть, и заключается в двойных стандартах шлюх.

>От этого сишный код не становится зиганутым кодом, зато появляется мешанина, написанная хуй пойми на чём
Сам придумал, сам оспорил? Никто и не говорил, что Си код превращается к код на зиге(хотя и такая функция есть), а говорилось лишь то, что зиг работает с кодовой базой на Си почти бесшовно, что увеличивает комфорт системной разработки в разы.

>>3170116
>он ни одной проблемы не решает.
Решает, и это видно по сообществу языка, куда приходят байтоебы, ибо видят в нем настоящую замену Си, а не веб макаки/питонобляди, которые в очередной раз пишут свою парашу. Удивительно, что язык, имеющий версию 0.12.0, подходит для системной разработки больше, чем "убийца си", который не один десяток лет пилится.

>>3170141
>Я и сам не прочь перекатиться, но на что-то типа mojo, когда его допилят.
Вот вся суть шлюх, т.е. беготня за current thing ради бытия в ТУСОВОЧКЕ. ИРЛ их нормальные люди обоссывают, поэтому приходится свою социальную жизнь и самовыражение в профессиональную область выносить.
>>А zig в своей нише низкоуровневого байтоёбства пускай и ошивается, я не против
Ну да, ведь раст же не для этого создавался.
Аноним 26/05/24 Вск 19:47:37 3170177 392
>>3170128
zig - это апофеоз линуксоидов-пердоль. Там есть сомнительные фичи, добеленные просто потому что так Андрюха решил. А есть куча фич, которые забракованы по надуманным причинам. Всё что не free по мнению гну-пидорасов - там под запретом, баги не фиксятся и откладываются на несколько релизов вперёд т.е. на годы как некритичные. Разрабы по большей части заняты не непосредственно языком/компилятором и улучшением юзерэкспириенса, а какой-то хуитой типа написания никому ненужных либ под MIPS и переписыванием сишного кода. Сборка чего-то сложнее хеллоу ворлда - кал собаки, надо литералли на любой пук писать "скрипты" сборки на самом зиге. Чего только стоит их "более удобный компилятор крестов", где вместо трёх строчек симейка надо написать портянку на зиге. При том что он ещё даже до хоть какого-то рабочего состояния не дошёл, а уже есть куча легаси либ, в том числе легаси документации и инфы из гугла, которая иногда только путает, т.к. сейчас уже поменяли некоторые места. Либ нет, а биндинги на сишные либы пишут руками и они везде неполные. Производительность сосёт, и у крестов, и у раста. У них написано "Call any function at compile-time", но это пиздёж и все компайл-тайм вычисления даже у крестового constexpr отсасывают по итоговой оптимизации. Можно бесконечно перечислять всё говно зига, по факту даже D на текущий момент более пригоден для кодинга, чем зиг.
Аноним 26/05/24 Вск 19:58:10 3170183 393
>>3170169
>видно по сообществу языка, куда приходят байтоебы,
>Ну да, ведь раст же не для этого создавался.
прикинь, не для этого. С ранних версий он развивался с прицелом на разработку браузерного движка servo, а там больше логики, чем непосредственно байтоёбства.

>беготня за current thing ради бытия в ТУСОВОЧКЕ
ну не совсем. То, что я перейду именно на mojo, это громко сказано, сперва пощупаю. Но и на раст я перешёл с питона, когда устал от его тормозов, gil и отсутствия типов. mojo пытается быть чуть более дружелюбным растом с питонячьим синтаксисом - сама идея мне норм.
Аноним 26/05/24 Вск 20:34:57 3170219 394
>>3170183
При этом какие ошибки в движке лисы были такие и остались.
Например джаваскрипт запущеный на странице из контекста расширения не производит никаких сообщений в консоль.

В хромом все это работает, но хромой сразу создавался с песочницей и многопотоком, а лиса обрастала им постепенно и там код из костылей, от которых они не хотят избавляться но хотят переписать их на что то более внятное что бы проще было поддерживать, но вот справляется с этой задачей раст это большой вопрос, где то читал жалобы какого то дяди из мозилы что в коде стало еще тяжелее разбираться, плюс сам фаирфокс из браузера который легко собирается на чем угодно, превратился в браузер который работает только на тех которые поддерживаются ллвм+растом (то есть китайские мипсы и эльбрус в пролете).
Аноним 26/05/24 Вск 21:56:38 3170260 395
Аноним 26/05/24 Вск 22:44:32 3170278 396
>>3170260
> third_party
> Давно под нами.
Кто вы? Ты один тут, поехавший.
Аноним 26/05/24 Вск 22:57:05 3170284 397
Аноним 27/05/24 Пнд 19:13:57 3171206 398
>>3170219
> превратился в браузер который работает только на тех которые поддерживаются ллвм+растом (то есть китайские мипсы и эльбрус в пролете).

Может это и была цель? Лешить конкурирующие платформы свободного браузера?
Аноним 27/05/24 Пнд 20:34:20 3171282 399
>>3171206
>конкурирующие платформы
>эльбрус

Лемао
Аноним 27/05/24 Пнд 22:21:47 3171374 400
>>3171206
Да нет, просто мозилой руководят лгбт пидорасы подсаженые гуглом. Мобильный браузер изговняли и фактически уничтожели, на слабом интернете он просто не открывает страницы, а свое собственное расширение я никак не могу поставить потому что оно не рекомендовано пидерастами-проверяющими.
Сижу на старом где пока еще можно на аддоны зайти и поставить тот же AudioOnly for YT

На десктопе тоже работа кипит, надо сделать так что бы у лисы не осталось никаких преимуществ перед хромокалом, вот ребята и стараются. Скоро платформонезависимый интерпритатор на плюсах выкинут чтоб нельзя было без портирования jit обойтись, а на хромом запилят.
Аноним 27/05/24 Пнд 23:58:23 3171434 401
>>3171374
Дружеское напоминание: за 99% закрученных в мире гаек ответственны традиционалисты-натуралы.
Готов спорить на деньги что мозилой руководят правопопулистские бумеры-натурасты.
Аноним 28/05/24 Втр 07:39:24 3171518 402
>>3171434
>Дружеское напоминание: за 99% закрученных в мире гаек ответственны
Во первых политики свою личную жизнь обычно не афишируют и какие они на самом деле ты не можешь знать. Католические попы в свое время тоже рьяно за целомудрие и нравственность боролись и надевали мальчикам железные клетки на хуи.

А во вторых речь кок раз про бестолковые креативные изменения.Кроме того один из директоров там точно сжв пидарок https://blog.mozilla.org/careers/pridezilla-a-resource-group-for-lgbtqia-mozillians-and-allies/
Аноним 28/05/24 Втр 16:42:15 3172043 403
>>3125439 (OP)
чо есть игровые дивжки или фреймворки с растом?

и чо по вакансиям? нихуя нет, я угадал?
Аноним 28/05/24 Втр 17:41:47 3172114 404
Аноним 28/05/24 Втр 20:41:02 3172296 405
>>3172114
ебать, а чо там в игре лаги такие?
они ее в жс что ли конпелировали чи шо
Аноним 28/05/24 Втр 21:13:23 3172338 406
Аноним 29/05/24 Срд 15:15:32 3172991 407
>wc -l cargo.lock
>9750
Ебанутые, блядь, пориджи. Добро пожаловать в мир нпм.
Аноним 29/05/24 Срд 15:17:01 3172995 408
>>3172991
Как мне жить с этой хуйнёй, если дома нет инторнета? Можно как-то, как в линупсе с сишечкой собрать либы и подпихнуть бинари для конпелятора?
Аноним 29/05/24 Срд 16:33:27 3173122 409
>>3172991
А еще удачи проверить сотни писькопакетов, которые рекурсивно тянутся к твоим зависимостям)
Безопасный язык для системной разработки, хули.
Аноним 29/05/24 Срд 16:42:31 3173138 410
>>3172995
Попроси своего парня нарезать двд со слепком crates.io, потом по инструкции поднимешь локальную репу.
Аноним 29/05/24 Срд 16:56:08 3173157 411
>>3172991
а у сиблядей по другому что ли? я тут QEMU на днях собирал из исходников - аналогично туева куча пидорских зависимостей

потратил минут десять, чтобы понять, что ему нужен python3-setuptools (сначала грешил на версию петухония)
Аноним 29/05/24 Срд 17:32:42 3173202 412
>>3172995
>Как мне жить с этой хуйнёй, если дома нет инторнета?
Ну возьми поплачь
Аноним 29/05/24 Срд 17:36:28 3173205 413
>>3173157
Блядь, просто пакеты ставишь, автоконф скрипты допирают, чего не хватает, 99.99% конпеляций работает с первого захода.
Аноним 29/05/24 Срд 17:39:42 3173212 414
>>3173205
а если пакеты нужны разных версий? в т.ч. версий, которые уже не поддерживаются и которые не найти?
Аноним 29/05/24 Срд 17:44:56 3173222 415
>>3173212
Высосал из жопы проблему.
Аноним 29/05/24 Срд 17:50:35 3173237 416
>>3173222
>>wc -l cargo.lock
>>9750
>Ебанутые, блядь, пориджи. Добро пожаловать в мир нпм.

>Высосал из жопы проблему.
Аноним 29/05/24 Срд 17:52:38 3173242 417
>>3173237
Поридж ёбаный, у меня в си под линуксом таких проблем нет в 99% случаев.
Аноним 29/05/24 Срд 17:58:14 3173245 418
>>3173242
УМВР 99%
плохо, надо дотянуть до сотки хотя бы
Аноним 29/05/24 Срд 18:00:06 3173248 419
>>3173245
Да заебись, надо постоянно качать ВСЕ нахуй исходники, ебанутые суки.
Аноним 29/05/24 Срд 18:09:06 3173262 420
>>3173248
почему постоянно? оно ж кэшируется, раз скачал и оно лежит себе у тебя на жестком диске. смекаешь?

папку target в проекте снес и оно снова все скачает при компиляции проекта
Аноним 29/05/24 Срд 18:27:15 3173288 421
>>3173262
У меня где-то 60 гигов весили в сумме проекты с растопарашей.
Аноним 29/05/24 Срд 18:42:23 3173321 422
>>3172991
Дедуля со своими два ядра два гига и adsl модемом хули ты тут забыл? Пиздуй в одноклассники
Аноним 29/05/24 Срд 18:52:12 3173340 423
>>3173321
>ADSL
>модем
а ты сам откуда такие аббревиатуры и слова знаешь? может тебе самому в одноклассники пиздовать надо?
Аноним 29/05/24 Срд 19:50:04 3173457 424
Аноним 29/05/24 Срд 19:55:49 3173467 425
>>3173288
Вот да, это пиздец.
Обоссаное консольное приложение 4гб исходников+объектных файлов.

В целом язык очень нишевый, точно не десктопный ибо не нужон ваш ffmpeg/wxWidgets скоро на расте велосипед подъедет, а скрипты и luajit вообще выкиньте, пишите на расте и радуйтесь звучит как аргумент из дурки. Может быть серверные веб приложения вот это все где сейчас джава доминирует, нода как раз не шмагла по перфомансным причинам.
Аноним 29/05/24 Срд 20:10:46 3173475 426
>>3173457
> что то связанное с символами экранирования.
Майкрософту пора принять решение и отказаться шиндоус путей
просто перейти на юникс/позикс-гибрид как мак и все.
Давно бы уже могли это сделатьб я уверен они сами уже наелись говна с этими спецсимволами и кодировками.
Аноним 30/05/24 Чтв 08:10:25 3173842 427
>>3173467
Раст, это язык от программистов для программистов. А программисту нужно что? Контроль. А для контроля нам надо, чтобы всё од рукой. Вот о дефолту там и идёт куча дебажных символов и проч. Релизную сборку делаешь по инструкции https://github.com/johnthagen/min-sized-rust и будет тебе щастье
Аноним 30/05/24 Чтв 12:05:26 3174075 428
>>3173842
>это язык от программистов для программистов. А программисту нужно что? Контроль.
Тут не поспоришь, однако обычно когда один "программизд" пишет что-то для другого, то в итоге появляется форк. Так как первый понимает "контроль" когда на тебя надевают ошейник и ведут на полосу барьеров и препятствий которые можно проходить только единственно правильным способом, тогда как второй свой собственный контроль над программой а не вот это вот все.

Обычно языки создают люди с академическим образованием и мышлением,
основывая их на законах и постулатах-парадигмах, поэтому обычно в них таких проблем нет.
Аноним 30/05/24 Чтв 12:27:09 3174129 429
>>3174075
Попробуй аду и хачкель. С ады я вообще охуел, насколько там всё неудобно. Зато академично, что ниибаца.
Аноним 30/05/24 Чтв 13:21:01 3174216 430
>>3173842
> будет тебе щастье
Под виндой чтоб опуститься ниже 100 кб только no_std врубать. Хоть обосрись, но голый main даже без использования std сожрёт 100+ кб, lto делает ровно нихуя.
Алсо, с контролем в расте как раз всё очень плохо. Иногда ощущается что ограничений больше чем в питоныче.
Аноним 30/05/24 Чтв 13:28:12 3174227 431
>>3174075
> Обычно языки создают люди с академическим образованием и мышлением, основывая их на законах и постулатах-парадигмах
Ну вот макаки придумали ООП, там явно мышление не участвовало в процессе созидания. Мартин SOLID придумал, но за 20 лет никто так и не смог чётко сформулировать что это такое, все по разному объясняют значение этих пяти букв. Хотя там уже первая буква - целый мем, определяющий всё легаси-говно.
Аноним 30/05/24 Чтв 13:30:27 3174232 432
>>3174216
>Иногда ощущается что ограничений больше чем в питоныче.
врубай ансейф и вперёд.
Аноним 30/05/24 Чтв 13:41:58 3174241 433
Хочу написать свой докер/кубер/хелм и рубать мильярды, ваше говно для этого подойдёт?
Аноним 30/05/24 Чтв 13:45:34 3174245 434
>>3174241
Пиши на петоне. Это люди небольшого ума придумали писать инфраструктурные вещи на комплируемом языке.
Аноним 30/05/24 Чтв 13:58:00 3174255 435
17105760317180.jpg 36Кб, 320x320
320x320
>>3174129
> ада
> академично
Сорт военно-инженерной академии
Аноним 30/05/24 Чтв 13:59:03 3174257 436
>>3174245
Объясни как рубисту, неужели нет преимущества у написания инфраструктурной хренотени на гошечке или расте? В вебе мне понятно, ты упрешься в пропускную способность намного раньше процессорного времени, а тут во что?
Аноним 30/05/24 Чтв 14:01:07 3174259 437
>>3174257
В количество сервисов, которые надо запустить.
Аноним 30/05/24 Чтв 14:02:49 3174263 438
>>3174259
Разумно, спасибо. Для чего тогда раст? Что на нем пишут вообще в повседневности?
Аноним 30/05/24 Чтв 14:05:53 3174270 439
>>3174259
Так сами сервисы могут быть на чем угодно, в том числе и на расте и на говоланге. Но зачем скедулер для этих сервисов на голанге? Особенно если ты не клауд провайдер.
Аноним 30/05/24 Чтв 14:12:28 3174282 440
>>3174232
Ансейф не спасёт от боровчекера и типов.
Аноним 30/05/24 Чтв 14:39:31 3174313 441
>>3174263
Серверы, базы данных, рендереры, криптобиржы
Аноним 30/05/24 Чтв 15:19:13 3174360 442
>>3174257
>нет преимущества у написания инфраструктурной хренотени на гошечке или расте?
Чувак, ты про вообще? Вся инфраструктурная хренотень написана на go. Docker написан на go. ArgoCD написан на go. Kubernetes написан на go. Istio написан на go. Helm написан на go. Prometheus написан на go. Ну и так далее.
Аноним 30/05/24 Чтв 15:26:39 3174369 443
>>3174360
Так где тут преимущества? Один дебил начал, другие за ним стали повторять...
Аноним 30/05/24 Чтв 16:34:18 3174455 444
>>3174360
Я знаю, что оно на го всё написано. Я пришёл в чат растеров, узнать, подходит ли их язык для такого, просто в рамках своего личного исследования его применимости, которое я провожу перед тем, как решить, стоит ли ковыряться в расте или возвращаться к котлину, который мне поможет по работе, но к которому душа не лежит. Или вот всё бросить и дрочить го. Я вообще из веба/руби/питона, для меня это всё чужое и непонятное, а тут вон чувак говорит, что инфраструктурные штуки, которые мне нравятся, проще на питоне писать. Я и спрашиваю, какого хуя.
Аноним 30/05/24 Чтв 16:50:32 3174478 445
>>3173321
Ну так пишите на джавахуйне тогда хули вы лезете блядь.
>>3173842
>А программисту нужно что? Контроль
Ну так на си пишите хули.
>>3174263
Криптопараша на расте.
>>3174455
Раст тебе нахуй не нужон на самом деле, если ты приходишь в чат с вопросом для чего раст.
Аноним 30/05/24 Чтв 17:23:21 3174514 446
Аноним 30/05/24 Чтв 17:41:20 3174544 447
>>3174360
Эластик написан на джаве, Логстэш написан на джаве, ДинамоДБ - джава, Кафка - джава, Рэббит - она же, Дженкинс - тоже
Ява теперь неебаться крутой язык для инфраструктуры оказывается
Аноним 30/05/24 Чтв 17:53:24 3174563 448
>>3173288
К слову, так было пару лет, когда я на растопараше писал, сейчас похоже всё не так, карга пакеты вроде в .cargo складывает и появилась какая-то хрень - локальная registry. Алсо, если учитывать, что раньше всё собиралось из исходников, потому что АБИ был нестабильным, то выходит они до сих пор аби не стабилизировали?
Аноним 30/05/24 Чтв 19:36:47 3174671 449
>>3174227
ООП это программирование в парадигме объектов, их свойств и их методов.
У тех кто его понимает не возникает вопросов "что это такое".
Аноним 02/06/24 Вск 13:44:36 3177665 450
>>3174227
ООП дало возможность пачке макак работать над одним проектом не мешая друг другу.

Старая шутка про - один программист может написать программу за месяц, а двое туже программу за два месяца - была актуально именно над процедурными языками.
Контракты и инкапсуляция, позволяет не наступать друг другу на пятки, а IoC дало еще возможность это тестировать.

То что эволюция пошла взад, виноваты педерасты.
Аноним 02/06/24 Вск 14:38:21 3177755 451
>>3177665
Проблема в том что этих макак эволюция обошла стороной. ООП хоть и задумывался как помощь братьям нашим меньшим, но так и остался инструкцией для умственно отсталых.
Аноним 03/06/24 Пнд 04:01:13 3178461 452
> let image = DynamicImage::from_decoder(PngDecoder::new(&sum[..]).unwrap()).unwrap();

Есть такая строчка. В &sum[..] лежит исходники картинки. С image все ОК, с ним можно работать (кропать, сохранять на диск и т.д.).

Вопрос: как сделать обратное - из image получить sum[..]. Всякие as_bytes не дают желаемого. Нужно именно кодировать обратно.

Использую image = "0.24.6"
Аноним 03/06/24 Пнд 08:21:10 3178522 453
Аноним 03/06/24 Пнд 10:43:07 3178642 454
>>3178461
>Нужно именно кодировать обратно.
Ну так и поищи по слову encode в документации. Там же сразу по этому слову найходитя write_to() и write_with_encoder().
Аноним 03/06/24 Пнд 11:39:39 3178686 455
Хочу с перла перекатиться, уже совсем неживой язык. И бек писать. Лучше го или раст? Вроде один простой, второй интересный
Аноним 03/06/24 Пнд 11:50:19 3178693 456
>>3178686
Выбирай go
К тому времени когда станет уже неинтересно, у тебя по крайней мере будет работа
Аноним 03/06/24 Пнд 14:00:39 3178863 457
>>3177665
>Контракты
>инкапсуляция
>IoC
В итоге додики сували это всюду и везде, получилось больше во вред.
>>3178686
Один язык для написания библиотек и криптопараши, второй для бэка/всякой сетевой 🌶нюшки, какое тут "или"?
Аноним 03/06/24 Пнд 15:54:50 3179024 458
>>3178522
>>3178642
Спасибо, тогда вопрос такой.
>let mut arr = [0u8; 400000];
>let buffer = BufWriter::new(arr.as_mut()); >image.write_with_encoder(PngEncoder::new(buffer)).expect("TODO: panic message");

Нужен фиксированный размер arr. Если указать маленький, то выдаст failed to write the buffered data. Если поставить заведомо больше, то failed to write whole buffer. Вычислить необходимый размер arr не получается. Можно ли как-нибудь сделать BufWriter динамического размера.

В валидности конструкции не уверен, подглядел на stackoverflow.
Аноним 03/06/24 Пнд 16:13:24 3179043 459
алгоритмы на ра[...].mp4 1482Кб, 640x360, 00:00:43
640x360
Коллеги, жизненно?
Аноним 03/06/24 Пнд 16:49:18 3179117 460
>>3179024
Сделай буфер вектором, а не массивом, оберни его в BufWriter и передавай так в DynamicImage. Ты же сам по русски написал что тебе надо, остаётся просто перевести это в термины раста.
Аноним 03/06/24 Пнд 18:06:33 3179194 461
>>3179043
Дети, которых не учили расту, а учили плюсам и паскалю, не могут что-то сделать на расте. Шок, сенсация.
Аноним 03/06/24 Пнд 18:14:32 3179205 462
>>3179117
друг мой любезный, если бы все было так просто, я бы тут не спрашивал
обернуть в BufWriter можно только типы Sized
Аноним 03/06/24 Пнд 18:21:20 3179210 463
>>3179205
> ебётся с несовместимыми типами
Добро пожаловать в раст, так будет всегда.
Аноним 03/06/24 Пнд 18:28:54 3179213 464
>>3179024
>>3179117
>>3179205
>>3179210
Ладно, к своему стыду получилось сделать так:
>let mut arr = vec![];
>let _ = image.write_with_encoder(PngEncoder::new(&mut arr)).expect("TODO: panic message");

Но правда один 🌶 после encoder != до decoder
Аноним 03/06/24 Пнд 18:32:06 3179222 465
>>3179205
Вектор имплементирует Write:
https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-Write-for-Vec<u8,+A>

Твоему PngEncoder'у нужен контейнер, имплементирующий Write:
https://docs.rs/image/latest/image/codecs/png/struct.PngEncoder.html#method.new

Просто передай туда мутабельную ссылку на вектор, буфер не нужен, меня наебал комментарий в описании библиотеки.
Аноним 03/06/24 Пнд 18:33:33 3179226 466
>>3179213
А, ты уже сам догадался.

У PNG есть параметры компрессии, они возможно не совпадают.
Аноним 03/06/24 Пнд 20:21:57 3179326 467
>>3179043
https://www.youtube.com/watch?v=o111yYPqLHU

таймкод лень искать
патлатый даун (книжки пишет и преподает в какой-то параше) там говорит, что студентик нынче туповатый пошел и такую вещь как указатель впринципе понять не способен из-за физических ограничений мозга
Аноним 03/06/24 Пнд 20:57:02 3179391 468
>>3179326
>студентик нынче туповатый пошел и такую вещь как указатель впринципе понять не способен из-за физических ограничений мозга
Как будто раньше студентик понимал, и поэтому вызывал маллок по поводу и без. Наверное потому что ему вот такие бородатые клованы рассказывали про поинтеры, но не рассказали про то как работают комплюктеры.
Аноним 03/06/24 Пнд 21:51:58 3179410 469
>>3179391
>>3179326
Я хз как можно не понять концепцию указателей. Сейчас речь идет не о сложных кейсах, когда происходит каша из указателей на массив указателей на указатели на функцию и т.д, а о самых примитивных случаях, которые преподают в ВУЗике.
Если студент не в состоянии осилить такую простейшую абстракцию, то о чем речь? Он и остальные абстракции не поймет.
Аноним 03/06/24 Пнд 22:49:10 3179458 470
>>3179043
Есть такое. По прежнему говорю, раст не сложный в обучении, он неудобный для меня.
Аноним 03/06/24 Пнд 23:01:53 3179466 471
>>3179326
Ой да ладно, очередное раньше было лучше, раньше были умнее. Это в 90е С++ был основой для всего, а сейчас область си настолько сузилась, что это ваше системное программирование нафиг не мотивирует никого, вот люди с трудом жуют.

Запомните, ошибка в обучение лежит на преподавателе, его способности мотивировать и обучать. Вот и представьте компетентность этих людей.
Аноним 03/06/24 Пнд 23:06:51 3179469 472
Аноним 03/06/24 Пнд 23:09:42 3179472 473
>>3179469
Ну к Столярову я бы с опасением относился, учитывая какие пассажи он прогоняет и тот факт, что он нихрена не работал в индустрии.
Самые полезными и толковыми преподами в универе были чуваки с многолетним опытом в индустрии(писатели телекоммуникационных систем, например), а не академические крысы.
Аноним 04/06/24 Втр 05:16:37 3179591 474
>>3179410
>в 90е С++ был основой для всего
Зумерок, спок.
>а сейчас область си настолько сузилась,
У зумерка с++ = си
>Запомните
Ещё и учит кого-то, 🍑ц.
Аноним 04/06/24 Втр 05:35:50 3179598 475
>>3179210
В свое время дропнул паскаль из за этого. Не язык, а какой-то надзиратель хватающий тебя за загривок и окунающий в бочку с водой, потом вытаскивающий и орущий в ухо: "ДЕЛАЙ КАК Я СКАЗАЛ, САЛАГА! ДУХ! ЧЕРВЬ!", снова окунающий, снова орущий и так постоянно. Какое же мерзкое душнилово, и это при том, что паскаль позволяет свободно в указатели и даже ассемблер. А тут 30 лет спустя изобрели такую же залупу "руст", только в десятки раз хуже, и еще находятся особо одаренные это нахваливающие. Я бы к такому выродку не подошел на пушечный выстрел, это уже за пределами любой деградации, литеральные черви, не люди.
Аноним 04/06/24 Втр 09:05:30 3179664 476
>>3179410
>Я хз как можно не понять концепцию указателей.
Если ты понимаешь концепцию указателей значит ты не понимаешь что такое указатели вообще. Это полу-ассемблерная семантика, а концепция языка Си это абстрактный от архитектур визуальный ассемблер.
Понимать "указатели" не понимая как работает железо, это засовывать себе в анус очки, как мартышка из басни, полагая что от этого улучшается зрение.

Сам по себе указатель это просто метка для подстановки комманд лоад/стор, самая важная часть в указателе это размер данных к которым ты по нему обращаешься (то есть тип). Если супер-программизт нахуевертил гигаструктуру не особо заботясь о размерах сегментов и расположении данных, то хули толку понимать поинтеры.

Еще хуже обстоит дело с executable поинтерами, еще на заре взлета Си будущие бородатые деды с терминалами понимали что это хуевая затея и ей не место в языках высокого уровня, поэтому изобрели ООП у которого в памяти создается объект с которым ассоциированы функции через метоинформацию. Не нужны больше статики и функшн поинтеры казалось бы, но пришла асинхронщина с лямбдой в калбеке и сказала объектам подвинутся.
Аноним 04/06/24 Втр 11:48:50 3179808 477
>>3179664
>поэтому изобрели ООП у которого в памяти создается объект с которым ассоциированы функции через метоинформацию.

То есть, через vtable.
Аноним 04/06/24 Втр 12:39:32 3179886 478
>>3179664
>но пришла асинхронщина с лямбдой
Это уже не си, а высокоуровневый абстрактный кал который вон чел в видео выше называет "не-фоннеймановским" программированием, наравне с лиспом и прочими хаскелами/растами, короче соевые выебоны. Да, соя была издавна, тот же лисп, но тогда она была малоизвестной нишей.
Аноним 04/06/24 Втр 13:38:30 3179991 479
>>3179664
>концепция языка Си это абстрактный от архитектур визуальный ассемблер
Называть си ассемблером я бы не стал. Компилятор может переставлять и выкидывать строки как ему вздумается. Ради интереса открыл сейчас ISO/IEC 9899:2018, там 10 страниц (408-418) с перечислением Undefined Behavior. Все UB — это картбланш компилятору на любую оптимизацию.
Аноним 04/06/24 Втр 13:53:37 3180029 480
>>3179991
> Компилятор может переставлять и выкидывать строки как ему вздумается
Как и CPU, лол. Учи модели памяти чтобы не быть батхёртом.
Аноним 04/06/24 Втр 14:08:36 3180055 481
>>3180029
>Ваш ассемблер не ассемблер.
Ясно всё с тобой. Иди со своей казуистикой в /b/, там все твои друзья.
Аноним 04/06/24 Втр 14:16:13 3180072 482
>>3180055
Ну так-то он прав, в x86 инструкции могут не в порядке машинного кода выполняться и даже одновременно в одном такте, если соблюдаются условия для этого.
Аноним 04/06/24 Втр 14:22:17 3180093 483
>>3180072
Так я что, спорю что-ли? Какое отношение это имеет к моему утверждению, что си и ассемблер это разные вещи?
Аноним 04/06/24 Втр 14:27:43 3180107 484
>>3179991
>Все UB — это картбланш компилятору на любую оптимизацию.
Не совсем. Компилятор всегда оптимизирует с позиции что UB недостижим. Т.е. если у тебя есть if (foo) bar() else UB, компилятор это cоптимизирует до bar().

Оптимизации работают с позиции что разработчик проверил что все возможные входные значения не приводят к UB, а значит возможные значения которые триггерят UB можно не учитывать при оптимизациях.
Аноним 04/06/24 Втр 14:48:18 3180148 485
>>3179591
Да не трясись ты так, Столяров.
Аноним 04/06/24 Втр 14:51:09 3180152 486
>>3180072
Ещё про чтение и запись в память через кэши, с их протоколом когерентности, из-за которого некоторые изменения до памяти вообще не доходят.
Аноним 04/06/24 Втр 16:43:15 3180273 487
>>3179808
Вообще я говорил про вот такое:
myStruct->callback = &my_function;
хmyStruct->callback();
То есть указатель не просто с адресом функции которую надо вызвать, а прыжок в конкретное место на стеке со статик локалами.

А vtable это просто vtable[][] = { {"funct_name", virtual_call1}, ... }
И нужны они только для виртуальных методов, для которых заранее неизвестно какой вариант надо вызывать.

>>3179886
Он шизик и гик, не слушай его.
Большинство кода на Си работают как раз не на фоннемоновских архитектурах, потому что все остальные языки предполагают что у нас безграничная куча памяти, как дедушка фоннейман завещал.
И возможно как раз тот самый вызов подпрограммы по указателю на нефоннемоновских архитектурах выглядит не так уж 🍑цово, микроконтроллеры не запускают программ извне и память у них набортная без всяких mmu.

>>3179991
>Компилятор может переставлять и выкидывать строки как ему вздумается.
Не совсем понял как это относится к разговору, yj да в компиляторе есть агрессивные оптимизации которые могут сломать программу, обычно в документации указано какие именно, например проигнорировать NaN INF и прочую математическую хуету или сосчитать результат заранее и вместо вызова подставить результат.
А вот есть ли оптимизации заставляющие выкинуть обращения по указателю, которые расставил по коду нерадивый программист я не уверен.
Аноним 04/06/24 Втр 16:57:53 3180290 488
>>3180273
> А вот есть ли оптимизации заставляющие выкинуть обращения по указателю, которые расставил по коду нерадивый программист я не уверен.
Компилятор делает много оптимизаций на вычислении границ возможных значений. Если он увидит что в какой-то указатель на функцию запись делается всего в одном месте и одной функции, он может сделать везде прямой вызов этой функции.
Аноним 04/06/24 Втр 18:04:01 3180388 489
В Rust есть некий "конструктор парсеров"?) Чтобы парсер не с нуля писать, а из готовых шаблонов, если готового в природе нет.
Аноним 04/06/24 Втр 18:10:43 3180396 490
Аноним 04/06/24 Втр 18:21:06 3180413 491
>>3180290
Компилятор не делает никаких оптимизаций, пока ты их не включишь. Тем более агрессивные с выкидыванием оригинального и подстановкой оптимального.

И в абсолютно любом случае он очень ограничен в ситуациях когда неизвестно на какую область памяти будет смотреть тот или иной указатель, ведь на этапе компиляции ее просто нет.
Поэтому и нужны всякие метки вроде restrict
Аноним 04/06/24 Втр 18:32:44 3180432 492
Аноним 04/06/24 Втр 18:32:55 3180433 493
>>3180413
> неизвестно на какую область памяти будет смотреть тот или иной указатель
Самое смешное что именно компиляторописатели придумали dangling pointer, про который ни слова не писали в стандарте и только в недавних версиях добавили. Авторы стандартов не предполагали что UB для компиляторов станет форточкой, через которую будут протаскивать пианино, в попытках оптимизировать всё на грани поломки кода. И старая сишка не была такой опасной, отстреливающей жопу при неверном движении с О2.
Аноним 04/06/24 Втр 18:33:36 3180435 494
>>3180396
>after 3 years
типичный неосилятор
Аноним 04/06/24 Втр 18:34:50 3180436 495
>>3180396
Я тут ковырнул одну мелкоигру на анриале4 и просто охуел с того сколько оно все весит (400мб) и как медленно работает на моем древнекомпе.

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

А потом всякие клованы нихуя не понимающие заявляют что надо с юнити на анриал тарков или WOT с плюсового дагора переписать и будет заебись.
Аноним 04/06/24 Втр 18:35:22 3180439 496
>>3180432
нет, pet-проект)
а пачиму вы спрашиваете?)
Аноним 04/06/24 Втр 18:47:17 3180449 497
Аноним 04/06/24 Втр 18:52:17 3180454 498
Аноним 04/06/24 Втр 19:35:26 3180491 499
show.png 1Кб, 256x50
256x50
show.png 1Кб, 256x50
256x50
>>3180396
Судя по комментам, эта статья вызвала всплеск антологичных эмоций у людей работающих в той же области. Гейдев на расте - все.
Аноним 04/06/24 Втр 21:15:59 3180604 500
image 573Кб, 3648x1988
3648x1988
>>3180413
>>3180433
Компилятор без оптимизаций никто не использует.

Другое дело, что не всё так страшно на самом деле и компиляторписатели не делают всё возможно ради оптимизаций. Вот пример. Я конечно может в нём ошибаюсь, но по-моему компилятор мог смело выкинуть в нём строку, печатающую 'Hello', потому что условие приводящую к её выполнению является UB.
Аноним 04/06/24 Втр 21:24:36 3180618 501
>>3180604
> никто не использует
Я помню в нулевых, когда gcc пытался косплеить ядерный полигон, а LLVM ещё не превратился в юзабельный продукт он и сейчас с трудом юзабельный, на пердоликсе некоторый софт можно было собирать только в О1, в О2 тебе отрывало жопу.
Аноним 05/06/24 Срд 08:35:20 3180966 502
>>3180388
У триситтера есть биндинги в растoпарашу.
>>3180604
>Пик
Вот поэтому раст в хуилион раз проще няшной.
Аноним 05/06/24 Срд 09:03:48 3180980 503
>>3180604
> компилятор мог смело выкинуть в нём строку, печатающую 'Hello'
Нет, у тебя там нет никакого UB в выводе строки. То что ты стек захуячил - это не UB и вообще к строке не имеет отношения.
Аноним 05/06/24 Срд 09:30:46 3181002 504
image.png 49Кб, 732x572
732x572
В Rust есть pattern matching для строк? По равенству есть, да. А по шаблонам? Или просто "содержит подстроку"?
Аноним 05/06/24 Срд 09:44:16 3181024 505
>>3181002
чтобы вместо _ if строка.contains(подстрока) => {}можно было написать, например, "подстрока" => {}

в числах же есть диапазоны, хули со строками все так убого?
Аноним 05/06/24 Срд 11:52:23 3181195 506
>>3180980
В самом выводе строки нет. Но я писал
>условие приводящую к её выполнению является UB

Читаем стандарт и видим, что x не может быть 5 и более, иначе в строке #5 будет UB. Поэтому компилятор мог бы с чистой совестью выкинуть условие в строке #6, потому что оно принципиально должно быть недостижимо.

An array subscript is out of range, even if an object is apparently accessible with the given subscript (as in the lvalue expression a[1][7] given the declaration int a[4][5]) (6.5.6).
Аноним 05/06/24 Срд 12:53:06 3181250 507
1611364709228.png 62Кб, 1161x782
1161x782
>>3181195
> мог бы
Не мог, массив это сахар над указателем. Пикрилейтед абсолютно валидный код без UB. array subscript - это обращение по индексу. Индекс может быть любым.
Аноним 05/06/24 Срд 13:07:09 3181265 508
image 549Кб, 1403x587
1403x587
>>3181250
Я тебе цитату привёл из стандарта с указанием номера статьи, где написано что это UB...

Вот сам параграф, если ты не умеешь в гугл.
Аноним 05/06/24 Срд 13:24:26 3181293 509
>>3181265
Ты сам видишь что там написано? Результат обращения UB, всё. UB значит что там может быть что угодно, стандарт не определяет что, но это не значит что туда нельзя обращаться. Компилятор никак не следит куда ты обратился, и уж тем более не оптимизирует как ты мечтаешь.
Аноним 05/06/24 Срд 13:57:35 3181329 510
image 554Кб, 3648x1804
3648x1804
>>3181293
>но это не значит что туда нельзя обращаться
Но это и не значит, что туда можно обращаться. Компилятор вправе сделать вывод, что программист заранее всё продумал и таких обращений не будет. После чего выкинуть соответствующие инструкции. И самое интересное, что именно так он и поступает.

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

Давай посмотрим на другой UB, который компилятор действительно эксплуатирует. Как видно результаты выполнения программы для -O1 и -O2 кардинально различаются. Вроде все значения помещаются в нужные типы. Почему так получается? Мой вариант объяснения происходящего:

При умножении x и y происходит неявное преобразование их к int (знаковое целое). Переполнение при умножении знаковых целых это UB. Именно это и происходит когда x = y = 0xFFFF. Но компилятор посчитал, что программист не будет передавать в функцию такие значения, которые приводят к переполнению. Поэтому при более высоком уровне оптимизации он использовал инструкцию jle (сравнение знаковых целых) вместо jbe (сравнение беззнаковых). Хотя казалось бы сравнивал он беззнаковую переменную и константу.


Честно признаюсь не очень понимаю, почему в этом случае применяется такая агрессивная оптимизация, которая ломает выполнение программы, ведь явного выигрыша она не даёт. При этом догадываюсь, почему нет агрессивной оптимизации в случае выхода за границы массива (сломается весь типичный сетевой код нахрен, в котором это используется намеренно, когда объявляется массив длинной 1 в конце структуры, описывающий пакет). Одно знаю точно — в си слишком дохера неявностей, которые приводят к неожиданным результатам. В этом плане раст к ассемблеру ближе будет, лол.
Аноним 05/06/24 Срд 14:18:49 3181351 511
image 930Кб, 3648x1804
3648x1804
Кстати, смеха ради переписал тот же пример на расте. Как видно, при -O3 результат всё ещё странный, зато при -O0 мы ловим панику. За что раст мне и нравится.
Аноним 05/06/24 Срд 14:51:13 3181397 512
Что-то отвлёкся с этими UB в си от темы треда.
>>3181002
Кейсы в match должны быть известны на этапе компиляции. foo.contains и шаблоны под это ограничение не подходят, зато if-guards как в твоём примере, позволяют обойти это ограничение. Может поменяют в будущем, т.е. сделают сахарок над if-guard'ами.
Аноним 05/06/24 Срд 14:56:09 3181402 513
Ну и вдогонку — ты можешь сделать наоборот. Т.е. регэкспом вытащить подстроку из foo и матчить её.
Аноним 05/06/24 Срд 16:15:37 3181476 514
>>3180604
Ну во первых test у тебя публичная функция и просторов для оптимизации в ней нет, оптимизации надо смотреть там где ее вызывают, то есть в main, где по идее можно все заранее сосчитать и выкинуть нахуй вызов функции.

Что касается UB, то это уже выходит за рамки возможностей компилятора, компилятор не разбирается в твоем кгновнокоде,
Хотя для отлова таких простых ошибок как у тебя в компиляторы добавили опцию -Wall, в рантаймных случаях только валгринд или эльбрус в режиме -mptr128.
И это не UB это ошибка
Аноним 05/06/24 Срд 16:48:06 3181502 515
>>3181329
>В этом плане раст к ассемблеру ближе будет
Ну прост надо Си хорошо знать и не будет проблем, поэтому он и сложный.
>>3181402
Мне кажется, ему взять вездесущую либу ахо karasique для этого, если там есть прегенерация.
>>3181476
>Хотя для отлова таких простых ошибок
Дядь, там уб-санитайзеры в гцц уже завезли лет 10 назад.
Аноним 05/06/24 Срд 16:56:26 3181505 516
1627524011235.png 166Кб, 1272x721
1272x721
1609032229922.png 350Кб, 2110x1171
2110x1171
1647978479653.png 398Кб, 2272x1178
2272x1178
>>3181329
> вправе сделать вывод
Нет. Неконстантные бранчи никогда не будут удалены, это стандарт запрещает.
> на другой UB
И нахуй ты это притащил? До этого вообще другая ситуация была, ты 🍑л что бранч будет оптимизирован из-за левого UB.
> jle (сравнение знаковых целых) вместо jbe
GGC всегда был кривым говном в О2. В шланге и msvc всегда будет корректно считать. Если как ты сделать, то он с оптимизациями вообще при компиляции посчитает, если через аргументы, то всё равно не будет переполнения. Без оптимизаций тоже нет переполнения.
>>3181351
> выдал неправильный результат
> За что раст мне и нравится.
Лол.
Аноним 05/06/24 Срд 17:02:59 3181513 517
>>3181250
Ну вот это UB однозначно, ты вылазишь в стек процедуры x86й машины
>это сахар над указателем.
Это барьер от долбоебов с ружьем направленным себе в ноги.
Аноним 05/06/24 Срд 17:07:55 3181519 518
>>3181502
>Дядь, там уб-санитайзеры в гцц уже завезли лет 10 назад.
Куда именно "в гцц" ?
Ну и адрес санитайзер это уже совсем про зоонаблюдения за указателями.
Аноним 05/06/24 Срд 17:11:12 3181524 519
Аноним 05/06/24 Срд 17:38:05 3181556 520
image 267Кб, 1501x399
1501x399
image 432Кб, 3648x1804
3648x1804
>>3181476
>оптимизации надо смотреть там где ее вызывают, то есть в main
Оптимизации заканчиваются на границе функций.
>Что касается UB, то это уже выходит за рамки возможностей компилятора, компилятор не разбирается в твоем кгновнокоде
Разбирается, я что зря этот пример показал?
>Хотя для отлова таких простых ошибок как у тебя в компиляторы добавили опцию -Wall, в рантаймных случаях только валгринд или эльбрус в режиме -mptr128.
В данном "простом" случае ничего из этого не поможет. ну ладно, проверял только -Wall.
>И это не UB это ошибка
Это UB, пример которого буквально приведён в определении UB.

>>3181505
>И нахуй ты это притащил?
Чтобы показать, как компилятор из-за UB и оптимизаций ломает программу.

>Нет. Неконстантные бранчи никогда не будут удалены, это стандарт запрещает.
> В шланге и msvc всегда будет корректно считать.
Правда?
Аноним 05/06/24 Срд 17:52:22 3181569 521
image 438Кб, 3648x1804
3648x1804
image 587Кб, 3648x1804
3648x1804
О, это я ещё опечатку допустил, кекв, 0 пропустил при сравнении, gcc тоже одну ветку нахер выкидывает и ассемблерный код ещё проще оказывается, безо всяких сравнений.

msvc кстати тоже выкидывает, но код генерирует хуже.
Аноним 05/06/24 Срд 17:57:49 3181579 522
>>3181556
>>3181569
Возьми реальный компилятор, а не онлайн-парашу. Я тебе уже кинул скрины, оно при всём желании не ломается, а при включенных оптимизациях он оптимизирует нахуй вообще весь код кроме принта.
> msvc кстати тоже выкидывает, но код генерирует хуже
Хотя бы потому что у него нет аргумента -О2. Хватит уже траллить тупостью.
Аноним 05/06/24 Срд 18:03:45 3181593 523
>>3181556
>В данном "простом" случае ничего из этого не поможет. ну ладно, проверял только -Wall.
Потому что в Wall и Wextra не все флаги, но да, подобное не ловится через линтер -Wconversion, но через -Warith-conversion есть (но он слишком шумный).
Аноним 05/06/24 Срд 18:12:36 3181612 524
image 226Кб, 1950x1358
1950x1358
image 592Кб, 3648x1804
3648x1804
>>3181579
Ну взял, что дальше?

>Я тебе уже кинул скрины
Я вообще не понял, что за скрины ты мне кинул. Скрины отладчика, в котором запущен код без оптимизаций? Ну так я весь день и пишу, что одна и та же программа в зависимости от оптимизаций может работать совершенно по разному.

>Хотя бы потому что у него нет аргумента -О2
Похоже в винде (или в msvc) /O2 и -O2 это одно и то же. Проверить сам не могу, верю годболту. Если ввести откровенную чушь, msvc даёт варнинг.
Аноним 05/06/24 Срд 18:45:30 3181652 525
Аноним 05/06/24 Срд 18:48:43 3181657 526
>>3181556
> Оптимизации заканчиваются на границе функций.
>Разбирается, я что зря этот пример показал?
Сперва ты мне показался грамотным, а теперь кажшься тролем
>Это UB, пример которого буквально приведён в определении UB.
Там написано про какой то array object
int arr[] ={ 1, 2, 3} - это не array object, запись куда-то запределы кучи это по большому счету сегфолт.
Аноним 05/06/24 Срд 18:54:20 3181668 527
image 201Кб, 917x432
917x432
Аноним 05/06/24 Срд 19:03:04 3181685 528
>>3181657
>Сперва ты мне показался грамотным, а теперь кажшься тролем
Не очень понял. Почему?
>int arr[] ={ 1, 2, 3} - это не array object, запись куда-то запределы кучи это по большому счету сегфолт.
Ну здрасьте, учимся объявлять массивы на дваче. Это то же самое, что int arr[3] = { 1, 2, 3];
Аноним 05/06/24 Срд 19:29:46 3181728 529
>>3181685
array это куча, а не массив
куча это просто данные лежащие на стеке (либо в памяти) линейно.

Разница в том что кучу нельзя воспринимать как нечто целостное, да и работать с ней тоже не получится ее нельзя записать целиком в фаил или передать копию другой функции.
Это неструктурированные данные у которых нет начала и конца, есть только адрес позиции.
Что бы создать "массив" в Си надо делать вот так:
struct { int d[4]; } arr_t;
Аноним 05/06/24 Срд 19:43:41 3181751 530
Аноним 05/06/24 Срд 19:54:16 3181770 531
image 305Кб, 1950x1358
1950x1358
>>3181502
>>3181524
Вот кстати, здравомыслящий человек. Я совсем забыл про это дело, оно реально отлавливает проблему. Жаль в эмбеде проблематично применить, я бы юзал. Но раст всё ещё лучше с этим справляется, щитаю!
Аноним 05/06/24 Срд 21:02:59 3181874 532
>>3181770
гцц выдает ворнинг без всяких санитайзеров
А вообще почему он пишет signed int и почему переполнение беззнакового числа?
Может из за того что ты знаковый литерал подставил? Сделай >= 0x80000000u
Аноним 05/06/24 Срд 22:37:31 3182038 533
>>3181874
Не, там проблема в том, что си неявно приводит x и y к int'у (int promotion rules). Это делается для всех типов меньших по размеру чем int, просто потому что процессор не может в арифметические операции для таких типов. Раст в такой ситуации кстати просто отказывается компилировать и заставляет тебя явно все приведения провести и ты либо напишешь правильно (приведёшь x и y к u32), либо сделаешь багу, из-за которой программа будет падать в панику (см. >>3181351).


А скинь выхлоп как ты компилируешь с gcc, только добавь флаг -v? У меня не получается никаких варнингов, чтобы я ни делал.
Аноним 06/06/24 Чтв 05:37:01 3182286 534
GBFDu57bkAAQ3XJ.jpg 2207Кб, 3000x2700
3000x2700
Screenshot 2024[...].png 209Кб, 1510x763
1510x763
>>3182038
Ты что-то не договариваешь оно у тебя ругается на то что 65k*65k не может дать положительный знак в случае int недвусмысленно намекая что надо бы перейти на long. Но у тебя везде беззнаковые стоят и никакого переполнения в случае беззноковых чисел не должно возникать.

Ты троллишь что ли я не понимаю?
Ебучая двач-тематика, даже в pr жирные сидят и кормят говном.
Аноним 06/06/24 Чтв 08:04:52 3182332 535
Screenshot 2024[...].png 94Кб, 1858x368
1858x368
Screenshot 2024[...].png 253Кб, 1592x905
1592x905
>>3182038
>А скинь выхлоп как ты компилируешь с gcc, только добавь флаг -v? У меня не получается никаких варнингов, чтобы я ни делал.

Пикрелейтед, происходит такое потому, что процессору для перемножения надо положить числа на регистры и поскольку не указано что это беззнаковая константа, компилятор по логике должен сделать следующее действие: положить число на регистр, вызвать команду расширения знаком команды после чего умножить
то есть
(short)-1 х (short)-1 => (int)-1 х (int)-1
или
0xffff х 0xffff => 0xffffffff х 0xffffffff
то есть почему происходит переполнение думаю теперь понятно.

Почему у тебя вылазит ошибка: наверное потому что ты компилируешь с -O3 и компилятор инлайнит функцию тест и в результате имеем что то подобное. Либо это ошибка во фронтендах шланга u16 u16 не должно превращаться в int int, беззнаковый тип для того и введен что бы компилятор знал что никаких преобразований над числом делать не нужно.
Аноним 06/06/24 Чтв 09:12:27 3182384 536
>>3181770
>Но раст всё ещё лучше с этим справляется, щитаю!
1) санитайзеры только для тестов
2) с гцц/шлангом для си можно добиться абсолютно такого же поведения при signed overflow как и в пидорасте
Проблема си в том, что нужно хорошо знать все подводные и инструмент, поэтому си - это для профессионалов, а раст для новечков.
Аноним 06/06/24 Чтв 09:15:24 3182387 537
>>3182332
Линтер сразу это ловит, потому что у тебя литералы сразу перемножаются, если как у челика выше с переменными, то не всё так просто.
Аноним 06/06/24 Чтв 10:04:32 3182420 538
>>3182387
справа литералы точно так же перемножились после инлайна функции, никаких предупреждений нет, потому что аргументы определены как unsigned short и их умножение выглядит как 0x0000FFFF x 0x0000FFFF => 0xFFFE0001
никакого переполнения быть не должно.
Аноним 06/06/24 Чтв 10:16:24 3182429 539
>>3182420
>никакого переполнения быть не должно
Произведение 65535 и 65535 не может быть представлено знаковым интом.
Аноним 06/06/24 Чтв 10:30:02 3182444 540
O0.png 219Кб, 1321x963
1321x963
O3.png 187Кб, 1425x970
1425x970
пхех блять с оптимизациями gcc всегда выплевывает неправильный результат (причем O1-O3 однохуйственно).

Это либо ошибка, либо в составе -O по умолчанию включаются разные ломающие оптимизации.
Аноним 06/06/24 Чтв 10:36:17 3182448 541
>>3182429
А кто просил знаковый int?
умножаются беззнаковые шорты, записываются в беззнаковый результат откуда берется знаковый инт?
Аноним 06/06/24 Чтв 10:39:15 3182450 542
>>3182448
У тебя у rvalue будет тип signed int.
Аноним 06/06/24 Чтв 10:48:48 3182463 543
>>3182384
В целом согласен, вот только вывод мне кажется не вполне однозначный должен быть. С одной стороны в раст вкатиться заметно труднее чем в си, но при этом это инструмент, который будет работать хорошо и корректно и обладает всеми современными удобствами. С другой стороны в си миллион подводных камней, про которые нужно просто знать™, но зато разработка проще и интуитивнее. Все жалуются про неуклюжесть и неудобства раста в серьёзной и крупной разработке, но и отлаживание вот таких багов на си может занять уйму времени и нервов. Хз, что лучше на самом деле.

Могу однозначно одно сказать изучить раст стоит хотя бы просто для себя как специалиста. Я вот уже почти год решаю задачи на литкоде с применением раста, читаю статьи, смотрю конференции и лекции на ютубе, даже парочку PR отправил в опен-сорсные проекты. В общем, немножко поднабрался опыта в этой области. И хоть я не применял его непосредственно в работе (хотя парочка маленьких сайд-проектов на расте у нас имеется, но их ведёт один человек и ему моя помощь не была нужна), но могу с уверенностью сказать, что всё это поменяло моё восприятие и си и плюсов.
Аноним 06/06/24 Чтв 10:53:00 3182471 544
>>3182448
>А кто просил знаковый int?
int просит твой процессор, он с шортами работать не умеет. В знаковые инты их по умолчанию переводит твой компилятор, потому что значение беззнаковых шортов влазит в знаковый инт. Такие дела.
Аноним 06/06/24 Чтв 11:00:23 3182481 545
>>3182463
>Могу однозначно одно сказать изучить раст стоит хотя бы просто для себя как специалиста
Если ты зумерок-пидорок, то да стоит учить %язык_нейм%, чтобы думать, что это там чёто помогает тебе, но если базированный профессионал, то ты просто изучаешь технологию, потому что она используется на проекте. Учить пидораст, как и любую другую хуйню, не стоит, если в этом нет практического смысла.
Аноним 06/06/24 Чтв 11:01:42 3182483 546
>>3182471
>int просит твой процессор
Челик про type promotion написано в стандарте, какой процессор нахуй, ты долбоёб?
Аноним 06/06/24 Чтв 11:08:50 3182497 547
Screenshot 2024[...].png 98Кб, 656x855
656x855
>>3182450
у какого в 🍑 rvalue?
как ты для себя объясняешь что код скомпилированый без "оптимизаций", как написано - положить, умножить, сравнить итд, приходит к правильному результату, а если включить оптимизации то в выхлопе результат неправильный?

Мало понимать отдельные строчки в ассемблере, надо понимать код целиком. Вот результат с -O1 и что мы видим? Он тупо убрал половину кода и подставляет в принт заранее заготовленное значение внезависимости от результата.

Впрочем я сталкивался не один раз уже с историей когда компилятор в ассемблерный выхлоп выдает не совсем тоже что и в итоговой программе и доверять тому что в нем написано особо не стоит. Надо короче компилировать на хосте и делать обжект дамп бинарника или как там оно называется.
Аноним 06/06/24 Чтв 11:14:46 3182509 548
>>3182481
No offense, но у тебя логика типичного вкатуна. Базированный профессионал потому и профессионал, что любит учиться и вылезать за рамки обязанностей и потребностей. Вот этот подход — "учить только то что нужно" как раз и отличает новичков, которые в индустрии по причине денег. К ним ещё добавляется зумерская лень — "работать только по расписанию", которую они называют work-life balance, получается унылое говно на выходе.

>>3182483
А теперь пораскинь мозгами и подумай почему оно в стандарте появилось. Думаешь, чтобы специально запутать двачеров?
Аноним 06/06/24 Чтв 11:17:52 3182514 549
>>3182509
>Базированный профессионал потому и профессионал
Потому что не долбоёб.
>А теперь пораскинь мозгами и подумай почему оно в стандарте появилось
Умунитарий, спокнись уже.
Аноним 06/06/24 Чтв 11:22:58 3182523 550
Аноним 06/06/24 Чтв 11:25:24 3182526 551
>>3182523
Но если ты правда тупой.
Аноним 10/06/24 Пнд 01:30:50 3186359 552
Аноним 21/06/24 Птн 13:41:25 3199100 553
>>3179410
>Я хз как можно не понять концепцию указателей.
Я вот совершенно не понимаю концепцию ссылок в C++. Несколько раз читал разные учебники, и все равно ни хрена не понял.
А в указателях хз, что сложного, это просто адрес в памяти. Обычная переменная расположена по фиксированному адресу, а у указателя его можно двигать туда-сюда. И выделять/освобождать динамически.
Ответить в тред Ответить в тред

Check this out!

Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов