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

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 284 34 67
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)

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

Сори, неправильно выразился, когда писал про подсчёт чисел. Не проснулся ещё.
Ответить в тред Ответить в тред

Check this out!

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