|
|
3.62, _kp (ok), 16:43, 24/01/2025 [^] [^^] [^^^] [ответить]
| +3 +/– |
Здесь костыль опциональный для отдельных файлов, и даже их частей,
а не всё что есть сплошной костыль.
И главное, нет мартышкиного труда по переписыванию, а можно использовать и существующий код и библиотеки.
Так что, этот вариант лучше.
| |
|
4.83, Аноним (83), 17:32, 24/01/2025 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Так что, этот вариант лучше.
Если пытаться программы на расте проектировать и писАть в сишном стиле, то да, вариант из статьи лучше. Но наСИльники никак не могут понять, что надо не "си в раст тащить", а менять свою порочную парадигму "программно-разработнического" мышления. Тогда и с боровом бороться не придется, он для вас из "тюремщика" и "пыточных дел мастера" превратится в телохранителя и помощника. А так-то конечно - пытаетесь опасные, вредные и "хакерские" сишные приемчики применять в разработке на расте - он вас и бьет по рукам, нехороший.
| |
|
5.87, Аноним (87), 18:01, 24/01/2025 [^] [^^] [^^^] [ответить]
| +3 +/– |
Ой ну да, конечно. Все кто хейтят си, просто не понимают всей прелести низкоуровневой работы с памятью. Естественно в таком программировании надо быть осторожным.
Но вот заставлять всех использовать мифически безопасный язык, это нифига не выход.
Растаманы пытаются всех загнать в свое стоило. Пытаются стать диктаторами монополистами. Да еслиб все поголовно писали низкоуровневый код на расте, по было бы еще более тормознутым, чем есть сейчас.
Достаточно уже наворотили уровней абстракций, от которых софт разжирел и тормозит, вы еще и хотите лишить нас свободы манипулирования байтами. Нет уж, со своим растом сидите дальше в своих калифорниях, вместе с ооп.
| |
|
6.91, Аноним (-), 18:16, 24/01/2025 [^] [^^] [^^^] [ответить] | +/– | Сорок лет как под наркозом, Я работатал байтовозом но на выходе все рав... большой текст свёрнут, показать | |
|
5.149, Ivan_83 (ok), 00:12, 25/01/2025 [^] [^^] [^^^] [ответить] | +1 +/– | Вы хоть программировать то умеете А то у вас не раст а какой то розовый пони и ... большой текст свёрнут, показать | |
|
4.84, Аноним (-), 17:33, 24/01/2025 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Здесь костыль опциональный для отдельных файлов, и даже их частей,
А какой тогда смысл???
Если ты знаешь что у тебя проблема с конкрентым файлом или даже его частью (это как? с конкретным циклом что ли?))), то не лучше ли просто исправить ошибку и добавить проверку руками?
Тут же проблема как раз в глобальности. У тебя есть огромная куча кода, которая где-то когда-то выходит за границы и портит память. А где - никто не знает.
| |
|
5.134, _kp (ok), 22:54, 24/01/2025 [^] [^^] [^^^] [ответить] | +1 +/– | Если это свой или знакомый файл, или не забытый, то проблемы считай, что нет,... большой текст свёрнут, показать | |
|
6.155, Аноним (-), 00:27, 25/01/2025 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Второй момент, тупо тесты, если не выявлено нарушений доступа к памяти,
> так можно смело пересобирать обычным компилятором.
Тесты практически никогда не выявляют проблемы с памятью. Только в самых тривиальных случаях. Обычно для такого нужны "специально подготовленные данные" и/или фаззинг.
> А тут всё можно на автомате.
Не на автомате, в том то и дело.
> с этим вариантом нарушения будут выявлены.
Могут быть выявлены. Если повезет.
Но согласен что это лучше чем ничего.
| |
|
|
6.154, Аноним (-), 00:23, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Валгринд и асан знает.
Если это было так, то проблемы с памятью считай не было бы.
Но в реальности ты получаешь просто список репортов, и при их изучении оказывается что память где-то была испорчена.
Полностью восстановить ход событий невозможно, повторить не получается, заставить клиента юзать валгринд нереально, поэтому сиди проверяй все подозрительные места, выбрав их по логам. (Просто для контекста - кодовая база на 2М loc)
Если у вас есть идеи как лучшее решение - с удовольствием его выслушаю.
| |
|
7.166, Ivan_83 (ok), 01:18, 25/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
Ну вы сами злые буратины.
У нас в продукте давно внедрено что мы собираем с -O2 -g и все корки падают в одно место, там же с них извлекаются бэктрейсы в которых видны и названия функций и нумера строк и названия переменных с их значениями.
Это конечно не на 100% решает все проблемы, но все частые падения мы давно так отловили и пофиксили, насколько помню осталась у нас одна проблема которая проявляется редко при завершении работы, но жить это точно никому не мешает.
Ещё у нас инженера умеют делать тестовые стенды чтобы воспроизвести проблему, это тоже бывает сильно помогает.
Кодовая база - хз сколько там нынче строк, но тоже дофига.
| |
|
8.233, _kp (ok), 16:55, 25/01/2025 [^] [^^] [^^^] [ответить] | +/– | Все правильно делаете, но Не всякое нарушение доступа к памяти приводит и... текст свёрнут, показать | |
|
|
|
|
|
|
2.9, Аноним (-), 14:49, 24/01/2025 [^] [^^] [^^^] [ответить]
| +7 +/– |
> Растоконец?
Пффф... если бы...
> снижает производительность приложений в среднем на 5% (разброс от -1% до 29%)
> увеличивает размер кода на 9.1% (разброс от -1.4% до 38%)
> замедляет компиляцию на 11%.
Если на последнее можно забить, то предыдущие два выглядят остойно.
Плюс оно не будет работать со старым кодом автоматом:
> требует добавления в код специальных аннотаций и включения заголовочного файла "ptrcheck.h"
Пройтись по всей кодовой базе и подобавлять аннотации это конечно не так сложно как на раст переписать, но учитывая предыдущие недостатки... имеет ли оно вообще смысл?
Ну и вишенка - оно исправляет только выход за границы буфера.
А как же use-after-free? А как же double-free? А int overflow?
| |
|
3.16, Аналгин (?), 14:57, 24/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
Как будто в другиях ЯП проверки бесплатные. Нет, в расте магическим образом бесплатным оно не станет.
| |
|
4.20, Alladin (?), 15:03, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
в расте есть множество способов сделать это бесплатным, банально тип &[u8; 128] это уже тип с макс границей 128,
а обработка массивов на расте считает плохим тоном прямое обращение по индексу, люди используют итераторы.
а функции с платной проверкой границ максимально явные так как возвращают option.
| |
|
5.26, Аноним (26), 15:13, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> в расте есть множество способов сделать это бесплатным, банально тип &[u8; 128] это уже тип с макс границей 128,
И чё? Это просто другая форма записи того же самое, что и в новости. Это не бесплатно
| |
|
6.34, Alladin (?), 15:38, 24/01/2025 [^] [^^] [^^^] [ответить]
| +8 +/– |
и то, что зная что тип слайс с 128 элементами:
1. не нужно хранить количество элементов в runtime, а следовательно нет runtime проверок и не нужно доп памяти. прямое обращение к элементу с const номером не добавляет runtime проверок, а обращение к 129 элементу напрямую создает паник функцию (или None если это функция с option), также первый элемент массива абсолютно бесплатен.
2. нет потери характеристик типа между функциями. это также не пустой массив с 128 элементамм от функции к функции (всегда не null, указывает на не освобожденную память, по памяти такой же указатель, размер определен в compltime, размер и тип элемента определен).
и таких моментов в расте множество
| |
|
7.37, Аноним (37), 15:48, 24/01/2025 [^] [^^] [^^^] [ответить]
| –4 +/– |
Как не нужно-то, вот ты хочешь цикл фор по этому слайсу, откуда рантайму знать, сколько шагов нужно сделать?
| |
7.66, Аноним (66), 16:48, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
>1. не нужно хранить количество элементов в runtime, а следовательно нет runtime проверок
Ага, просто при итерации количество элементов прямо зашито в машинную инструкцию вместо области данных. Быстрее ли это? На самом деле нет.
>прямое обращение к элементу с const номером не добавляет runtime проверок, а обращение к 129 элементу напрямую создает паник
Прямо как в Си с флагом -Wall.
| |
|
|
5.31, Аноним (31), 15:19, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Здрасте, приехали. А тип "&[u8; 128]" — он что, бесплатен?
Если это не прямая абстракция железа, то очевидно, что либо оно не энфорсится и ограничения действуют только на этапе компиляции, либо оно энфорсится в рантайме и это каждый раз явные проверки на переполнение.
Или у растаманов своя вселенная и код не на реальном железе, а на святом духе и магической пыльце с крыльев феечек работает?
| |
|
6.124, Bottle (?), 20:40, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Rust - компилируемый язык, за неправильное приведение типов компилятор настучит по рукам программиста.
| |
|
5.144, _kp (ok), 23:39, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> в расте есть множество способов сделать это бесплатным..
Так с очевидными операциями с массивами и проблем обычно нет, и проверки простые
>>итераторы
А когда индексы/указатели получены на основе аргументов, да к ваниантным структурам, получаем те же проверки в рантайме.
| |
5.152, Ivan_83 (ok), 00:17, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Хоспаде, какие конченные люди.
Обращение к элементу массива по индексу это один из святых граалей, фича которая мастхэв.
Периодически бывает нужно или таблицу для перекодирования иметь или ещё что то удобно упихать в таблицу потому что на входе у тебя какие то числа на которые надо что то делать.
Если дрюкатся через итераторы то вместо o(1) будет o(n) сложность доступа до рандомного элемента массива.
| |
|
6.157, Аноним (-), 00:33, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Хоспаде, какие конченные люди.
Хоспаде, так это ты про себя же говоришь!
У тебя никто не отбирает доступ по индексу. Даже остается доступ без всех проверок вообще. Разобрался бы вначале о чем речь, а потом бы лез в комменты.
| |
|
7.170, Ivan_83 (ok), 01:29, 25/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Все итераторы которые я видел не умели o(1) обращение по индексу. Они потому интераторыми и назывались что там другая механика работы и другой синтаксис.
| |
|
|
|
10.272, Аноним (-), 09:43, 26/01/2025 [^] [^^] [^^^] [ответить] | +/– | Узко мыслишь Итератор -- это абстракция над последовательностью, которая позвол... большой текст свёрнут, показать | |
|
|
|
|
|
|
4.29, Аноним (29), 15:18, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Как будто в другиях ЯП проверки бесплатные. Нет, в расте магическим образом бесплатным оно не станет.
Разумеется.
Но в расте ты платишь в основном временем компиляции.
При использовании слайсов - проверка делается только один раз.
При использовании итераторов - тоже только один раз.
При использовании прямой итерации по массиву, то да - получается также как тут.
Т.е. получается лучше во всех случаях кроме такого.
| |
|
5.33, Аноним (37), 15:33, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Так а что мешает обсуждаемому компилятору, раз он уже знает максимально возможный индекс, проверить только его? Ничего.
| |
|
6.45, Аноним (-), 16:08, 24/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Так а что мешает обсуждаемому компилятору, раз он уже знает
> максимально возможный индекс, проверить только его? Ничего.
Неа. Оно должно работать с generic code.
Ты можешь в нем напр. изменить i. Поэтому они вынуждены проверять на каждой итерации.
А со слайсом/итератором - уже внутри делается проверка на границы один раз.
| |
|
|
8.81, Аноним (-), 17:25, 24/01/2025 [^] [^^] [^^^] [ответить] | +1 +/– | Пффф берешь указатель на i и передаешь как параметр в функцию слинкованной ли... текст свёрнут, показать | |
|
9.97, Аноним (37), 18:31, 24/01/2025 [^] [^^] [^^^] [ответить] | +/– | В этом случае да, придётся чекать каждый раз но и на расте тоже Но обычно всё... текст свёрнут, показать | |
|
|
|
|
|
4.32, Аноним (32), 15:22, 24/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
В расте большая часть проверок в compile-time.
Т.е разработчику придется подождать подольше, CI будет бегать не так шустро.
Может придется купить билд-машину помощнее.
А в предложенном варианте
> снижает производительность приложений в среднем на 5% (разброс от -1% до 29%)
у КАЖДОГО пользователя.
А если их будут миллионы?
| |
4.41, Аноним (-), 16:04, 24/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Станет, но без всякой магии.
Например:
for (size_t i = 0; i < count; ++i)
buf[i] = i;
можно переписать как:
buf.iter_mut().enumerate().map(|(i, b)| *b = i);
Или если count != buf.len(), то:
buf.iter_mut().take(count).enumerate().map(|(i, b)| *b = i);
В обоих случаях это развернётся в код, в котором на каждой итерации будет одна проверка на окончание цикла (то есть как будто без проверок на выход за границы), дополнительные проверки, если они и будут, будут производится вне цикла.
Проверки в расте не бесплатные, но они дешевле, чем 5% производительности.
| |
|
5.51, Аналгин (?), 16:23, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Какой ужас. Даже джава в первом примере автоматически уберет проверку.
| |
|
6.146, Аноним (-), 23:52, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Я думаю, что C тоже удалит её, но ситуации бывают сложнее, и вот там функциональщина начинает рулить.
| |
|
5.141, Аноним (140), 23:16, 24/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Проверки в расте не бесплатные, но они дешевле, чем 5% производительности.
Это кто сказал? Тутна Сях даже удаляешь прстую команду - бац +30% тормозов, из-а архитектурных особенностей / недетерминизма, а у вас максимум 5% всегда......
Так же, хначит и в Си будет - не больше чем на Rust, в конкретном случае. Вы меня просто поражаете!
| |
|
6.148, Аноним (-), 00:11, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Это кто сказал?
Проскакивало что-то в информационном потоке, какие-то попытки оценить накладные расходы на реальном проекте. Я не помню, что именно, поэтому ссылки не будет.
> хначит и в Си будет - не больше чем на Rust
Проверок будет меньше, а тормозов больше, потому что хоть на локальном уровне компилятор C может не хуже раста соображать, но констрейнты с глобального уровня он тягать практически не может. Он вообще никогда не может доверять программисту.
| |
|
5.153, Ivan_83 (ok), 00:21, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> buf.iter_mut().take(count).enumerate().map(|(i, b)| *b = i);
Нечитаемая галомотня.
| |
|
6.159, Аноним (-), 00:37, 25/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Нечитаемая галомотня.
Мда... просто перепись неосиляторов с сишкизмом голового мозга в терминальной стадии.
В таком случае понятно почему вы кроме си ничего осилить не можете. Там же сложнаааа.
Как раз все просто и понятно:
- берешь итератор, именно мутабельный
- указываешь что нужны первые count
- итерируешься и для каждого элемента выполняешь присваивание
| |
|
7.174, Ivan_83 (ok), 02:08, 25/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Вопрос не в неосиляторстве а в том нафига делать так сложно.
> buf.iter_mut().take(count).enumerate().map(|(i, b)| *b = i);
У вас тут 5 уровней, а в конце ещё что то непонятное в качестве аргумента для map().
Если бы я писал что то похожее то я бы на каждом этапе проверял на NULL прежде чем обращатся дальше.
Но я бы такое сложное писать не стал, ведь изначально вы это написали как замену банальному циклу:
for (size_t i = 0; i < count; i ++) { buf[i] = i; }
У меня даже в строчку это получилось короче записать чем у вас.
При условии что count меньше или равен sizeof(*buf) оно будет работать без проблем и не требует никаких проверок.
Так вот, этот ваш крипто код конечно занятный, но копатся в этом не интересно.
Интересно открыть код, понять про что он и где проблема, поправить и занятся чем то приятным.
Ваша запись более длинная и более сложная, нужно знать больше ключевых слов и понимать как они работают чтобы представить какой оно даёт результат.
Зачем это надо когда есть более простое и наглядное решение делающее ровно то же самое?
| |
|
8.240, Аноним (236), 19:25, 25/01/2025 [^] [^^] [^^^] [ответить] | +/– | Давай-ка ты теперь напишешь на сишочке с циклом код, считающий сумму квадратов п... текст свёрнут, показать | |
|
|
10.263, Аноним (-), 05:53, 26/01/2025 [^] [^^] [^^^] [ответить] | +/– | Нет, она не будет ничего получать сначала filter делает из итератора новый итер... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
3.25, Аноним (25), 15:08, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Так кланг же высылает ворнинги при использовании обнуленного указателя
| |
3.67, _kp (ok), 16:51, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
> снижает производительность приложений в среднем на 5% (разброс от -1% до 29%)
> увеличивает размер кода на 9.1% (разброс от -1.4% до 38%)
>> выглядят остойно.
Если сплошной код типа *x++ ? x[*y+n] = *z++...
то и будут максимальные потери. И будут они на любом языке с проверкой границ.
Но для критичных мест есть же #pragma
>>не так сложно как на раст переписать
Переписать можно и на С++ безопасно. Если делать нечего то и на JS.
А если переписывание не финансируется? За чей счет несложно переписать?
Зато с предлагаемым вариантом можно перекомпилировать код, и
и можно сразу запустить. А когда перепишут всё. Что тоже значительная разница.
| |
|
4.76, Аноним (-), 17:12, 24/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
> А если переписывание не финансируется? За чей счет несложно переписать?
Эм... я вроде и написал, что то что предлагают проще и дешевле чем переписывать.
Откуда вы взяли "несложно переписать"?
> Зато с предлагаемым вариантом можно перекомпилировать код,
> и можно сразу запустить.
И... И ничего не поменяется)))
Чудес не бывает - вам все равно придется пройтись по ВСЕМ циклам и расставить нужные аннотации. И желательно ничего не напутать в процессе.
Что не такая уж маленькая работа по сравнению с "перекомпилировал и запустил".
| |
|
3.125, анон (?), 21:09, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Не так давно здесь писали про компилятор fil-c для C/C++ (форк Clang). Теже 5%. Чудес не бывает - это скрытые проверки на диапазоны массивов. Много программ собирается без переписывания, но изменяется ABI.
| |
3.128, Sergey (??), 21:15, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Ещё со времен Windows 2000 дебаггер имел возможность ставить хардварные брейкпоинты на запись в область памяти. Gdb так не умеет? Прошу прощения за глупый вопрос, недавно с линуксом работаю.
| |
3.189, Аноним (189), 10:31, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Почему нет? В критические ко времени исполнения места - вносим нужные оптимизации. Проблемных мест станет значительно меньше.
| |
|
2.89, Аноним (89), 18:12, 24/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
все прям бросили раст, плюсы, го и побежали писать на древнем С. Ядро Линукса, xne, драйверы , контроллеры и легаси тулы линукса - вот и вся ЦА этого языка
| |
|
|
4.142, Аноним (140), 23:25, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Да это вы тут какой то фантазёр, я ранее тут даже приводил ссылку на оч.крутой benchmark, а не как обычно от Васяня, и даже сделал суммирующий анализ оттуда табличек производительности разных языков. Пусть Rust не самое дно по производительности - но, дно.
Не знаю как у них так криворуко получилось. Выше даже вон привёл анализ чьего то примера ассемблера от него, на простейшем цикле.
Так кто тут фантазёр?...
| |
|
5.160, Аноним (-), 00:40, 25/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
> я ранее тут даже приводил ссылку
> даже сделал суммирующий анализ
И никаких пруфов. Даже на свой коммент тут.
> Так кто тут фантазёр?...
Ну, получается что ты.
Talk is cheap. Show me the link.
| |
5.199, Аноним (199), 11:05, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
какая связь между вашим бенчмарком и ограниченным ЦА языка Си? Ну сделали вы бенчмарк, ну и что? Ну быстрый Си, ну и что? Всем пох. А Раст при этом еще примерно настолько же быстрый.
| |
|
|
|
|
1.4, laindono (ok), 14:39, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| –4 +/– |
В современных языках это и так есть по умолчанию. В целом хорошая идея, всё равно сишников заставить писать нормальный код невозможно. А так хоть падать будет с читабельной ошибкой. Это определённо лучше, чем код, который то работает, то не работает, то работает, но странно.
| |
|
2.143, Аноним (140), 23:30, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Синтаксис плохенький :( и ещё ряд жутких идеалогических недостатков :(
- использовать это мало кто будет.
Т.б.было уже подобное - в GCC, не много ни мало лет двадцать назад. Выпилили позже из-за недоделанности и заброшенности, никому не надо оказалось. Либо с такими же проблемами реализации как тут.
| |
|
3.202, я (-), 12:34, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
ну так это буквально фича для перекапывания старого си-кода.. если у вас нет сикода который надо продолжать поддерживать но нет смысла его серьёзно переписывать, то это мимо вас..
| |
|
2.191, Аноним (189), 10:39, 25/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Плохой программист останется таковым независимо от языка. Все дело в людях и rust это никак не изменит...
| |
|
3.203, я (-), 12:35, 25/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
конечному пользователю пофиг писал код хороший или плохой програмист. если раст хотябы в трёх случаях из 10 не позволит плохому програмисту написать кривой код то это уже победа.
| |
|
4.211, Анонис (?), 14:42, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
В том то и дело, Rust лишь защищает от ряда нубских ошибок, а от написания кривого кода он не спасает.
| |
|
|
|
1.7, Аноним (7), 14:46, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> Включение режима "-fbounds-safety" снижает производительность приложений в среднем на 5% (разброс от -1% до 29%), увеличивает размер кода на 9.1% (разброс от -1.4% до 38%) и замедляет компиляцию на 11%.
Ахахах, т.е. мяу! (с)
Нафига оно тогда надо?
Напомнило историю с MiraclePTR
| |
|
2.10, Аноним (10), 14:52, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
We anticipate that MiraclePtr meaningfully reduces the browser process attack surface of Chrome by protecting ~50% of use-after-free issues ...
| |
|
3.19, Аноним (-), 15:01, 24/01/2025 [^] [^^] [^^^] [ответить] | +1 +/– | Потребление памяти основным процессом браузера при применении MiraclePtr увелич... большой текст свёрнут, показать | |
|
4.130, Bottle (?), 21:44, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Я знаю как. Оберни это сугубо в шаблоны. Header-only, хотя отчасти это следует из шаблонов.
Не забудь ещё завернуть это дело в десяток билд систем. И чтобы при этом всё скачивалось с интернета, чтобы при очередном апдейте весь проект падал.
| |
|
|
2.15, Аноним (15), 14:56, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Ну т.е., меньшее замедление, чем затыкание всевозможных Spectre-Meltdown'ов.
| |
|
1.8, Аноним (26), 14:48, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
> char *buf = (char *)malloc(10); // для указателя buf будут сохранены сведения о границах
Если это Си, а не С++, то приведение типов тут не нужно, void* можно сохранить в любой указатель
| |
|
2.53, Аноним (53), 16:27, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Нет ничего хуже человека, который реально пишет на C++, но при этом думает, что знает чистый Си.
| |
|
|
|
|
4.47, Аноним (-), 16:13, 24/01/2025 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Чтобы сам компилятор собирался 9 часов? Ненужно.
А зачем вы собираете компилятор?
Вы что, из этих?
> Ненужно.
Угу. Намного нужнее выходить за границы буферов.
| |
|
5.73, Аноним (15), 17:07, 24/01/2025 [^] [^^] [^^^] [ответить]
| –2 +/– |
Я из гентушников и что? Пока право выбирать дистры, к счастью, не отменили.
А вот вам сделали достаточно простое решение, чтоб не выходить за границы. И без всяких чекеров бровов.
| |
|
6.77, Аноним (27), 17:15, 24/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Так и в Генте вроде компилятор не часто собирают, разве нет?
А борроу чекер проверяет очень много всего, вещь нужная, отказываться не хотим
| |
|
7.168, Аноним (167), 01:25, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
собирали бы нечасто, если бы от этого мусора не зависели ff и thunderbird. а так можно было бы годами llvm не трогать, чтобы не воняло
| |
|
6.78, Аноним (-), 17:19, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Я из гентушников и что?
> Пока право выбирать дистры, к счастью, не отменили.
Не, не, ничего. Все и так понятно.
Разумеется это отлично. Не беспокойтесь, я нормально отношусь ко всяким меньшинствам
> А вот вам сделали достаточно простое решение, чтоб не выходить за границы.
Это не мне сделали, а дыряшечникам.
Ну, посмотрим поможет ли это им. Потому что самые упоро... т.е. упорные признают только гнутость, а туда это не добавляли и не факт что добавят.
| |
|
7.115, Neurasthenic (ok), 19:32, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
"Не беспокойтесь, я нормально отношусь ко всяким меньшинствам"
Большинство бы так не сказало...
| |
|
8.120, Аноним (-), 20:08, 24/01/2025 [^] [^^] [^^^] [ответить] | –1 +/– | Ты наверное никогда не общался с большинством, возможно в твоем окружении одни м... текст свёрнут, показать | |
|
|
6.93, Аноним (89), 18:21, 24/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Вот вы гентушки и пользуйтесь этим костыльным решением. А мир вокруг вас тоже пользуется своим правом и выбирает безопасный и современный язык
| |
|
|
4.48, Аноним (48), 16:16, 24/01/2025 [^] [^^] [^^^] [ответить]
| +6 +/– |
> Чтобы сам компилятор собирался 9 часов? Ненужно.
Ты каждый день компиляторы собираешь?
Может ты на компиляторо-сборочном предприятии работаешь?
Самое главное - чтобы оно быстро работало у юзера.
А тут в худшем случае почти 30% дропа производительности.
| |
|
5.114, Аноним (236), 19:26, 24/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Ты каждый день компиляторы собираешь?
Он же выше уже написал, что является гентушником. То есть да, ежедневно, и далеко не только компиляторы. 😂
| |
|
|
3.43, Аноним (43), 16:06, 24/01/2025 [^] [^^] [^^^] [ответить]
| –2 +/– |
В С++ он встроенный - std::shared_ptr и std::unique_ptr называется.
| |
|
4.46, Аноним (-), 16:11, 24/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
Компайл-тайм в плюсы не завезли и сомневаюсь что завезут в ближайшие лет десять.
> std::shared_ptr и std::unique_ptr называется.
А все ваши *_ptr - это тормознутое рантайм поделие.
Которое все равно позволяет выстрелить себе в ногу.
| |
|
5.70, Аноним (66), 17:02, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
>Компайл-тайм в плюсы не завезли и сомневаюсь что завезут в ближайшие лет десять.
Про constexpr ты видимо не слышал.
| |
5.75, Аноним (15), 17:10, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Компайл тайм в C++ завезли с момента появления в нём шаблонов.
| |
|
6.79, Аноним (-), 17:21, 24/01/2025 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Компайл тайм в C++ завезли с момента появления в нём шаблонов.
Ну, ну.
Покажи мне "Borrow checker" на плюсах в компайлтайме.
Хоть на шаблонах, хотя constexpr как предложил другой анон в уже скрытом комменте.
| |
|
7.156, Аналгин (?), 00:29, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Боров чекер - это ворованный из плюсов unique_ptr, стыдно должно быть не знать.
| |
|
8.184, Аноним (-), 08:58, 25/01/2025 [^] [^^] [^^^] [ответить] | +1 +/– | Ворованный из плюсов unique_ptr в расте называется Box, стыдно должно быть не зн... текст свёрнут, показать | |
|
|
|
|
4.95, Аноним (-), 18:25, 24/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Вы или не знаете как устроен shared_ptr, или что такое borrow checker. А вероятнее всего, ни первого, ни второго.
| |
|
3.55, Аноним (3), 16:37, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Боров пишется за сутки на любом языке. Другое дело что он так раздражает и если его можно отключить его отключают.
| |
|
4.80, Аноним (-), 17:23, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Боров пишется за сутки на любом языке.
Пруфов, как обычно, не будет?
> Другое дело что он так раздражает и если его можно отключить его отключают.
Если не 6ыdloкодить и соблюдать правила владения, то он даже не ругается.
Но раз он вас настолько раздражает, что вы аж его отключаете... то у меня для вас плохие новости)))
| |
|
5.123, Аноним (123), 20:39, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Я гуглить за тебя на буду. Боров просто проверяет что объект не мутировал это один иф.
| |
|
6.136, Аноним (236), 23:04, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Боров просто проверяет что объект не мутировал
Настало время восхитительных историй...
> Я гуглить за тебя на буду
А зря. Если бы ты таки погуглил, что такое borrow checker, то чушь не писал бы.
| |
|
|
|
|
|
1.28, Аноним (26), 15:17, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> for (size_t i = 0; i < count; ++i) {
> buf[i] = i; // проверка "if (i < 0 || i >= count) trap()" добавлена не будет, так как выше уже имеется условие "i < count" и i не может быть меньше 0.
> }
А если count - 1 > длинны буфера?
| |
|
2.35, Аноним (-), 15:42, 24/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
> А если count - 1 > длинны буфера?
Ты что не любишь сюрпризы? (с)
И вообще, надо оставлять фичи для следущих релизов - чтобы было видно, как в поте лица работают.
| |
2.82, анонимус123 (?), 17:31, 24/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
либо я чего-то не понимаю, либо оба примера с проверками в цикле бессмысленны. В первом примере проверяется то, что и так обеспечивается условиями цикла, а во втором (да и в первом тоже) не проверяется то, что на самом деле может являться причиной ошибки...
| |
|
|
4.185, анонимус123 (?), 09:43, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Ну и где в приведенных примерах это самое «что хочешь с i» делается? Вывод: примеры дурацкие. И если автоматика этих проверок делается исходя из этой же логики «что хочешь», а не «что делается на самом деле», то тогда понятно, почему результат настолько замедляется (это я про «снижает производительность приложений в среднем на 5% (разброс от -1% до 29%), увеличивает размер кода на 9.1% (разброс от -1.4% до 38%)»).
| |
|
5.207, Аноним (207), 13:56, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Встроенная проверка проверяет корректность индекса непосредственно перед применением, исходя на основе эвристики (в данном случае параметров цикла)
Даже если провести инъекцию кода в цикл, то ловушка сработает.
| |
|
6.247, анонимус123 (?), 21:43, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Ну, во-первых, речь в новости идет о механизме защиты от ошибок программиста, а не от умышленных инъекций в код. А во-вторых, если есть возможность провести инъекцию, то кто мешает вставить этот код после проверки, а не перед? Ведь проверка индекса и его последующее использование не являются одной атомарной операцией. Речь же про инъекции в бинарный код, да? Потому как если про исходный, то код будет отличаться от показанного в примерах из-за этих инъекций и мы возвращаемся к тому, с чего начали - оба примера с циклами некорректные.
Ну и да - если эвристика не видит, что индекс в теле цикла не меняется, то что это за эвристика?
| |
|
|
|
|
|
1.30, bOOster (ok), 15:18, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +11 +/– |
Единственно что смог раст - так это потянуть дидов все-таки начать что-то делать с проверками границ буферов и т.п.
| |
|
2.36, anonymmmeer (?), 15:47, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
можно было писать на dafni и генерировать си код.
анотации можно было и на frama-c делать, там они вообще в коментах
| |
2.56, Аноним (3), 16:38, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Сам ты делать конечно же ничего не будешь. Это деды тебе должны? У тебя инфантильность 80 лвл.
| |
|
3.209, bOOster (ok), 14:12, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Сам ты делать конечно же ничего не будешь. Это деды тебе должны?
> У тебя инфантильность 80 лвл.
FreeSwitch под BSD собираю
| |
3.267, bOOster (ok), 08:07, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Сам ты делать конечно же ничего не будешь. Это деды тебе должны?
> У тебя инфантильность 80 лвл.
Да и дидам вроде меня это не нужно было. Мы умеем пользоваться "презервативами" и прежде чем выпустить код в мир пытаемся всесторонне его протестировать начиная еще с алгоритма. Но потом появились НЕинфантильные бездарности типа Анонима которые просто не представляют как их код работает начиная с алгоритма.
| |
3.268, bOOster (ok), 08:09, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Сам ты делать конечно же ничего не будешь. Это деды тебе должны?
> У тебя инфантильность 80 лвл.
И приходится дидам заниматся тем чтобы придурок прячущийся за Анонимом хоть как-то мог что-то на г0внокодить, но этот код хоть как-то работал без ошибок.
| |
|
2.158, Ivan_83 (ok), 00:34, 25/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
Глупости.
Кто хотел и интересовался - читал МыщьХ ещё в начале 200х и применял всякое разное из его советов чтобы писать код который меньше падает.
Там среди советов было и проверять все входные параметры всех функций как будто враги всегда их будут вызывать с заведомо неверными параметрами. Заодно и все входные данные извне, типа файлов или сети.
Менять местами костанту и переменную в условиях: if (0 == i) на случай если вдруг оно станет if (0 = i) - тогда компелятор сразу такое отбракует. В те времена компеляторы не сыпали варнинги на присвоение в условиях. Да и щас их никто не читает.
Да и в принципе индустрия в той части где код на С и С++ за последние лет 15 очень сильно изменилась, даже для обычного пользователя: программы вылетают сильно реже чем в начале 2000х.
| |
|
3.192, eugene_martein (ok), 10:46, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
И любой уважающий себя проект сразу должен содержать в CMakeLists.txt следующие строки:
if(CMAKE_COMPILER_IS_GNUCC)
target_compile_options(${dir} PRIVATE
-fmodules-ts
-Wall
-Werror
-Wextra
-Wpedantic
-pedantic-errors
-Wunused
-Wctor-dtor-privacy
-Wnon-virtual-dtor
-Wnrvo
-Wimplicit-fallthrough
-Wshift-negative-value
-Wswitch-default
-Wswitch-enum
-Wuseless-cast
-Wuninitialized
-Wstrict-overflow=5
-Wstringop-overflow=4
-Warray-bounds=2
-Wduplicated-cond
-Wfloat-equal
-Wshadow
-Wunsafe-loop-optimizations
-Wcast-qual
-Wconversion
-Wparentheses
-Wenum-conversion
-Wflex-array-member-not-at-end
-Wlogical-op
-Wmissing-declarations
-Wpacked
-Wredundant-decls
-Winline
)
endif()
| |
|
4.269, bOOster (ok), 08:13, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
>[оверквотинг удален]
> -Wmissing-declarations
>
> -Wpacked
>
> -Wredundant-decls
>
> -Winline
>
> )
> endif()
Жестко :)
| |
|
|
2.208, Аноним (207), 14:02, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Пошевелились не диды, а корпорация. Потому что квалификация падает, ответственность кода возрастает, патчи и прочие издержки дороже, лучше сразу исходить из ненадежности программиста.
| |
|
3.270, bOOster (ok), 08:16, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Пошевелились не диды, а корпорация. Потому что квалификация падает, ответственность кода
> возрастает, патчи и прочие издержки дороже, лучше сразу исходить из ненадежности
> программиста.
Имено диды. Корпорациям это не нужно. Они свои денежки получили, а дальше хоть "трава не расти"..
| |
|
|
1.40, Аноним (40), 16:02, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
грешим на людей, что они глупы и тем самым хотим создать "умный" компилятор, но "умному" компилятору надо подсказать как по "умному" поступать, а кто подскажет? - глупец?
| |
|
|
3.54, Аноним (40), 16:37, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
пусть имитация интеллекта сначала считать научится
"""
Вопрос:
сколько простых чисел от 0 до 512
Ответ:
Простые числа — это числа больше 1, которые делятся только на 1 и на себя.
Числа от 0 до 512, которые являются простыми, это:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509.
Их 101 штука.
"""
пс: это ИИ на которую выделили 500 лярдов
| |
|
4.60, Аноним (3), 16:41, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Ещё не выделили. Ты пытаешься самоутвердиться указав на незначительную ошибку. Хотя во всех других задачах ИИ на 10 голов лучше тебя.
| |
|
5.65, Аноним (40), 16:46, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Хотя во всех других задачах ИИ на 10 голов лучше тебя.
выделите мне 500 лярдов и я буду умнее всех :)
| |
5.213, Аноним (207), 15:04, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Языковой модуль, употребляющий отстраненную фразу "их 101 штука" вместо "101 простое число" не стоит таких денег.
И это не мелочь, а показатель семантического ответа интернета на простой вопрос (или вопрос, требующий вычислений и дополнительных знаний)
| |
5.271, bOOster (ok), 08:20, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Ещё не выделили. Ты пытаешься самоутвердиться указав на незначительную ошибку. Хотя во
> всех других задачах ИИ на 10 голов лучше тебя.
Незначительная?? Это концептуальная ошибка.. И способность ее не совершать делает набор данных интеллектом, а не тупой библиотекой с системой поиска данных в виде взвешенного графа.
| |
|
4.96, Аноним (96), 18:26, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
в списке выше 97 чисел, а не 101 или 104
(копируем список в текстовый редактор, заменяем пробел на \n, смотрим количество строк)
| |
|
|
|
7.175, Аноним (40), 02:15, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
а ну конечно, он там припрятал уже доказательство гипотезы Римана, осталось только у него это выудить (отпромптинжинерить) :р
| |
|
6.214, Аноним (207), 15:06, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Просто начни утверждать, что простых чисел 98 и посмотри реакцию, как он может отстаивать свою точку зрения )
| |
|
7.221, Аноним (40), 15:39, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
если я начну утверждать, он будет поддакивать, даже на ложное утверждение. Такова суть распила на 500 лярдов бюджета. Напоминает "звездные войны" времен "железной простыни".
| |
|
8.226, Аноним (207), 16:04, 25/01/2025 [^] [^^] [^^^] [ответить] | +1 +/– | ChatGPT ещё и хвастун Он представился так Я отвечу как всеведущий математическ... текст свёрнут, показать | |
|
9.258, Аноним (40), 23:43, 25/01/2025 [^] [^^] [^^^] [ответить] | +1 +/– | как зовут Карлсона Карлсона зовут Карлсон Он главный персонаж серии книг шведс... текст свёрнут, показать | |
|
|
|
|
|
|
3.57, Аноним (40), 16:39, 24/01/2025 [^] [^^] [^^^] [ответить] | +/– | точно Да, я перепроверил Все числа, которые я перечислил, являются простыми, и... большой текст свёрнут, показать | |
3.58, Аноним (40), 16:39, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
ты уверен?
Давай точно перепроверим. Я пересчитаю все числа еще раз.
Вот правильный список простых чисел от 0 до 512:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509.
Их 106.
Прошу прощения за предыдущую ошибку, теперь это верный ответ. Простых чисел от 0 до 512 действительно 106.
| |
|
4.74, Слава Роботам (-), 17:07, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Прошу прощения за предыдущую ошибку, теперь это верный ответ. Простых чисел
> от 0 до 512 действительно 106.
Что такое? У нас мясной мешок который не прошел IQ тест который сам же и предложил?! Поразвелось тут всяких квазиразумных.
| |
|
|
6.178, Аноним (10), 03:19, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Unable to load site
Please try again later. If you are using a VPN, try turning it off. Check the status page for information on outages.
| |
6.222, Аноним (207), 15:44, 25/01/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Сейчас оно утверждает, что диапазон от 0 до 512 содержит 95 простых чисел
| |
|
7.223, Аноним (40), 15:48, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
ну я для проверки через день проверял, он мне так и 101 отвечал, почему-то я думал он запомнит правильный ответ, а нет, так он работать не будет, "плохому" научится видать :)
пс: Да, да он поможет нам найти вакцину от рака (мотаю головой как трамп)
| |
|
|
5.215, Аноним (207), 15:12, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Мясной мешок это Вы, если не поняли, что это ChatGPT подкорректировал свой ответ, на возражение. Модель делает выборку из подходящих цепочек из интернета.
| |
|
|
|
2.49, Аноним (-), 16:20, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Просто писателей компиляторов на порядки меньше чем обычных сишко-кодеров.
И ревьювить, и тестировать кода компилятора можно намного тщательнее чем типикал код.
Но сама идея довольно костыльная. Вот что помешает передать в проверку не то значение?
| |
|
3.63, Аноним (40), 16:44, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Вот что помешает передать в проверку не то значение?
то есть сишник должен быть не глупцом, а раз не глупец, на кой это хрень?
| |
3.216, Аноним (207), 15:15, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Так в примере же показана проверка границ цикла, в предположение. что кодер корректно соотнес параметры цикла и размер динамического буфера.
| |
|
|
1.71, Аноним (-), 17:05, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +4 +/– |
> "__counted_by(N)" - определяет размер буфера в элементах целевого типа.
А синтааксис из стандарта [[attribute]] им, видимо, не зашел? И надо вместо этого сдеоать анномацию похожую на вызов функции? Вот уж господа голубых кровей.
| |
|
2.201, Аноним (201), 12:20, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Синтаксис из стандарта сломает совместимость с компиляторами, которые этот синтаксис не поддерживают. Их задача - полная обратная совместимость. Собирался код в Turbo C - значит, должен продолжать собираться.
| |
|
3.249, Аноним (-), 21:52, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Синтаксис из стандарта сломает совместимость с компиляторами, которые этот синтаксис не
> поддерживают.
1) Эппла это вообще врядли колышет, с своим clang'ом под лично себя.
3) C23 (а по моему и более ранние) уже и так этот синтаксис запилили, как и плюсы. И все кто хочет вывесить более-менее современный стандарт его взяли в оборот.
> Их задача - полная обратная совместимость. Собирался код в Turbo
> C - значит, должен продолжать собираться.
Очень сомневаюсь что эпплу есть какое-то дело до кода в turbo-c. И вон то имеет с этим определенные проблемы, будучи похожим на вызов функций. И, конечно, турбо-си потом нифига не соберет код с такими аннотациями уже.
| |
|
|
|
2.88, Аноним (-), 18:03, 24/01/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Ха, всего то 1 заголовочный фаил вместо нового языка.
Ха, всего-то добавить аннотации для всех циклов во всем коде.
Ну и один заголовочный файл. Вот без него не взлелит.
| |
|
1.94, Аноним (94), 18:25, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
Самое смешное, что нормальные С программисты выдуманных для них проблем не испытывают.
| |
|
2.99, Аноним (-), 18:43, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Самое смешное, что нормальные С программисты выдуманных для них проблем не испытывают.
"не испытывают" потому что "нормальный С программист" это мифическое существо, вроде розового невидимого единорогога?)) Покажите хоть одного?
А вот "обычные типичные С программисты" проблем не испытывают потому что им и так намана.
Ну переполнил буфер, ну хакнули сервер.
Ну нажал Backspace 28 раз, ну зашел без пароля.
Ну прочитал за пределами буфера, ну 300 тысяч серваков оказались уязвимыми в течении непонятного времени.
Ничего страшного, дело-то житейское.
Главное сишникам намана!
| |
|
3.101, Аноним (101), 18:48, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Покажите хоть одного?
тут же был на днях федя цо
рассказывал что за бабло готов на всё
| |
|
4.107, Аноним (-), 19:06, 24/01/2025 [^] [^^] [^^^] [ответить] | +1 +/– | Так это как раз типикал сишник Процитирую анона из другого треда code Напомн... большой текст свёрнут, показать | |
|
5.264, Аноним (264), 06:17, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Вот только не надо всех под одну гребенку. Этот тип явно дал понять, что за деньги на все пойдет. Это - типичный корпорат, и все эти уязвимости это очевидно намеренные бекдоры.
Нормальные Си программисты они в академ среде, где приоритеты другие, отличные от зарабатывания горы денег
| |
|
|
3.161, Ivan_83 (ok), 00:45, 25/01/2025 [^] [^^] [^^^] [ответить] | +1 +/– | Код пишут люди, люди совершают ошибки В перечисленных вами примерах ничего особ... большой текст свёрнут, показать | |
|
4.183, Аноним (183), 06:05, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
>Ну я и дал им свой e-mail, он у меня вида: xxx@yyy.email
да да, домен .email. Вот прямо так.
На месте выяснилось что такой адрес в программу ввести не возможно, потому что он не корректный (по мнению программы, вернее того кто писал валидатор).
Помнится в какой-то книженции по похапе 7 была регулярка на проверку валидности емыла с учетом всех rfc на тот момент.... Занимала она, если склероз не подводит, около 3 страниц.
| |
4.234, Аноним (236), 17:00, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> В перечисленных вами примерах ничего особенного нет: нашли - исправят.
А если не нашли - не исправят.
| |
|
|
2.103, Аноним (27), 18:50, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Все подобные аргументы звучат как-то вот так
"Что за бред этим ваши ремни безопасности? Нормальные водители проблем с ДТП не испытывают"
| |
|
3.162, Ivan_83 (ok), 00:52, 25/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Таки что из этого должно следовать?
Ремни в ДТП снижают травматичность лишь до определённой степени.
После 40 км/ч ремни уже слабо помогают и если нет подушек безопасности то риски смерти растут по экспоненте к скорости. Да в общем и на 40 км/ч резкая остановка об стену до 0 км/ч будет довольно болезненной и травматичной.
После 70 км/ч уже огромное влияние того как сделан кузов и как он гасит удар.
Если посмотреть на типичные скорости и типичные авто то лучше вообще в этом не ездить :))))
| |
|
4.179, Аноним (27), 05:00, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Ну по логике "тру-Сишников-улучшения-не-нужны" ремни и подушки не нужны, потому что они же только лишь снижают вероятность получит серьезную травму, а не устраняют совсем, плюс опытный водитель "просто умеет хорошо ездить и не попадать в ДТП"
| |
4.235, Аноним (236), 17:05, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Таки что из этого должно следовать?
Халатность.
> Ремни в ДТП снижают травматичность лишь до определённой степени.
Забавно читать умничания о ПДД и ДТП того, кто хвасталя, что авто не имеет и рассекает на самокате.
| |
|
5.252, Ivan_83 (ok), 21:59, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
И?
Права то у меня есть на почти все категории, просто я не люблю, не хочу и не собираюсь шоферить.
И в отличии видимо от вас я уже испытал несколько раз на своей шкуре каково это с 20-30 км/ч остановится резко в ноль.
| |
|
4.254, Аноним (-), 22:06, 25/01/2025 [^] [^^] [^^^] [ответить] | +/– | Представьте нижеописанное - но теперь вы вылетаете в лобовуху и тормозите на ско... большой текст свёрнут, показать | |
|
5.256, Ivan_83 (ok), 22:34, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
На 70 км/ч даже с ремнём и подушкой будет очень плохо, в среднем.
Во времена когда ремни придумали подушек ещё не было.
| |
|
|
3.180, Смузихлеб забывший пароль (?), 05:31, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Аргументы сторонников любой сомнительной ерунды «ради безопасности» выглядят как прыжки с крыши не просто так, а с защитой в виде зонтика
Да и в приведенном примере речь ни о каком не о ремне безопасности, ведь он реально помогает, а о приматывании к голове обычной пуховой подушки вместо установки подушки безопасности
| |
|
4.186, Аноним (-), 10:09, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Подушка безопасности есть в Rust, а добавление проверки границ в Си и впрямь смотрится как приматывание к голове подушки.
| |
|
5.206, Смузихлеб забывший пароль (?), 13:54, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Это даже не совсем про раст и сишку. Это в общем и целом про обмазывание всякой псевдозащитной ерундой, примерно как в тайп-скрипте: код лишь сильно усложняется, замусоривается горами всевозможных директив и в итоге прога превращается не в разработку, а в то, как бы обойти выставленные ограничения
И даже простейшие правки запросто могут потребовать изменений в нескольких файлах
С другой стороны - очень удобно и просто изображать заказчику активную работу даже когда её не было
| |
5.253, Ivan_83 (ok), 22:04, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Аналогия с авто как то слишком далеко ушла от сути.
По сути оба языка способны решать примерно одни и теже проблемы, при этом имеют разные накладные расходы как на изучение так и на компеляцию и рантайм.
О безопасности тут глупо говорить, ни один язык её не гарантирует.
Гниль пытается снизить bug rate за счёт более строгих правил, но это не панацея чтобы считать её мастхэв.
| |
|
|
|
2.112, Аноним (27), 19:08, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
А вообще, вот такие рассуждения про, что "нормальные программисты на Си проблем с памятью не ведают" - как раз выдает того, кто не имеет никакого понятия про нормальное программирование на Си. Нормальный Си как раз отдает себе отчёт, что у него в руках опасная бритва
| |
|
3.121, Аноним (94), 20:21, 24/01/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Расскажи моему спутниковому софту, что я не умею писать на сях без всего этого "безопасного" дерьма.
| |
|
4.131, Аноним (131), 21:46, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Расскажи моему спутниковому софту, что я не умею писать на сях
> без всего этого "безопасного" дерьма.
Да, да, разумеется умеешь! И софт спутниковый, и по для атомных станций, и ядро линукса.
Все ты можешь, все ты умеешь!
*два кубика галоперидола ему и в палату*
| |
4.217, Аноним (207), 15:20, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Пора составлять петицию, о написание ПО для спутников на ненадежном языке программирования. Надеюсь это модель сириуса, которая сгорит через пару недель.
| |
|
3.190, Аноним (40), 10:34, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Нормальный Си как раз отдает себе отчёт, что у него в руках опасная бритва
так дело не в Си, а в небезопасТной модели памяти и вычислениях.
| |
|
|
1.116, Аноним (116), 19:44, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
В Java такие проверки изначально встроены в язык. И удаление ненужных проверок (т.н. "bounds-checking elimination") гораздо более продвинуто сделано.
Проблема этой магии в том, что не глядя на ассемблерный код ты фиг поймёшь, где и сколько будет проверок. Может быть ни одной (если их все удалил компилятор), а может прямо в середину оптимизированного цикла влепить пару десятков. Как следствие, реальная потеря производительности непредсказуема.
| |
|
2.171, Аноним (167), 01:34, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
на расте пишут те же люди, которые пишут на js. им просто невозможно объяснить, что такое быстрый код. для них быстрый - это раст, им так в бенчмарках сказали
| |
|
|
4.200, Аноним (37), 11:50, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Хех, вот только java в server benchmark набирает 75% скорости от топа (опережая многие из немногих с++ фреймворков кстати). А статический анализатор в явовом clion раз в 20 быстрее чем в плюсовом kdevelop (хотя они обои шлангд используют). Последним на днях пробовал пособирать среднего размеру либу - это просто мучение какое-то, буковку набрал и комп побежал кряхтеть-пердеть-переанализировать проект. С плюсами определнно что-то не так.
| |
|
5.265, Аноним (264), 06:30, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Не только с плюсами, а со всей парадигмой ООП в целом. Нет, не Кей'евской, а от МС.
Такой бред как хранение кода и данных в одном месте могли придумать только в Калифорнии. И за распространение этого бреда скажите спасибо Майкам. Вот и раст, еще одно корпоративное поделие.
| |
|
|
3.197, Аноним (197), 11:02, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Мне их даже жаль. Не понимают всей крутости работы с памятью. Думаю что такие вещи как IOCCC принципиально не смогла бы возниктуть в среде растеров.
И демосцена еще, скажите спасибо Си, за годноту.
| |
|
|
1.118, Илья (??), 19:52, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А это разве не решается через введение безопасной абстракции (мимо дотнет-разработчик)
| |
|
2.132, maximnik0 (?), 21:53, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
>это разве не решается через введение безопасной абстракции (мимо дотнет-разработчик)
Я не знаю зачем Эппл пилит эту библиотеку.Унаследованный проект или на всякий случай ? Они же перешли на ARM64, а там защита гораздо лучше.В АRM64 реализована атрибутная защита памяти MTE ,а теперь добавлена ARM64 GCS (Guarded Control Stack) для аппаратной защиты адресов возврата из функций.Все, описал атрибутами буфера- в случае переполнения срабатывает аппаратная защита.
| |
|
3.133, Аноним (133), 22:11, 24/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Я не знаю зачем Эппл пилит эту библиотеку.Унаследованный проект или на всякий
> случай ? Они же перешли на ARM64, а там защита гораздо лучше.
Последний макбук на интеле вышел в 2020 году.
Он полноценно поддерживает последнюю MacOS Sequoia (вышла всего 4 месяца назад).
И есть шансы что будет поддержка еще и следующей MacOS 16.
Поэтому им вполне полезен этот проект.
Ну и эпл - это не только консюмерские девайсы, а еще и огромная инфраструктура.
А она крутится скорее всего не на армах. Ну, или как минимум не только на армах.
| |
|
4.182, Смузихлеб забывший пароль (?), 05:37, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Едва ли ради одного устаревающего ноутбука они будут переписывать все циклы всей ОС
С другой стороны, хлам они тоже порой выпускают. Тот же свифт-для-всех. Популярности вне яблока это особо не возымело, да и хз чем он лучше того что уже было
| |
|
5.187, iLya (?), 10:27, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Не очень понятно почему свифт это хлам? Написан на llvm, приятный синтаксис, отсутствие gc, умеет интеропт с с/с++/java, достаточно быстрый ...
На сколько я знаю, где-то свифт используется как серверный язык. Есть даже фреймворк vapor. Понятно, что язык не серебряная пуля, но он только развивается. Abi стабилен он стал относительно недавно.
Сможет ли свифт занять свою нишу как опенсорсный язык - посмотрим, но впервую очередь он задумывался как замена objective-c.
| |
|
6.205, Смузихлеб забывший пароль (?), 13:44, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
потому что оказался практически никому не нужным вовне яблока ибо посоны пожмотились
Был бы бонусом графический обвес - его бы взяли как ЯП для десктопных приложений. Мб даже мобильных. Собсно, то, что сейчас делает котлин с композом
Без этого - это что-то без симпатичных интерфейсов, типо серверного, но там и так поляна забита и гора наработок, включая джаву и котлин. А ещё - шарп, но это уже для истинных ценителей
Он уже много лет типо занимает нишу, но, с каждым годом, разговоров о нём всё меньше, как и перспектив. И, похоже, даже яблоко на него подзабивает в плане других платформ - последняя новость на офсайте( кроссплатформа ) ещё от сентября
| |
|
|
4.195, Аноним (197), 10:55, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Вот вот. Поэтому армы это игрушки, запихать в планшет чтобы тугосеря дегроднул в тиктоке пока мамка на кухне вино распивает, сидя на полу.
Серьезные вычисления это только на х86.
| |
|
|
2.165, Ivan_83 (ok), 01:13, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Так пиши сразу на другом языке :)
Всмысле нет, там разные кейсы проверок и оно привязано к базовому синтаксису языка.
В любом случае нужно будет много править код, что никому не впёрлось.
| |
2.198, leap42 (ok), 11:02, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Да конечно всё есть уже в glib/apr/ещё где-то. Но сишники народ гордый, каждый сам должен себе свою реализацию строки написать)) Поэтому всегда смеюсь над русто-школьниками, которые like: "сишники ну переходите уже к нас на руст и пишите нам всё, без вас не сможем, у нас лапки".
| |
2.220, Аноним (207), 15:28, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Во-первых эту абстракцию надо еще выдумать, применить и доказать безопасность.
Во-вторых это распространяется на легаси простым включением заголовочного файла.
| |
|
1.119, Аноним (119), 20:03, 24/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Раньше все достаточно сложные программы на Си содержали в себе только кривую реализацию подмножества Лиспа. Теперь ещё и кривую реализацию подмножества Раста будут содержать.
| |
|
2.224, Аноним (207), 15:50, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Раст это строгая типизация. Причем здесь аналогии в подмножества от удобного Вам языка.
| |
|
3.259, Аноним (119), 01:42, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Причем здесь аналогии в подмножества от удобного Вам языка
Вот и вырасло поколение, не знающее классики…
| |
|
|
3.262, Аноним (119), 03:50, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Сливочное масло и продукт содержащий сливочное масло. Улавливаешь синонимичность антагонизма?
| |
|
|
1.147, Ivan_83 (ok), 00:03, 25/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Частично это повторяет функционал: -D_FORTIFY_SOURCE=2
который не требует вообще никак трогать исходники. Одно время я с этим все порты в системе и саму систему собирал. По итогу из того что я заметил оно отловило только в claws-mail выход за границы буфера, за примерно год+ использования.
Полагаю и от того что в огрызке накодили будет столько же толку.
А учитывая что ещё и код надо править то проще вообще без этого обойтись и просто ещё раз проверить что проверки есть в нужных местах.
В целом было бы больше проку если бы оно работало как статический анализатор и насовывала варнингов при включении на те места где проврок не хватает и без необходимости править код.
| |
|
2.194, Аноним (197), 10:51, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Так а может тогда все нормально на самом деле с софтом, если за год ничего так и не нашло?
А то многие так категорично кричат о том, что весь си софт дыряв, а по факту лютое преувеличение.
| |
|
3.255, Ivan_83 (ok), 22:10, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
И да и нет :)
Я уже писал что за последние 15 лет была проделана огромная работа и всё что раньше падало теперь не падает или падает крайне редко.
Просто сейчас багрепорты сильно проще отправлять и есть валгринд с асаном.
Нынче осталась в основном только те баги что не вылезают при обычном использовании, их или какеры ищут анализом кода или фазингом.
Поэтому с одной стороны качество софта сильно выросло с другой ошибок стали находить вроде как больше, просто их теперь публично видно.
| |
|
|
1.228, ilowry (?), 16:17, 25/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А зачем это? Разве всемогучий ИИ не будет уже завтра отлавливать всякие такие ошибки уже на этапе написания кода? Или они что-то знают при ИИ?
| |
1.229, Аноним (207), 16:30, 25/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Ассемблерная вставка, работающая с подконтрольным указателем, естественно, не подконтрольна контролю нового флага? )
| |
1.241, Аноним (241), 19:37, 25/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Какая это по счету попытка переизобрести динамические массивы из ObjectPascal?
Bell Labs продали миру C, через продолжение UNIX, вот все и мучаются уже 50 лет.
| |
|
2.242, _kp (ok), 20:07, 25/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
Си планировался как кросплатфорненный переассемблер. Для очень низкоуровневого языка динамические массивы и сейчас под вопросом, а тогда точно не требовались.
А вот в С++ многое решается средствами самого языка. Впрочем, не все после этого хорошо читается.
Другой вопрос, что если язык позволяет написать дрянь, то найдутся и кто этим воспользуется.
| |
|
1.260, Аноним (260), 01:55, 26/01/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Сколько прошло, уже полвека с создания си? И вот наконец-то сишники изобрели рантайм проверки. Что мешало сделать их лет тридцать назад, а то и раньше - непонятно. Обойтись без рантайм проверк, с зависимыми типами, как в ats сишники тоже не смогли.
| |
|
2.266, Аноним (264), 06:40, 26/01/2025 [^] [^^] [^^^] [ответить]
| +/– |
У меня контроллер станка, каждый цикл на счету. Зачем я буду тратить ресурсы на бессмысленные проверки в рантайме, когда мой станок автономен и никому не нужен вообще?
Мое мнение, мир со своими умными вещами свернул не туда.
| |
|
|