| |
| |
| 3.106, Аноним (106), 15:28, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
И бэйсик.
И куча всего чего, и сейчас, работает безопасно с памятью.
Какие ещё инсайты будут?
| | |
|
| 2.66, Аноним (63), 12:07, 23/01/2026 [^] [^^] [^^^] [ответить]
| +2 +/– | |
Есть существенные подвижки:
"riscv64 ... второй уровень поддержки, который подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора"
отсутствие гарантий при прохождении тестового набора - это как так? Неужели компилятор может выдать неправильный код?
| | |
| |
| 3.68, Анонимусс (?), 12:35, 23/01/2026 [^] [^^] [^^^] [ответить]
| +2 +/– | |
> отсутствие гарантий при прохождении тестового набора - это как так?
Просто тесты не гоняют.
А раз не гоняют, то "гарантий прохождении тестового набора" дать не могу.
> Неужели компилятор может выдать неправильный код?
Конечно.
В любом компиляторе (что в rustc, что в llvm, что в gcc) могут быть баги.
Вот напр:
rustc - github.com/rust-embedded/wg/issues/361
llvm - github.com/llvm/llvm-project/issues/176001
gcc - github.com/riscvarchive/riscv-gcc/issues/378
> Неужели компилятор может выдать неправильный код?
Разумеется!)) А еще тесты не гарантия правильной работы.
Они гарантируют только то, что ими покрыто при условии что в самих тестах нет багов))
| | |
| |
| |
| 5.95, Аноним (63), 14:35, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Если специалисты не могут написать компилятор без ошибок, как можно доверять высказываниям этих же спецов о "безопасной работе с памятью"?
| | |
| |
| 6.103, Аноним (103), 15:12, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
Если врачи не научились лечить все виды рака, то давай твой аппендицит тоже оставим как есть?
Ошибки будут всегда.
Даже для верифиции кода используется программа в которой тоже могут быть ошибки.
Но каждый уровень добавляет проверки и уменьшает вероятность ошибки.
| | |
| |
| 7.112, Аноним (110), 15:53, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Если хирург не умеет ровно сделать разрез, не задев другие органы, давай не будем доверять ему оперировать твой аппендицит?
Поправил. А то твоя аналогия слишком уж кривая была.
| | |
|
| 6.117, Аноним (115), 16:04, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
А вы на адрес обратите внимание. Ошибки в кодогенераторе llvm/gcc, совершенно внезапно.
| | |
|
|
|
| 3.86, Аноним (86), 13:50, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
> Неужели компилятор может выдать неправильный код?
Зато безопастный.
| | |
| 3.168, laindono (ok), 03:48, 24/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
С другой стороны аж второй уровень поддержки для игрушечной архитектуры.
Кстати, а у GCC есть какие-то документы на тему того, в каком статусе поддержка всяких исторических, игрушечных и прочих "поддерживаемых" архитектур? Есть какие-то гарантии на, скажем, epiphany (первый раз слышу)?
| | |
|
|
| 1.6, Аноним (6), 00:30, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –4 +/– |
Чё там какие-нибудь подвижки по асинхронным генераторам? Сабж даже питон неспособен заменить из-за этого. Релизы ради релизов тоже странная практика, в прошлый раз пришлось 10 раз подряд скомпилировать тулчейн раста и буквально ничего полезного не добавили.
| | |
| |
| 2.12, Аноним (12), 00:41, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Чё там какие-нибудь подвижки по асинхронным генераторам?
https://docs.rs/async-gen
> Сабж даже питон неспособен заменить из-за этого.
Конечно, ради генераторов (которые никто нигде не использует) любой променяет скорость и типизацию на глобальные блокировки и грабедж коллектор.
> Релизы ради релизов тоже странная практика, в прошлый раз пришлось 10 раз подряд скомпилировать тулчейн раста и буквально ничего полезного не добавили.
Очередной кексперт всё подряд компилирующий. Между прочим, официальные тулчейны с PGO собирают, а онанимы всё пытаются что-то кому-то доказать.
| | |
| |
| 3.16, Аноним (6), 01:54, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
Ну, это костыли. Что это нигде? Асинхронный код использует не блокирующиеся интерфейсы ядра. То что находятся люди, до сих пор пишущие не масштабирующийся код с блокировками -- только их проблема. Программисты в курсе, где можно получить эффективное масштабирование с минимумом затрат.
Гил у питона не то чтобы проблема, если код действительно асинхронный (а не обёртка над синхронным, как большинство батареек, ну, конечно, лучше без него). Если, допустим, надо прочитать тысячу страниц в интернете за пару секунд, то всё вполне по красоте.
И доверять официальным тулчейнам не стоит, у раста они особенно кривые всегда. Постоянно линковку ломают тоже, но это к llvm больше. Между прочим.
| | |
| |
| 4.60, Аноним (60), 11:28, 23/01/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
> Постоянно линковку ломают тоже, но это к llvm больше.
Багрепорт ты конечно же не отправил.
| | |
| 4.114, Феникс123 (?), 15:58, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
Мне кажется вы тут сами себе противоречите, с одной стороны ратуете за масштабирование, а с другой стороны и с гилом сойдет. На rust уже несколько лет как асинхронность с async/await - вот вам полная масштабируемость на все ядра. Для чего нужны именно генераторы непонятно, но изначально async/await были реализованы через генераторы, просто их синтаксис был не стабилизирован. Из фьючей легким движением руки получаются генераторы, но не так чтобы это было особо востребовано.
Мне async/await если честно не очень, но в расте по другому очень сложно - если программировать колбеки то будут большие проблемы с боровом.
Синхронный IO тоже не слишком проблема кстати, если у клиента одно соединение с сервером масштабирование не требуется.
| | |
|
|
| 2.24, Карлос Сношайтилис (ok), 03:02, 23/01/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Чё там какие-нибудь подвижки по асинхронным генераторам?
Нет, хватает того что есть
> в прошлый раз пришлось 10 раз подряд скомпилировать тулчейн раста
"Я три дня гналась за вами, чтобы сказать как вы мне безразличны!"
> и буквально ничего полезного не добавили
Для этого достаточно прочитать анонс. Буквально пара минут
| | |
| |
| 3.25, Аноним (6), 03:06, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Кому хватает? Я конечно понимаю, что на расте программы не пишут, но всё же.
| | |
| |
| 4.61, Fyjy (?), 11:34, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Вот именно!
Ты даже не сказал какую ты программу пишешь, что тебе не хватает асинхронных генераторов, а сразу ныть начал.
А то складывается впечатление что никакую.
| | |
| |
| 5.62, Аноним (6), 11:45, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Любую, мне надо, чтобы треды 2x числа ядер исполнялись параллельно с минимумом затрат и асинхронные генераторы годятся для этого как нельзя лучше. Допустим, я хочу использовать io_uring.
| | |
| |
| 6.72, Аноним (115), 13:08, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Значит вы берёте язык с gil и рассказываете, как он подходит лучше чем rust?
>и асинхронные генераторы годятся для этого как нельзя лучше
Асинхронность - это одно единственное ядро.
| | |
| |
| 7.79, Аноним (6), 13:37, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
Это кооперативная многозадачность и параллельное исполнение в первую очередь. Если это бизилуп, то ограничение 1 ядро, конечно. Но в таком случае экономия тредов и памяти остаётся. Прелесть такого кода в том, что ты добавляешь ядер и производительность автоматически масштабируется под доступные ресурсы.
Что до gil, проблема ортогональна. Главное преимущество это отсутствие блокировок и простота работы с подобной архитектурой.
| | |
| |
| 8.90, Аноним (106), 14:06, 23/01/2026 [^] [^^] [^^^] [ответить] | +/– | Я не понимаю, ты сравниваешь асинк с питоне и асинк в расте или ты пытаешься про... текст свёрнут, показать | | |
| |
| 9.94, Аноним (6), 14:20, 23/01/2026 [^] [^^] [^^^] [ответить] | +/– | Спасибо, я в курсе В типичной программе абсолютно всё IO и генераторы это эффек... текст свёрнут, показать | | |
|
|
| 7.96, Аноним (96), 14:37, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Не обязательно. Вон в ноде рантайм - однопоточный, а ивент луп (который крутит вертит очередью выполнением тасков) - многопоточный.
| | |
|
| 6.76, Аноним (106), 13:27, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> исполнялись параллельно ... асинхронные генераторы
Смешались в кучу люди, кони.
То параллельно, то асинхронно.
> с минимумом затрат
Минимум затрат со statefull асинхронностью в питоне?
Ты уж либо крестик сними...
| | |
| |
| 7.83, Аноним (6), 13:42, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
у тебя не будет код исполняться без ожидания, это время можно замечательно использовать вместо блокировки в синхронном коде
| | |
| 7.84, Аноним (6), 13:44, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
другой вариант это зелёные треды, т.е. stackless python и прочее, вот это уже затраты
| | |
|
|
|
|
|
| 2.27, Аноним (27), 03:38, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
>Чё там какие-нибудь подвижки по асинхронным генераторам?
А что это такое?
| | |
| 2.30, morphe (?), 04:08, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Чё там какие-нибудь подвижки по асинхронным генераторам? Сабж даже питон неспособен заменить из-за этого.
У тебя X-Y проблема, сначала скажи зачем они тебе нужны, и какие проблемы нельзя решить уже сейчас
У асинхронных генераторов есть сложности с правильным дизайном, в Rust подобные вещи не делают хуяк-хуяк, если бы делалось так - то Future так и требовали бы аллокации. Если есть желание решить вопросы с ними - то вперёд в RFC/issues, а пока есть https://docs.rs/async-gen/latest/async_gen/index.html который ничуть не костыль, а библиотечная реализация того же самого функционала, которая немногим хуже того что будет в самом Rust.
| | |
| 2.34, Хрю (?), 06:22, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
>Сабж даже питон неспособен заменить
Сабж как бы не про замену питона вообще ни в каком виде. Так что асинхронной чертовщины там думаю не появится, можете расслабиться.
| | |
|
| 1.13, Аноним (13), 01:07, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– | |
>asm!(
если это асм то о какой безопасной работе с памятью речь? а если там работа с памятью безопасная тогда какой это к чёрту асм...
| | |
| |
| 2.43, Анонимусс (-), 08:46, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> а если там работа с памятью безопасная тогда какой это к чёрту асм...
Жаль что вы не в курсе, что asm! можно использовать только в unsafe блоках.
Могу только предложить почитать доку перед тем как задавать вопросы doc.rust-lang.org/reference/inline-assembly.html
| | |
| |
| 3.48, КО (?), 09:31, 23/01/2026 [^] [^^] [^^^] [ответить]
| –2 +/– |
Да в Ржавом каждый чих надо делать в unsafe блоках. Писать в union - safe, читать unsafe и т.п.
| | |
| |
| 4.55, Проходил мимо (?), 10:10, 23/01/2026 [^] [^^] [^^^] [ответить]
| –2 +/– |
Если попробовать немного осмыслить ситуацию, то внезапно окажется что unsafe в union действительно необходим в силу его природы. Другое дело, что необходимость в самом union возникает ужасно редко.
| | |
| |
| 5.58, КО (?), 11:14, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Union это простая абстракция, которая нужна в первую очередь, когда надо меганакрученную структуру передать как набор байтиков, не заморачиваясь с ее логическими свойствами.
Но сделать компилятор, который проверяет каким образом ты инициализировал union (положим первым, а не вторым) и при этом считает, что читать тем же способом эти данные unsafe - явная лень создателей.
| | |
| |
| 6.70, Анонимусс (?), 12:48, 23/01/2026 [^] [^^] [^^^] [ответить]
| +4 +/– | |
> проверяет каким образом
Вся суть юниона - не хранить как он был инициализирован.
> ты инициализировал union
А если это был не я?
А юнион прилетел из сторонней либы или вообще сишного кода?
> явная лень создателей.
Показали бы мастеркласс этим неучам и сделали бы как надо))
| | |
| 6.71, Проходил мимо (?), 12:49, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Поясните пожалуйста, какой смысл вы вкладываете в слово "передать"?
Передать в функцию, передать по сети или еще что-то?
| | |
| |
| 7.74, КО (?), 13:09, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
По сети, в файлик, в функцию щифрования или проверки контрольной суммы - т.е. выполнить операции которым неважна логическая структура.
| | |
|
|
| 5.59, КО (?), 11:15, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
И вообще вопрос привычки - чем чаще надо делать unsafe, тем меньше ты заморачиваешься с тем, а стоит ли делать safe.
| | |
| 5.128, Аноним (128), 17:05, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
>возникает ужасно редко.
IPv4,IPv6 - внезапно обрабатываются как union
| | |
|
| 4.73, Аноним (115), 13:09, 23/01/2026 [^] [^^] [^^^] [ответить]
| –2 +/– |
Вы не сишник случаем? Зачем вам union, почему не взять ADT?
| | |
| |
| 5.98, Проходил мимо (?), 14:44, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Для Си-шника естественно было бы получить указатель на экземпляр структуры и ее размер при помощи sizeof(). Использование для этих целей union для Си-шника выглядит как несусветная дичь.
Попытка реализации этого подхода в Rust натыкается на сложности с приведением типа указателей.
PS Вообще же кидать в сеть бинарные структуры - это к потенциальному огребанию проблем.
| | |
| |
| 6.152, 12yoexpert (ok), 20:32, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
> PS Вообще же кидать в сеть бинарные структуры - это к потенциальному огребанию проблем.
гораздо чаще данные текстом банально не влазят в канал, чем влазят
если мы, конечно, не перекладывание json-ов тут обсуждаем
| | |
|
| 5.164, _kp (ok), 01:51, 24/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
>>Зачем вам union
Не Питонист случаем? На иных языках о "железе" имеют представление.
union - описание физического размещения. Встречается в протоколах, работе с периферией, в общем данных которых полно в физическом мире.
ADT - чисто абстракция. Её в "железо не скормить. Кстати, в C++ оно есть.
Что использовать, зависит от того с придется работать.
| | |
| |
| 6.165, Аноним (115), 02:26, 24/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>Не Питонист случаем?
Не угадали.
>ADT - чисто абстракция. Её в "железо не скормить.
Зато, если приклеить к какждому union свой тег, то можно безопасно обращаться к этому самому union.
>union - описание физического размещения.
Это огромная проблема си, когда физическое устройство ставится на первый план, в ущерб корректности программы. Перед обращением к union всё равно потребуется знать, что именно в нём хранится, так что куда логичнее делать это чрез ADT, что будет гарантированно коректно, а не в традиционном си стиле, где баги образуются из-за того, что очредной сишник опять забыл дописать проверку снова.
| | |
|
|
|
|
| 2.45, Проходил мимо (?), 09:16, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
В Rust есть такое волшебное слово unsafe и где начинается unsafe - там заканчивается безопасность.
Предполагается, что пишущий unsafe блок программист знает и понимает, что делает. А если не знает - то это уже не проблема Rust-а.
| | |
| |
| 3.77, Аноним (106), 13:34, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
> там заканчивается безопасность
Не заканчивается.
Все гарантии работают. Добавляется возможность операций с сырыми указателями, некорректное обращение с ними вызовет панику, а не поведение "мне повезёт", как в С/С++
| | |
| 3.120, Аноним (120), 16:21, 23/01/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
А как только в C-коде дыра, связанная с памятью (хотя такое довольно редко происходит), то сразу у растеров язык C виноват.
| | |
| |
| 4.123, Аноним (-), 16:31, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
> А как только в C-коде дыра, связанная с памятью (хотя такое довольно редко происходит),
хахаха, редкая?
Ну посмотри сколько дыр в ядре из-за Memory Corruption
cvedetails.com/vendor/33/Linux.html
> то сразу у растеров язык C виноват.
Конечно нет!
Виноваты погромисты, которые из-за своей лyддuтности до сих пор каменным топором работают.
| | |
|
|
|
| 1.14, Аноним (115), 01:14, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Что почитать по теме управления памятью? Типа как устроена память в java, регионы и так далее, не про статические проверик, при этом не на уровне hello world
| | |
| |
| |
| 3.39, Аноним (39), 07:23, 23/01/2026 [^] [^^] [^^^] [ответить]
| +3 +/– |
О, пользуясь случаем хотел бы спросить. Как бы мне сделать так, чтобы меня забанили в нейронках, больших и малых? Чтобы вот прям ни в каком виде им было нельзя со мной соприкасаться?
| | |
| 3.46, Аноним (46), 09:19, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это в которых, что бы получить правильный детальный ответ надо знать этот ответ. Ибо пока не спросишь про конкретные исключения и конкретные детали он их даже ну упомянет и не упомянет их возможность существования. Типа догадайся, что такое может быть и спроси.
| | |
| |
| |
| 5.126, Аноним (126), 17:00, 23/01/2026 [^] [^^] [^^^] [ответить]
| +2 +/– | |
Очевидно, что умею, раз получил в итоге полный правильный ответ. Вот только без знания того, что должно быть, нельзя гарантированно получить ответ о том что должно быть.
Ну и как вишенка на торте. ИИ не обладает энциклопедическими знаниями. То есть у него нет, например, лежащего списка шаблонов проектирования. Если что-то подходит идеально, но редко кем используется, то ИИ посоветует с околонулевой вероятностью.
| | |
| |
| 6.131, Аноним (128), 17:14, 23/01/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
ИИ не "живет с Вами в одной реальности", а воспитан на объеме данных в лаборатории и общался с тренерами.
| | |
| |
| 7.132, Аноним (128), 17:16, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
По сути это игрушка, которая нравится тренерскому коллективу и которую хотят подороже продать спонсоры.
| | |
| 7.153, 12yoexpert (ok), 20:36, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
ИИ нигде не живёт, его нет и не будет ещё очень-очень долго, а то, что ты покупаешь, называется товар
| | |
|
|
| 5.129, Аноним (128), 17:11, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
>Это которыми ты не умеешь пользоваться.
Потребитель не дорос? Новая философия услуг нейросетей.
| | |
|
|
|
|
| 1.20, Аноним (20), 02:33, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– | |
>Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей,
Это разве соответствует реальности? С указателями нету проблем, поскольку нету безопасных указателей. Есть ссылки и подсчет ссылок, но и обычный сборщик мусора тоже защищает от этих проблем.
> выход за границы буфера и т.п.
А как выход за границы защищен? Всегда таскают размер в ссылке, всегда делают проверку индекса, и если что не так, то паника?
| | |
| |
| 2.22, Карлос Сношайтилис (ok), 02:58, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
> обычный сборщик мусора тоже защищает от этих проблем
А ещё он мусор собирает.
И пусть весь мир подождёт
> Всегда таскают размер в ссылке...?
Периодически.
Или в объекте.
И плюс кучка мелких оптимизаций
> и если что не так, то паника?
Сначала хотели сделать как в сях - при выходе за границы, делать вид, что ничего не происходит и работать дальше. Но потом передумали.
Согласен, скучно.
| | |
| |
| 3.57, Аноним (115), 10:37, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
>А ещё он мусор собирает.
>И пусть весь мир подождёт
Удиветельно, но с выходом голанга оказалось, что сборщик мусора не является проблемой в огромном количестве мест. А счётчики ссылок до сих пор создают утечки при зацикленных структурах.
| | |
| |
| 4.81, Аноним (106), 13:39, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> в огромном количестве мест
Это огромное количество мест сейчас с нами, в одной комнате?
Гошка заняла прочное место в инфраструктурных приложениях, почти успешно заменив баш и питон.
В остальных местах - постольку-поскольку, ибо задержки и жор памяти, при повышении нагрузки, непредсказуемые и болезненные.
| | |
| |
| 5.121, Аноним (115), 16:23, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>Гошка заняла прочное место в инфраструктурных приложениях, почти успешно заменив баш и питон.
Зато раньше почти весь этот софт писали на си. Оказывается, если написать тот же docker на go, небосвод на землю не рухнет.
>В остальных местах - постольку-поскольку, ибо задержки и жор памяти, при повышении нагрузки, непредсказуемые и болезненные.
Тем временем куча IDE почему-то на java, Elisp, и даже в neovim пробрался lua. Вот как-то не наблюдается почему-то таких программ на c/c++. Даже тот же MS VS почему-то с крестов на c# переводят. Тоже небосвод не рухнул.
| | |
|
|
| 3.171, Ivan_S (?), 11:39, 24/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
-> Сначала хотели сделать как в сях - при выходе за границы, делать вид, что ничего не происходит и работать дальше.
Вообще-то центральный процессор следит за тем, был ли в программе выход за границу массива, и генерирует внутренние прерывание, если такое было, после чего программа снимается с выполнения уже средствами ОС. Язык Си или любой другой сдесь вообще не при чём.
П.С. Не первый раз вижу типа программистов на Раст, которые, судя по всему, занимаются копи-пейст текстов, заранее подготовленных, или просто пишут что-то абы что, лишь бы выставить Си язык в негативном свете.
| | |
| |
| 4.173, Аноним (75), 15:18, 24/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
> Вообще-то центральный процессор следит за тем, был ли в программе выход за
> границу массива, и генерирует внутренние прерывание, если такое было, после чего
> программа снимается с выполнения уже средствами ОС. Язык Си или любой
> другой сдесь вообще не при чём.
Если речь о к̵о̵с̵т̵ы̵л̵е̵ Guard Pages, то поинтересуйся подводными камнями этого способа. Если грубо: память вполне безнаказанно можно портить от границы массива и до "охранной" страницы памяти. Поэтому-то и существуют другие костыли (уже не такие "бесплатные"), в виде проверок целостности, "канареек" и прочего.
| | |
|
|
| 2.28, Аноним (27), 03:44, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>Есть ссылки и подсчет ссылок, но и обычный сборщик мусора тоже защищает от этих проблем
Есть системные языки для которых сборщик мусора не нужен, принципиально.
| | |
| |
| 3.50, КО (?), 09:42, 23/01/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
Не "не нужен", а не подходит.
Ибо системному программисту в отличии от прикладного важно сколько времени отрабатывает, например, следующая конструкция языка:
}
и если там нетривиальное количество действий, то язык ему не очень подходит.
| | |
| 3.69, Аноним (20), 12:47, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>Есть системные языки для которых сборщик мусора не нужен, принципиально.
Даже для С есть сборщики мусора. Подсчет ссылок это тоже не зеро кост, и оно не хендлит циклические ссылки, так что для раста не помешает опциональная полноценная сборка мусора для некоторых данных. Наверняка крейты есть уже.
| | |
| |
| 4.93, Аноним (106), 14:15, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Время работы сборщика мусора недетерминировано, в отличии от подсчёта ссылок.
Это принципиальное различие, которое не позволяет называть подсчёт ссылок сборкой мусора.
Иначе можно сказать, что вызов free это тоже сборка мусора и это понятие потеряет всякий смысл.
| | |
| |
| 5.99, КО (?), 14:50, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Сборка мусора через подсчет ссылок - это тоже сборка мусора.
И она так же недетерминирована - ибо высвобождение корня дрема может вызвать каскад высвобождений и далее понеслось.
Другое дело, что подсчет ссылок более менее тривиален для однопоточного приложения.
free - это управляемая программой сборка мусора.
| | |
| |
| 6.105, Аноним (106), 15:20, 23/01/2026 [^] [^^] [^^^] [ответить]
| +2 +/– | |
> free - это управляемая программой сборка мусора.
Чем отличается понятие "сборка мусора" от "освобожение памяти"?
| | |
| |
| 7.116, КО (?), 16:03, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Уговорил - если нет поиска того, что надо освободить - то просто освобождение памяти
| | |
|
|
|
|
|
| |
| 3.85, Аноним (85), 13:44, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
{
match v.get(idx)
{
Some(n) => { println!("v[{}] = {}", idx, n); },
None => { println!("Индекс за пределами вектора"); },
И как сий финт ушами по скорости? Этот "match" с несколькими значениями - сильно тяжелый цикл нагнет? По сравнению с if (i >= ARRAY_SIZE(x)) { // опчки, out of bounds }
| | |
| |
| 4.87, КО (?), 13:51, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Если на то пошло, для немутирующих слайсов достаточно 1 раз проверить len(), чем в каждой итерации
| | |
| 4.91, Аноним (-), 14:06, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Во-первых ты докопался до просто примера.
В реальности в зависимости от того оно мутирующее или нет можно len() проверить 1 раз.
> И как сий финт ушами по скорости? Этот "match" с несколькими значениями - сильно тяжелый цикл нагнет?
Зависти от того что такое "тяжелый цикл")
| | |
| 4.102, Проходил мимо (?), 14:56, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Со скоростью там все нормально, сам по себе match - это что-то типа switch с очень расширенными возможностями, но при этом работает он очень быстро.
Вообще же, с точки зрения скорости у программ на Rust очень важен режим компиляции. По умолчанию компиляция идет в режиме для отладки и в таком вот виде программа может выполняться не очень быстро (по сравнению с кодом на чистом Си/Си++). Но вот когда собираешь ее с ключиком --release то все начинает просто летать. Прирост скорости, по ощущениям, гораздо выше, чем когда компилируешь программу на Си в режиме для отладки и в режиме максимальной оптимизации.
| | |
| |
| 5.138, Аноним (128), 18:02, 23/01/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
>Прирост скорости, по ощущениям, гораздо выше,
Учитывая больший оверхэд. Но в заслугу подчеркнуть надо. )
| | |
|
| 4.139, Аноним (128), 18:24, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>По сравнению с if
здесь главное, что происходит оценка (сопоставление) значения и ветвление в зависимости от значения.
| | |
| 4.175, Аноним (175), 09:54, 25/01/2026 [^] [^^] [^^^] [ответить] | +/– | пезразницы Vec get заинлайнится, а потом оптимизатор сведёт всё это синтаксиче... большой текст свёрнут, показать | | |
|
|
| 2.51, КО (?), 09:50, 23/01/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
>А как выход за границы защищен? Всегда таскают размер в ссылке, всегда делают проверку индекса, и если что не так, то паника?
Ну почему сразу паника? Можно и управляемо к делу подходить. :)
fn main() {
union MyUnion {
f1: [f32;2],
f2: [f32;3]
}
const U : MyUnion = MyUnion { f2: [0.0,1.0,2.0] };
for i in 0..=4 {
print!(" {} ", i);
let f1 = unsafe{U.f1};
let f2 = unsafe{U.f2};
println!("{:?}", match f1.get(i) {
Some(n) => n,
None => match f2.get(i) {
Some(_) => &f32::NAN,
None => break
}
} );
}
}
| | |
| |
| 3.92, Аноним (92), 14:10, 23/01/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Some(n) => n,
> None => match f2.get(i) {
УЖАС! В этом расте хотя бы ифы есть?
| | |
| |
| 4.122, Аноним (115), 16:26, 23/01/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
Вам дали улучшенную версию if-ов, с проверками времени компиляции на полноту вариантов, а вы обратно в каменный век засобирались.
| | |
|
|
|
| 1.23, Аноним (23), 03:02, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
>В Rex-программах допускается использование подмножества языка Rust, предоставляющего гарантии безопасности.
unwrap допускается?
>легковесный Runtime
Прямо даже легче С?
| | |
| |
| 2.29, morphe (?), 04:04, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Прямо даже легче С?
Учитывая что у C есть только BPF со стрёмным верификатором и JIT - да
| | |
| |
| 3.82, Аноним (85), 13:41, 23/01/2026 [^] [^^] [^^^] [ответить]
| +2 +/– | |
> Учитывая что у C есть только BPF со стрёмным верификатором и JIT - да
Я таки рантайм верификатору поверю больше чем каким-то гарантиям какого-то компилера - когда потом хаксор, извините, пропихнет asm! или что там вон те забудут или "забудут" - или просто бинарь хексэдитором пропатчит для обхода выдачи компилера - и любители гарантий удивленно так - "а что, так можно было?!". С eBPF то - и такое худо-бедно придушится верификатором. А с вон тем что?? Сразу бац и в кернелмод чтоли?
| | |
| |
| 4.141, morphe (?), 19:01, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
Так я так понял что там идея что ты передаёшь привилегированному процессу исходный код, а он уже его линтит, компилирует, и грузит
Соответственно пропустить ничего не выйдет, компилятор Rust то знает где у тебя что происходит в исходном коде.
| | |
|
|
|
| 1.26, Имя (?), 03:07, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Я разочарован полным отсутствием новых применений признака const в этом релизе.
| | |
| 1.56, Аноним (96), 10:29, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Как раст в бэкендах по сравнению с гошечкой? Есть от раста вау-вау эффект по производительности?
| | |
| |
| 2.80, Аноним (-), 13:38, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Как раст в бэкендах по сравнению с гошечкой? Есть от раста вау-вау эффект по производительности?
У гошечки GC видите ли. А это penalty и по производительности и по жору памяти. В этом смысле Rust скорее с C/C++ по скорости уместнее сравнивать.
| | |
| |
| 3.147, Аноним (63), 19:40, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Rust скорее с C/C++ по скорости уместнее сравнивать.
Естественно, сравнение не в пользу первого.
| | |
|
| 2.143, Аноним (142), 19:13, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– |
Ну по RPS не 10x как на том что я переписывал с питона, но 2x стабильно есть. При этом код понятнее получился и тестировать сильно проще.
| | |
| |
| 3.161, Аноним (115), 23:00, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>Ну по RPS не 10x как на том что я переписывал с питона, но 2x стабильно есть.
Как-то подозрительно мало.
| | |
|
|
| 1.64, Аноним (63), 11:59, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
> Встроенная в поставку Rust стандартная си-библиотека Musl
Обёртки вокруг си генерировать научились, что ещё можно на расте сделать, кроме обёрток?
| | |
| 1.78, Аноним (-), 13:37, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– | |
> <[MaybeUninit<T>]>::write_copy_of_slice
Ну и выражовывания у этих типажей, я б сказал. Это они сишные фичи так коспелят по кривому?
| | |
| 1.111, Аноним (111), 15:52, 23/01/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
"Поздно пить Боржоми!") Раст опоздал на пару десятков лет. Теперь ИИ будет анализировать и исправлять уязвимости в Си коде. И это будет намного проще и прозрачнее, чем перелопачивать дебри Раста.
| | |
| |
| 2.130, Аноним (130), 17:12, 23/01/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> На Горе2Дуба работает? Или уже deprecated?
Обижаете! Оно еще и более древние древности поддерживает на уровне Tier2.
i586-unknown-linux-gnu ✓ 32-bit Linux (kernel 3.2+, glibc 2.17, original Pentium) 3
i586-unknown-linux-musl ✓ 32-bit Linux (musl 1.2.5, original Pentium) 3
А i686-unknown-linux-gnu 32-bit Linux (kernel 3.2+, glibc 2.17+, Pentium 4) вообще в Tier 1 значится.
doc.rust-lang.org/beta/rustc/platform-support.html#tier-1-with-host-tools
| | |
| |
| |
| 4.149, Аноним (149), 19:53, 23/01/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
> Это когда результат не гарантируется?
Это когда "запустите на своем хламе и расскажите как оно".
| | |
|
|
|
|