The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"На базе Clang для языка Си реализован режим проверки границ буферов"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"На базе Clang для языка Си реализован режим проверки границ буферов"  +/
Сообщение от opennews (??), 24-Янв-25, 14:35 
Инженеры из компании Apple объявили о готовности для тестирования режима "-fbounds-safety" для компилятора Clang, предоставляющего гарантии безопасной работы с буферами в коде на языке Си. Режим включён в состав форка LLVM, поддерживаемого компанией Apple для проекта Swift. В дальнейшем запланирована постепенная передача функциональности "-fbounds-safety" в основную кодовую базу LLVM/Clang...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=62606

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "На базе Clang для языка Си реализован режим проверки границ ..."  +19 +/
Сообщение от Аноним (1), 24-Янв-25, 14:35 
Растоконец?
Ответить | Правка | Наверх | Cообщить модератору

3. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (3), 24-Янв-25, 14:39 
Просто нас ждёт новая мода на новый язык.
Ответить | Правка | Наверх | Cообщить модератору

6. "На базе Clang для языка Си реализован режим проверки границ ..."  +7 +/
Сообщение от Аноним (6), 24-Янв-25, 14:44 
Да почему же, просто костыль.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

62. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от _kp (ok), 24-Янв-25, 16:43 
Здесь костыль опциональный для отдельных файлов, и даже их частей,
а не всё что есть сплошной костыль.
И главное, нет мартышкиного труда по переписыванию, а можно использовать и существующий код и библиотеки.
Так что, этот вариант  лучше.
Ответить | Правка | Наверх | Cообщить модератору

83. "На базе Clang для языка Си реализован режим проверки границ ..."  –2 +/
Сообщение от Аноним (83), 24-Янв-25, 17:32 
> Так что, этот вариант  лучше.

Если пытаться программы на расте проектировать и писАть в сишном стиле, то да, вариант из статьи лучше. Но наСИльники никак не могут понять, что надо не "си в раст тащить", а менять свою порочную парадигму "программно-разработнического" мышления. Тогда и с боровом бороться не придется, он для вас из "тюремщика" и "пыточных дел мастера" превратится в телохранителя и помощника. А так-то конечно - пытаетесь опасные, вредные и "хакерские" сишные приемчики применять в разработке на расте - он вас и бьет по рукам, нехороший.

Ответить | Правка | Наверх | Cообщить модератору

87. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (87), 24-Янв-25, 18:01 
Ой ну да, конечно. Все кто хейтят си, просто не понимают всей прелести низкоуровневой работы с памятью. Естественно в таком программировании надо быть осторожным.
Но вот заставлять всех использовать мифически безопасный язык, это нифига не выход.
Растаманы пытаются всех загнать в свое стоило. Пытаются стать диктаторами монополистами. Да еслиб все поголовно писали низкоуровневый код на расте, по было бы еще более тормознутым, чем есть сейчас.
Достаточно уже наворотили уровней абстракций, от которых софт разжирел и тормозит, вы еще и хотите лишить нас свободы манипулирования байтами. Нет уж, со своим растом сидите дальше в своих калифорниях, вместе с ооп.
Ответить | Правка | Наверх | Cообщить модератору

91. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 24-Янв-25, 18:16 
"Сорок лет как под наркозом,
Я работатал байтовозом..."
... но на выходе все равно получалась типикАл сишная пограммулина!

> просто не понимают всей прелести низкоуровневой работы с памятью.

Вы это про динамическое раcширение возможностей программы?
Ну, когда очередна дырень с RCE и программа начинает выполнять совсем не то, что запланировал 6ыdl... программист? Когда можно ходить и портить память?

> Естественно в таком программировании надо быть осторожным.

Осторожным, естественно, никто быть не собирался (с)
Как омнячили тогда, так и сейчас омнячат.

> Но вот заставлять всех использовать мифически безопасный язык, это нифига не выход.

С ПДД прокатило. Со стандартами на хавку - тоже. И тут добъемся своего.
Еще вариант ломать сишнику по одному пальцу за каждый выход за границы массива, но мы же не звери))) Да и сишники тогда слишком быстро закончатся. Примерно за пару недель в лучшем случае.

> Да еслиб все поголовно писали низкоуровневый код на расте, по было
> бы еще более тормознутым, чем есть сейчас.

Прям пальцем в небо))
Только почему-то uutils на расте местами работают намного быстрее чем coreutils на сишечке. Наверное то всё неправильные_сишники™ писали. Вот были бы правильные... ух! тогда бы раст обогнали бы)))

Ответить | Правка | Наверх | Cообщить модератору

149. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 00:12 
Вы хоть программировать то умеете?
А то у вас не раст а какой то розовый пони и не С а какой то злой дракон :)

НаСИльники - они сильно разные есть, с сильно разным error/bug rate :)
Старое поколение, ИМХО, много кто учился по книжкам, а там всё обмазано стандартной библиотекой и никак вопросы проверки границ не затрагиваются.

По стилю кода можно часто быстро понять чего ждать в целом :)
Если там стандартная либа и никаких проверок то ну его сразу :)
Если нет либы и нет или мало проверок - надо смотреть, может проверок нет потому что писал дзен мастер и их нет потому что они не нужны.
А бывает код обмазан проверками, каждый аргумент функции проверяется в самом начале и потом уже с ним работают и по ходу тоже везде проверки, для всех внешних данных.


Кстати гноомокцы против проверок, мне как то написали типа нафиг проверки пусть падает или типа того :)

Ответить | Правка | К родителю #83 | Наверх | Cообщить модератору

84. "На базе Clang для языка Си реализован режим проверки границ ..."  +3 +/
Сообщение от Аноним (-), 24-Янв-25, 17:33 
> Здесь костыль опциональный для отдельных файлов, и даже их частей,

А какой тогда смысл???
Если ты знаешь что у тебя проблема с конкрентым файлом или даже его частью (это как? с конкретным циклом что ли?))), то не лучше ли просто исправить ошибку и добавить проверку руками?

Тут же проблема как раз в глобальности. У тебя есть огромная куча кода, которая где-то когда-то выходит за границы и портит память. А где - никто не знает.

Ответить | Правка | К родителю #62 | Наверх | Cообщить модератору

134. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от _kp (ok), 24-Янв-25, 22:54 
> Если ты знаешь что у тебя проблема с конкрентым файлом

   Если это свой или знакомый файл, или не забытый, то проблемы считай, что нет, ибо подобное обязательно исправляется.
Исключение для отдельных сильно мудрёных манипуляций значительным объёмом данных.
  Второй момент, тупо тесты, если не выявлено нарушений доступа к памяти, так можно смело пересобирать обычным компилятором.
  А ведь на Си обычно код общего назначения сейчас не пишут, обычно это или системное ПО, или критичные молули, или вовсе встраиваемое ПО,когда потери быстродействия неуместны.


>добавить проверку руками?

Если совсем весь код на Си обложить проверками, то это и не читаемо и немеренно работы. А тут всё можно на автомате.


> и портит память. А
> где - никто не знает.

Особенно если это не заметно, и не проявляется при работе ПО, например из за резервирования размера буферов, проверки данных и переинициализации отдельных частей.
А с предлагаемым вариантом фиксируется факт нарушения доступа, например в лог, и даже если при старом тесте это могли не выявить, с этим вариантом нарушения будут выявлены.


Ответить | Правка | Наверх | Cообщить модератору

155. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (-), 25-Янв-25, 00:27 
> Второй момент, тупо тесты, если не выявлено нарушений доступа к памяти,
> так можно смело пересобирать обычным компилятором.

Тесты практически никогда не выявляют проблемы с памятью. Только в самых тривиальных случаях. Обычно для такого нужны "специально подготовленные данные" и/или фаззинг.

> А тут всё можно на автомате.

Не на автомате, в том то и дело.

> с этим вариантом нарушения будут выявлены.

Могут быть выявлены. Если повезет.
Но согласен что это лучше чем ничего.

Ответить | Правка | Наверх | Cообщить модератору

150. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 00:13 
Валгринд и асан знает.
Ответить | Правка | К родителю #84 | Наверх | Cообщить модератору

154. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 25-Янв-25, 00:23 
> Валгринд и асан знает.

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

Полностью восстановить ход событий невозможно, повторить не получается, заставить клиента юзать валгринд нереально, поэтому сиди проверяй все подозрительные места, выбрав их по логам. (Просто для контекста - кодовая база на 2М loc)

Если у вас есть идеи как лучшее решение - с удовольствием его выслушаю.

Ответить | Правка | Наверх | Cообщить модератору

166. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 01:18 
Ну вы сами злые буратины.
У нас в продукте давно внедрено что мы собираем с -O2 -g и все корки падают в одно место, там же с них извлекаются бэктрейсы в которых видны и названия функций и нумера строк и названия переменных с их значениями.
Это конечно не на 100% решает все проблемы, но все частые падения мы давно так отловили и пофиксили, насколько помню осталась у нас одна проблема которая проявляется редко при завершении работы, но жить это точно никому не мешает.

Ещё у нас инженера умеют делать тестовые стенды чтобы воспроизвести проблему, это тоже бывает сильно помогает.
Кодовая база - хз сколько там нынче строк, но тоже дофига.

Ответить | Правка | Наверх | Cообщить модератору

9. "На базе Clang для языка Си реализован режим проверки границ ..."  +7 +/
Сообщение от Аноним (-), 24-Янв-25, 14:49 
> Растоконец?

Пффф... если бы...

> снижает производительность приложений в среднем на 5% (разброс от -1% до 29%)
> увеличивает размер кода на 9.1% (разброс от -1.4% до 38%)
> замедляет компиляцию на 11%.

Если на последнее можно забить, то предыдущие два выглядят остойно.
Плюс оно не будет работать со старым кодом автоматом:
> требует добавления в код специальных аннотаций и включения заголовочного файла "ptrcheck.h"

Пройтись по всей кодовой базе и подобавлять аннотации это конечно не так сложно как на раст переписать, но учитывая предыдущие недостатки... имеет ли оно вообще смысл?

Ну и вишенка - оно исправляет только выход за границы буфера.
А как же use-after-free? А как же double-free? А int overflow?

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

16. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аналгин (?), 24-Янв-25, 14:57 
Как будто в другиях ЯП проверки бесплатные. Нет, в расте магическим образом бесплатным оно не станет.
Ответить | Правка | Наверх | Cообщить модератору

20. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Alladin (?), 24-Янв-25, 15:03 
в расте есть множество способов сделать это бесплатным, банально тип &[u8; 128] это уже тип с макс границей 128,
а обработка массивов на расте считает плохим тоном прямое обращение по индексу, люди используют итераторы.


а функции с платной проверкой границ максимально явные так как возвращают option.

Ответить | Правка | Наверх | Cообщить модератору

26. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (26), 24-Янв-25, 15:13 
>  в расте есть множество способов сделать это бесплатным, банально тип &[u8; 128] это уже тип с макс границей 128,

И чё? Это просто другая форма записи того же самое, что и в новости. Это не бесплатно

Ответить | Правка | Наверх | Cообщить модератору

34. "На базе Clang для языка Си реализован режим проверки границ ..."  +8 +/
Сообщение от Alladin (?), 24-Янв-25, 15:38 
и то, что зная что тип слайс с 128 элементами:
1. не нужно хранить количество элементов в runtime, а следовательно нет runtime проверок и не нужно доп памяти. прямое обращение к элементу с const номером не добавляет runtime проверок, а обращение к 129 элементу напрямую создает паник функцию (или None если это функция с option), также первый элемент массива абсолютно бесплатен.
2. нет потери характеристик типа между функциями. это также не пустой массив с 128 элементамм от функции к функции (всегда не null, указывает на не освобожденную память, по памяти такой же указатель, размер определен в compltime, размер и тип элемента определен).

и таких моментов в расте множество

Ответить | Правка | Наверх | Cообщить модератору

37. "На базе Clang для языка Си реализован режим проверки границ ..."  –4 +/
Сообщение от Аноним (37), 24-Янв-25, 15:48 
Как не нужно-то, вот ты хочешь цикл фор по этому слайсу, откуда рантайму знать, сколько шагов нужно сделать?
Ответить | Правка | Наверх | Cообщить модератору

104. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (104), 24-Янв-25, 18:50 
pub fn foo(buf: &[u8; 128]) -> u32 {
    let mut result = 0u32;
    for i in buf {
        result += u32::from(*i);
    }
    result
}

-C opt-level=1

foo:
        xor     eax, eax
        mov     dl, 1
        xor     ecx, ecx
.LBB0_1:
        movzx   edx, dl
        and     edx, 1
        add     rdx, rcx
        movzx   ecx, byte ptr [rdi + rcx]
        add     eax, ecx
        mov     rcx, rdx
        cmp     rdx, 128
        setne   dl
        jne     .LBB0_1
        ret

Ответить | Правка | Наверх | Cообщить модератору

129. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (37), 24-Янв-25, 21:16 
cmp     rdx, 128 ни о чём не говорит? В си точно то же самое будет. Только выглядеть не так вср@то.
Ответить | Правка | Наверх | Cообщить модератору

66. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (66), 24-Янв-25, 16:48 
>1. не нужно хранить количество элементов в runtime, а следовательно нет runtime проверок

Ага, просто при итерации количество элементов прямо зашито в машинную инструкцию вместо области данных. Быстрее ли это? На самом деле нет.

>прямое обращение к элементу с const номером не добавляет runtime проверок, а обращение к 129 элементу напрямую создает паник

Прямо как в Си с флагом -Wall.

Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

31. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (31), 24-Янв-25, 15:19 
Здрасте, приехали. А тип "&[u8; 128]" — он что, бесплатен?

Если это не прямая абстракция железа, то очевидно, что либо оно не энфорсится и ограничения действуют только на этапе компиляции, либо оно энфорсится в рантайме и это каждый раз явные проверки на переполнение.

Или у растаманов своя вселенная и код не на реальном железе, а на святом духе и магической пыльце с крыльев феечек работает?

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

124. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Bottle (?), 24-Янв-25, 20:40 
Rust - компилируемый язык, за неправильное приведение типов компилятор настучит по рукам программиста.
Ответить | Правка | Наверх | Cообщить модератору

144. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от _kp (ok), 24-Янв-25, 23:39 
> в расте есть множество способов сделать это бесплатным..

Так с очевидными операциями с массивами и проблем обычно нет, и проверки простые

>>итераторы

А когда индексы/указатели получены на основе аргументов, да к ваниантным структурам,  получаем те же проверки в рантайме.

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

152. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 00:17 
Хоспаде, какие конченные люди.
Обращение к элементу массива по индексу это один из святых граалей, фича которая мастхэв.

Периодически бывает нужно или таблицу для перекодирования иметь или ещё что то удобно упихать в таблицу потому что на входе у тебя какие то числа на которые надо что то делать.

Если дрюкатся через итераторы то вместо o(1) будет o(n) сложность доступа до рандомного элемента массива.

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

157. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 25-Янв-25, 00:33 
> Хоспаде, какие конченные люди.

Хоспаде, так это ты про себя же говоришь!
У тебя никто не отбирает доступ по индексу. Даже остается доступ без всех проверок вообще. Разобрался бы вначале о чем речь, а потом бы лез в комменты.

Ответить | Правка | Наверх | Cообщить модератору

170. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 01:29 
Все итераторы которые я видел не умели o(1) обращение по индексу. Они потому интераторыми и назывались что там другая механика работы и другой синтаксис.
Ответить | Правка | Наверх | Cообщить модератору

29. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (29), 24-Янв-25, 15:18 
> Как будто в другиях ЯП проверки бесплатные. Нет, в расте магическим образом бесплатным оно не станет.

Разумеется.
Но в расте ты платишь в основном временем компиляции.
При использовании слайсов - проверка делается только один раз.
При использовании итераторов - тоже только один раз.
При использовании прямой итерации по массиву, то да - получается также как тут.
Т.е. получается лучше во всех случаях кроме такого.

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

33. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аноним (37), 24-Янв-25, 15:33 
Так а что мешает обсуждаемому компилятору, раз он уже знает максимально возможный индекс, проверить только его? Ничего.
Ответить | Правка | Наверх | Cообщить модератору

45. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (-), 24-Янв-25, 16:08 
> Так а что мешает обсуждаемому компилятору, раз он уже знает
> максимально возможный индекс, проверить только его? Ничего.

Неа. Оно должно работать с generic code.
Ты можешь в нем напр. изменить i. Поэтому они вынуждены проверять на каждой итерации.
А со слайсом/итератором - уже внутри делается проверка на границы один раз.

Ответить | Правка | Наверх | Cообщить модератору

50. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аналгин (?), 24-Янв-25, 16:21 
Ты ничего там не поменяешь так чтобы компилятор об этом не знал.
Ответить | Правка | Наверх | Cообщить модератору

81. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (-), 24-Янв-25, 17:25 
> Ты ничего там не поменяешь так чтобы компилятор об этом не знал.

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

Ответить | Правка | Наверх | Cообщить модератору

97. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (37), 24-Янв-25, 18:31 
В этом случае да, придётся чекать каждый раз (но и на расте тоже). Но обычно всё же нет, в джаве компилятор умеет отключать проверки в циклах.
Ответить | Правка | Наверх | Cообщить модератору

32. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (32), 24-Янв-25, 15:22 
В расте большая часть проверок в compile-time.
Т.е разработчику придется подождать подольше, CI будет бегать не так шустро.
Может придется купить билд-машину помощнее.

А в предложенном варианте
> снижает производительность приложений в среднем на 5% (разброс от -1% до 29%)

у КАЖДОГО пользователя.
А если их будут миллионы?

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

140. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (140), 24-Янв-25, 23:12 
Проснись уже...
Ответить | Правка | Наверх | Cообщить модератору

41. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (-), 24-Янв-25, 16:04 
Станет, но без всякой магии.

Например:

    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% производительности.

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

51. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аналгин (?), 24-Янв-25, 16:23 
Какой ужас. Даже джава в первом примере автоматически уберет проверку.
Ответить | Правка | Наверх | Cообщить модератору

146. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 24-Янв-25, 23:52 
Я думаю, что C тоже удалит её, но ситуации бывают сложнее, и вот там функциональщина начинает рулить.
Ответить | Правка | Наверх | Cообщить модератору

141. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (140), 24-Янв-25, 23:16 
> Проверки в расте не бесплатные, но они дешевле, чем 5% производительности.

Это кто сказал? Тутна Сях даже удаляешь прстую команду - бац +30% тормозов, из-а архитектурных особенностей / недетерминизма, а у вас максимум 5% всегда......
Так же, хначит и в Си будет - не больше чем на Rust, в конкретном случае. Вы меня просто поражаете!

Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

148. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 25-Янв-25, 00:11 
> Это кто сказал?

Проскакивало что-то в информационном потоке, какие-то попытки оценить накладные расходы на реальном проекте. Я не помню, что именно, поэтому ссылки не будет.

> хначит и в Си будет - не больше чем на Rust

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

Ответить | Правка | Наверх | Cообщить модератору

153. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 00:21 
> buf.iter_mut().take(count).enumerate().map(|(i, b)| *b = i);

Нечитаемая галомотня.

Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

159. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 25-Янв-25, 00:37 
> Нечитаемая галомотня.

Мда... просто перепись неосиляторов с сишкизмом голового мозга в терминальной стадии.
В таком случае понятно почему вы кроме си ничего осилить не можете. Там же сложнаааа.

Как раз все просто и понятно:
- берешь итератор, именно мутабельный
- указываешь что нужны первые count
- итерируешься и для каждого элемента выполняешь присваивание

Ответить | Правка | Наверх | Cообщить модератору

174. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 02:08 
Вопрос не в неосиляторстве а в том нафига делать так сложно.

> 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) оно будет работать без проблем и не требует никаких проверок.


Так вот, этот ваш крипто код конечно занятный, но копатся в этом не интересно.
Интересно открыть код, понять про что он и где проблема, поправить и занятся чем то приятным.
Ваша запись более длинная и более сложная, нужно знать больше ключевых слов и понимать как они работают чтобы представить какой оно даёт результат.
Зачем это надо когда есть более простое и наглядное решение делающее ровно то же самое?

Ответить | Правка | Наверх | Cообщить модератору

25. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (25), 24-Янв-25, 15:08 
Так кланг же высылает ворнинги при использовании обнуленного указателя
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

67. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от _kp (ok), 24-Янв-25, 16:51 
> снижает производительность приложений в среднем на 5% (разброс от -1% до 29%)
> увеличивает размер кода на 9.1% (разброс от -1.4% до 38%)
>> выглядят остойно.

Если сплошной код типа  *x++ ? x[*y+n] = *z++...
то и будут максимальные потери. И будут они на любом языке с проверкой границ.

Но для критичных мест есть же #pragma

>>не так сложно как на раст переписать

Переписать можно и на С++ безопасно. Если делать нечего то и на JS.
А если переписывание не финансируется? За чей счет несложно переписать?
Зато с предлагаемым вариантом можно перекомпилировать код, и
и можно сразу запустить. А когда перепишут всё. Что тоже значительная разница.

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

76. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (-), 24-Янв-25, 17:12 
> А если переписывание не финансируется? За чей счет несложно переписать?

Эм... я вроде и написал, что то что предлагают проще и дешевле чем переписывать.
Откуда вы взяли "несложно переписать"?

> Зато с предлагаемым вариантом можно перекомпилировать код,
> и можно сразу запустить.

И... И ничего не поменяется)))

Чудес не бывает - вам все равно придется пройтись по ВСЕМ циклам и расставить нужные аннотации. И желательно ничего не напутать в процессе.
Что не такая уж маленькая работа по сравнению с "перекомпилировал и запустил".

Ответить | Правка | Наверх | Cообщить модератору

100. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Anonymmm (?), 24-Янв-25, 18:44 
может проблема в руках?
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

125. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от анон (?), 24-Янв-25, 21:09 
Не так давно здесь писали про компилятор fil-c для C/C++ (форк Clang). Теже 5%. Чудес не бывает - это скрытые проверки на диапазоны массивов. Много программ собирается без переписывания, но изменяется ABI.
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

128. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Sergey (??), 24-Янв-25, 21:15 
Ещё со времен Windows 2000 дебаггер имел возможность ставить хардварные брейкпоинты на запись в область памяти. Gdb так не умеет? Прошу прощения за глупый вопрос, недавно с линуксом работаю.
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

151. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 25-Янв-25, 00:13 
x86 может поставить 4 таких брекпойнта.
Ответить | Правка | Наверх | Cообщить модератору

89. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (89), 24-Янв-25, 18:12 
все прям бросили раст, плюсы, го и побежали  писать на древнем С. Ядро Линукса, xne, драйверы , контроллеры и легаси тулы линукса - вот и вся ЦА этого языка
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

92. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (89), 24-Янв-25, 18:18 
опеннет фантазеров еще забыл упомянуть как ЦА для Си
Ответить | Правка | Наверх | Cообщить модератору

142. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (140), 24-Янв-25, 23:25 
Да это вы тут какой то фантазёр, я ранее тут даже приводил ссылку на оч.крутой benchmark, а не как обычно от Васяня, и даже сделал суммирующий анализ оттуда табличек производительности разных языков. Пусть Rust не самое дно по производительности - но, дно.
Не знаю как у них так криворуко получилось. Выше даже вон привёл анализ чьего то примера ассемблера от него, на простейшем цикле.
Так кто тут фантазёр?...
Ответить | Правка | Наверх | Cообщить модератору

160. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (-), 25-Янв-25, 00:40 
> я ранее тут даже приводил ссылку
> даже сделал суммирующий анализ

И никаких пруфов. Даже на свой коммент тут.

> Так кто тут фантазёр?...

Ну, получается что ты.
Talk is cheap. Show me the link.

Ответить | Правка | Наверх | Cообщить модератору

173. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (140), 25-Янв-25, 02:01 
На утрись:
https://www.opennet.me/opennews/art.shtml?num=62343#94

А, анализ тут асма от Rust'a уже зачищен:
https://www.opennet.me/opennews/art.shtml?num=62606#137

Ответить | Правка | Наверх | Cообщить модератору

4. "На базе Clang для языка Си реализован режим проверки границ ..."  –2 +/
Сообщение от laindono (ok), 24-Янв-25, 14:39 
В современных языках это и так есть по умолчанию. В целом хорошая идея, всё равно сишников заставить писать нормальный код невозможно. А так хоть падать будет с читабельной ошибкой. Это определённо лучше, чем код, который то работает, то не работает, то работает, но странно.
Ответить | Правка | Наверх | Cообщить модератору

143. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (140), 24-Янв-25, 23:30 
Синтаксис плохенький :( и ещё ряд жутких идеалогических недостатков :(
- использовать это мало кто будет.
Т.б.было уже подобное - в GCC, не много ни мало лет двадцать назад. Выпилили позже из-за недоделанности и заброшенности, никому не надо оказалось. Либо с такими же проблемами реализации как тут.
Ответить | Правка | Наверх | Cообщить модератору

7. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (7), 24-Янв-25, 14:46 
> Включение режима "-fbounds-safety" снижает производительность приложений в среднем на 5% (разброс от -1% до 29%), увеличивает размер кода на 9.1% (разброс от -1.4% до 38%) и замедляет компиляцию на 11%.

Ахахах, т.е. мяу! (с)
Нафига оно тогда надо?

Напомнило историю с MiraclePTR

Ответить | Правка | Наверх | Cообщить модератору

10. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (10), 24-Янв-25, 14:52 
We anticipate that MiraclePtr meaningfully reduces the browser process attack surface of Chrome by protecting ~50% of use-after-free issues ...
Ответить | Правка | Наверх | Cообщить модератору

19. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (-), 24-Янв-25, 15:01 
> We anticipate that MiraclePtr meaningfully reduces the browser process attack surface of
> Chrome by protecting ~50% of use-after-free issues ...

"Потребление памяти основным процессом браузера при применении MiraclePtr увеличивается на 5.5-8% в сборках для настольных систем и на 2% в версии для Android. Среднее повышение потребления для всех процессов оценивается в 1-3%. Кроме того, при использовании MiraclePtr зафиксированы отдельные регрессии, приводящие к снижению производительности"

И вторая половина ошибок еще осталась.
По принципу Парето найти остальные 50% будет гораздо сложнее и дороже чем первые.

К сожалению это только для С++.
Было бы интересно применить оба подхода одновременно и получить что-то типа "на 50% медленнее, 50% жрет больше памяти, на 25% дольше компилируется".

Ответить | Правка | Наверх | Cообщить модератору

130. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Bottle (?), 24-Янв-25, 21:44 
Я знаю как. Оберни это сугубо в шаблоны. Header-only, хотя отчасти это следует из шаблонов.
Не забудь ещё завернуть это дело в десяток билд систем. И чтобы при этом всё скачивалось с интернета, чтобы при очередном апдейте весь проект падал.
Ответить | Правка | Наверх | Cообщить модератору

15. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (15), 24-Янв-25, 14:56 
Ну т.е., меньшее замедление, чем затыкание всевозможных Spectre-Meltdown'ов.
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

8. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (26), 24-Янв-25, 14:48 
> char *buf = (char *)malloc(10); // для указателя buf будут сохранены сведения о границах

Если это Си, а не С++, то приведение типов тут не нужно, void* можно сохранить в любой указатель

Ответить | Правка | Наверх | Cообщить модератору

53. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аноним (53), 24-Янв-25, 16:27 
Нет ничего хуже человека, который реально пишет на C++, но при этом думает, что знает чистый Си.
Ответить | Правка | Наверх | Cообщить модератору

167. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аноним (167), 25-Янв-25, 01:23 
нет ничего хуже человека, который думает, что это разные языки
Ответить | Правка | Наверх | Cообщить модератору

17. "На базе Clang для языка Си реализован режим проверки границ ..."  –3 +/
Сообщение от xsignal (ok), 24-Янв-25, 14:58 
"Rust is obsolete", главную фичу раста реализовали в Си.
Ответить | Правка | Наверх | Cообщить модератору

27. "На базе Clang для языка Си реализован режим проверки границ ..."  +3 +/
Сообщение от Аноним (27), 24-Янв-25, 15:14 
Borrow checker'а нет, не реализовали выходит
Ответить | Правка | Наверх | Cообщить модератору

39. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (15), 24-Янв-25, 15:55 
Чтобы сам компилятор собирался 9 часов? Ненужно.
Ответить | Правка | Наверх | Cообщить модератору

47. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (-), 24-Янв-25, 16:13 
> Чтобы сам компилятор собирался 9 часов? Ненужно.

А зачем вы собираете компилятор?
Вы что, из этих?

> Ненужно.

Угу. Намного нужнее выходить за границы буферов.

Ответить | Правка | Наверх | Cообщить модератору

73. "На базе Clang для языка Си реализован режим проверки границ ..."  –2 +/
Сообщение от Аноним (15), 24-Янв-25, 17:07 
Я из гентушников и что? Пока право выбирать дистры, к счастью, не отменили.

А вот вам сделали достаточно простое решение, чтоб не выходить за границы. И без всяких чекеров бровов.

Ответить | Правка | Наверх | Cообщить модератору

77. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (27), 24-Янв-25, 17:15 
Так и в Генте вроде компилятор не часто собирают, разве нет?

А борроу чекер проверяет очень много всего, вещь нужная, отказываться не хотим

Ответить | Правка | Наверх | Cообщить модератору

168. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (167), 25-Янв-25, 01:25 
собирали бы нечасто, если бы от этого мусора не зависели ff и  thunderbird. а так можно было бы годами llvm не трогать, чтобы не воняло
Ответить | Правка | Наверх | Cообщить модератору

78. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 24-Янв-25, 17:19 
> Я из гентушников и что?
> Пока право выбирать дистры, к счастью, не отменили.

Не, не, ничего. Все и так понятно.
Разумеется это отлично. Не беспокойтесь, я нормально отношусь ко всяким меньшинствам

> А вот вам сделали достаточно простое решение, чтоб не выходить за границы.

Это не мне сделали, а дыряшечникам.
Ну, посмотрим поможет ли это им. Потому что самые упоро... т.е. упорные признают только гнутость, а туда это не добавляли и не факт что добавят.

Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

115. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Neurasthenic (ok), 24-Янв-25, 19:32 
"Не беспокойтесь, я нормально отношусь ко всяким меньшинствам"
Большинство бы так не сказало...
Ответить | Правка | Наверх | Cообщить модератору

120. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аноним (-), 24-Янв-25, 20:08 
> "Не беспокойтесь, я нормально отношусь ко всяким меньшинствам"
> Большинство бы так не сказало...

Ты наверное никогда не общался с большинством, возможно в твоем окружении одни меньшинства))

И да, сказало бы.
Добавив "мне в общем-то пофигу чем вы там занимаетесь, главное меня оставьте в покое".

Ответить | Правка | Наверх | Cообщить модератору

93. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (89), 24-Янв-25, 18:21 
Вот вы гентушки и пользуйтесь этим костыльным решением. А мир вокруг вас тоже пользуется своим правом и выбирает безопасный и современный язык
Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

48. "На базе Clang для языка Си реализован режим проверки границ ..."  +6 +/
Сообщение от Аноним (48), 24-Янв-25, 16:16 
> Чтобы сам компилятор собирался 9 часов? Ненужно.

Ты каждый день компиляторы собираешь?
Может ты на компиляторо-сборочном предприятии работаешь?

Самое главное - чтобы оно быстро работало у юзера.
А тут в худшем случае почти 30% дропа производительности.

Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

114. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (114), 24-Янв-25, 19:26 
> Ты каждый день компиляторы собираешь?

Он же выше уже написал, что является гентушником. То есть да, ежедневно, и далеко не только компиляторы. 😂

Ответить | Правка | Наверх | Cообщить модератору

43. "На базе Clang для языка Си реализован режим проверки границ ..."  –3 +/
Сообщение от Аноним (43), 24-Янв-25, 16:06 
В С++ он встроенный - std::shared_ptr и std::unique_ptr называется.
Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

46. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (-), 24-Янв-25, 16:11 
Компайл-тайм в плюсы не завезли и сомневаюсь что завезут в ближайшие лет десять.

> std::shared_ptr и std::unique_ptr называется.

А все ваши *_ptr - это тормознутое рантайм поделие.
Которое все равно позволяет выстрелить себе в ногу.

Ответить | Правка | Наверх | Cообщить модератору

70. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аноним (66), 24-Янв-25, 17:02 
>Компайл-тайм в плюсы не завезли и сомневаюсь что завезут в ближайшие лет десять.

Про constexpr ты видимо не слышал.

Ответить | Правка | Наверх | Cообщить модератору

75. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аноним (15), 24-Янв-25, 17:10 
Компайл тайм в C++ завезли с момента появления в нём шаблонов.
Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

79. "На базе Clang для языка Си реализован режим проверки границ ..."  +3 +/
Сообщение от Аноним (-), 24-Янв-25, 17:21 
>  Компайл тайм в C++ завезли с момента появления в нём шаблонов.

Ну, ну.
Покажи мне "Borrow checker" на плюсах в компайлтайме.
Хоть на шаблонах, хотя constexpr как предложил другой анон в уже скрытом комменте.

Ответить | Правка | Наверх | Cообщить модератору

156. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аналгин (?), 25-Янв-25, 00:29 
Боров чекер - это ворованный из плюсов unique_ptr, стыдно должно быть не знать.
Ответить | Правка | Наверх | Cообщить модератору

95. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (-), 24-Янв-25, 18:25 
Вы или не знаете как устроен shared_ptr, или что такое borrow checker. А вероятнее всего, ни первого, ни второго.
Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

55. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (3), 24-Янв-25, 16:37 
Боров пишется за сутки на любом языке. Другое дело что он так раздражает и если его можно отключить его отключают.
Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

80. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 24-Янв-25, 17:23 
> Боров пишется за сутки на любом языке.

Пруфов, как обычно, не будет?

> Другое дело что он так раздражает и если его можно отключить его отключают.

Если не 6ыdloкодить и соблюдать правила владения, то он даже не ругается.
Но раз он вас настолько раздражает, что вы аж его отключаете... то у меня для вас плохие новости)))

Ответить | Правка | Наверх | Cообщить модератору

123. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (123), 24-Янв-25, 20:39 
Я гуглить за тебя на буду. Боров просто проверяет что объект не мутировал это один иф.
Ответить | Правка | Наверх | Cообщить модератору

136. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (114), 24-Янв-25, 23:04 
> Боров просто проверяет что объект не мутировал

Настало время восхитительных историй...

> Я гуглить за тебя на буду

А зря. Если бы ты таки погуглил, что такое borrow checker, то чушь не писал бы.

Ответить | Правка | Наверх | Cообщить модератору

164. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Нуину (?), 25-Янв-25, 01:07 
> Если не 6ыdloкодить и соблюдать правила владения, то он даже не ругается.

А еще умеет ub https://github.com/rust-lang/rust/issues/25860 . Как фича с 15 года.

Ответить | Правка | К родителю #80 | Наверх | Cообщить модератору

28. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (26), 24-Янв-25, 15:17 
> for (size_t i = 0; i < count; ++i) {
>       buf[i] = i; // проверка "if (i < 0 || i >= count) trap()" добавлена не будет, так как выше уже имеется условие "i < count" и i не может быть меньше 0.
>    }

А если count - 1 > длинны буфера?

Ответить | Правка | Наверх | Cообщить модератору

35. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (-), 24-Янв-25, 15:42 
> А если count - 1 > длинны буфера?

Ты что не любишь сюрпризы? (с)
И вообще, надо оставлять фичи для следущих релизов - чтобы было видно, как в поте лица работают.


Ответить | Правка | Наверх | Cообщить модератору

82. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от анонимус123 (?), 24-Янв-25, 17:31 
либо я чего-то не понимаю, либо оба примера с проверками в цикле бессмысленны. В первом примере проверяется то, что и так обеспечивается условиями цикла, а во втором (да и в первом тоже) не проверяется то, что на самом деле может являться причиной ошибки...
Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

169. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (167), 25-Янв-25, 01:28 
не понимаешь, с i можно что хочешь делать в цикле, и слава богу
Ответить | Правка | Наверх | Cообщить модератору

30. "На базе Clang для языка Си реализован режим проверки границ ..."  +9 +/
Сообщение от bOOster (ok), 24-Янв-25, 15:18 
Единственно что смог раст - так это потянуть дидов все-таки начать что-то делать с проверками границ буферов и т.п.
Ответить | Правка | Наверх | Cообщить модератору

36. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от anonymmmeer (?), 24-Янв-25, 15:47 
можно было писать на dafni и генерировать си код.
анотации можно было и на frama-c делать, там они вообще в коментах
Ответить | Правка | Наверх | Cообщить модератору

56. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аноним (3), 24-Янв-25, 16:38 
Сам ты делать конечно же ничего не будешь. Это деды тебе должны? У тебя инфантильность 80 лвл.
Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

158. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 00:34 
Глупости.

Кто хотел и интересовался - читал МыщьХ ещё в начале 200х и применял всякое разное из его советов чтобы писать код который меньше падает.
Там среди советов было и проверять все входные параметры всех функций как будто враги всегда их будут вызывать с заведомо неверными параметрами. Заодно и все входные данные извне, типа файлов или сети.
Менять местами костанту и переменную в условиях: if (0 == i) на случай если вдруг оно станет if (0 = i) - тогда компелятор сразу такое отбракует. В те времена компеляторы не сыпали варнинги на присвоение в условиях. Да и щас их никто не читает.

Да и в принципе индустрия в той части где код на С и С++ за последние лет 15 очень сильно изменилась, даже для обычного пользователя: программы вылетают сильно реже чем в начале 2000х.

Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

40. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (40), 24-Янв-25, 16:02 
грешим на людей, что они глупы и тем самым хотим создать "умный" компилятор, но "умному" компилятору надо подсказать как по "умному" поступать, а кто подскажет? - глупец?
Ответить | Правка | Наверх | Cообщить модератору

44. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (15), 24-Янв-25, 16:07 
AI
Ответить | Правка | Наверх | Cообщить модератору

54. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (40), 24-Янв-25, 16:37 
пусть имитация интеллекта сначала считать научится

"""
Вопрос:

сколько простых чисел от 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 лярдов

Ответить | Правка | Наверх | Cообщить модератору

60. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (3), 24-Янв-25, 16:41 
Ещё не выделили. Ты пытаешься самоутвердиться указав на незначительную ошибку. Хотя во всех других задачах ИИ на 10 голов лучше тебя.
Ответить | Правка | Наверх | Cообщить модератору

65. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (40), 24-Янв-25, 16:46 
> Хотя во всех других задачах ИИ на 10 голов лучше тебя.

выделите мне 500 лярдов и я буду умнее всех :)

Ответить | Правка | Наверх | Cообщить модератору

96. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (96), 24-Янв-25, 18:26 
в списке выше 97 чисел, а не 101 или 104
(копируем список в текстовый редактор, заменяем пробел на \n, смотрим количество строк)
Ответить | Правка | К родителю #54 | Наверх | Cообщить модератору

109. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (40), 24-Янв-25, 19:07 
Расскажите это ИИ

https://chatgpt.com/

Ответить | Правка | Наверх | Cообщить модератору

172. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (140), 25-Янв-25, 01:40 
Он просто троллит тебя, он такой.
Ответить | Правка | Наверх | Cообщить модератору

175. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (40), 25-Янв-25, 02:15 
а ну конечно, он там припрятал уже доказательство гипотезы Римана, осталось только у него это выудить (отпромптинжинерить) :р
Ответить | Правка | Наверх | Cообщить модератору

176. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (140), 25-Янв-25, 02:21 
Кто знает.. Как это связанно с сказанным?...
Ответить | Правка | Наверх | Cообщить модератору

57. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (40), 24-Янв-25, 16:39 
точно?

Да, я перепроверил! Все числа, которые я перечислил, являются простыми, и их действительно 101 штука от 0 до 512.

Если хочешь, могу проверить или подсчитать их еще раз по-другому, например, с помощью какого-то метода или программы.

перепроверь

Давай я точно пересчитаю простые числа от 0 до 512.

Вот список простых чисел от 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.

Их 104.

Я ошибся в предыдущем ответе. Прошу прощения за недочет!

пс: ч.и.т.д.

Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

58. "На базе Clang для языка Си реализован режим проверки границ ..."  –1 +/
Сообщение от Аноним (40), 24-Янв-25, 16:39 
ты уверен?

Давай точно перепроверим. Я пересчитаю все числа еще раз.

Вот правильный список простых чисел от 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.

Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

74. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Слава Роботам (-), 24-Янв-25, 17:07 
> Прошу прощения за предыдущую ошибку, теперь это верный ответ. Простых чисел
> от 0 до 512 действительно 106.

Что такое? У нас мясной мешок который не прошел IQ тест который сам же и предложил?! Поразвелось тут всяких квазиразумных.

Ответить | Правка | Наверх | Cообщить модератору

110. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (40), 24-Янв-25, 19:07 
https://chatgpt.com/

пробуй

Ответить | Правка | Наверх | Cообщить модератору

178. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (10), 25-Янв-25, 03:19 
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.
Ответить | Правка | Наверх | Cообщить модератору

49. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (-), 24-Янв-25, 16:20 
Просто писателей компиляторов на порядки меньше чем обычных сишко-кодеров.
И ревьювить, и тестировать кода компилятора можно намного тщательнее чем типикал код.

Но сама идея довольно костыльная. Вот что помешает передать в проверку не то значение?

Ответить | Правка | К родителю #40 | Наверх | Cообщить модератору

63. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (40), 24-Янв-25, 16:44 
> Вот что помешает передать в проверку не то значение?

то есть сишник должен быть не глупцом, а раз не глупец, на кой это хрень?

Ответить | Правка | Наверх | Cообщить модератору

71. "На базе Clang для языка Си реализован режим проверки границ ..."  +4 +/
Сообщение от Аноним (-), 24-Янв-25, 17:05 
> "__counted_by(N)" - определяет размер буфера в элементах целевого типа.

А синтааксис из стандарта [[attribute]] им, видимо, не зашел? И надо вместо этого сдеоать анномацию похожую на вызов функции? Вот уж господа голубых кровей.

Ответить | Правка | Наверх | Cообщить модератору

177. Скрыто модератором  +/
Сообщение от Аноним (140), 25-Янв-25, 03:14 
Ответить | Правка | Наверх | Cообщить модератору

86. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (86), 24-Янв-25, 17:58 
Ха, всего то 1 заголовочный фаил вместо нового языка.
Ответить | Правка | Наверх | Cообщить модератору

88. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (-), 24-Янв-25, 18:03 
> Ха, всего то 1 заголовочный фаил вместо нового языка.

Ха, всего-то добавить аннотации для всех циклов во всем коде.
Ну и один заголовочный файл. Вот без него не взлелит.

Ответить | Правка | Наверх | Cообщить модератору

94. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (94), 24-Янв-25, 18:25 
Самое смешное, что нормальные С программисты выдуманных для них проблем не испытывают.
Ответить | Правка | Наверх | Cообщить модератору

99. "На базе Clang для языка Си реализован режим проверки границ ..."  +2 +/
Сообщение от Аноним (-), 24-Янв-25, 18:43 
> Самое смешное, что нормальные С программисты выдуманных для них проблем не испытывают.

"не испытывают" потому что "нормальный С программист" это мифическое существо, вроде розового невидимого единорогога?)) Покажите хоть одного?

А вот "обычные типичные С программисты" проблем не испытывают потому что им и так намана.
Ну переполнил буфер, ну хакнули сервер.
Ну нажал Backspace 28 раз, ну зашел без пароля.
Ну прочитал за пределами буфера, ну 300 тысяч серваков оказались уязвимыми в течении непонятного времени.

Ничего страшного, дело-то житейское.
Главное сишникам намана!

Ответить | Правка | Наверх | Cообщить модератору

101. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (101), 24-Янв-25, 18:48 
Покажите хоть одного?

тут же был на днях федя цо
рассказывал что за бабло готов на всё

Ответить | Правка | Наверх | Cообщить модератору

107. "На базе Clang для языка Си реализован режим проверки границ ..."  +1 +/
Сообщение от Аноним (-), 24-Янв-25, 19:06 
> тут же был на днях федя цо

Так это как раз типикал сишник!
Процитирую анона из другого треда:


Напомню, что именно под его мудрейшим руководством были созданы:
CVE-2022-1184 use-after-free - local attacker with a user privilege to cause a denial of service.
CVE-2023-2513 use-after-free - allow a privileged local user to cause a system crash
CVE-2024-0775 use-after-free - user to cause an information leak problem while freeing the old quota file names
CVE-2024-43828 integer overflow - may happen causing an
infinite loop in this function, easily reproducible using fstest generic/039.
CVE-2018-10880 - stack-out-of-bounds write - cause a system crash and a denial of service.

Причем первая - CVE-2022-1184 - ваще шикарная.
А теперь микрофон и все лавры передаются ox55ff с лора:


"в 2013 году он закоммитил вот такую портянку github.com/torvalds/linux/commit/dc6982ff4db1f47da73b1967ef5302d6721e5b95

Через 9 лет (2022 год) тысячи глаз наконец-то рассмотрели там уязвимость CVE-2022-1184.
Которую смогли исправить только со второй попытки:
первая github.com/torvalds/linux/commit/65f8ea4cd57dbd46ea13b41dc8bac03176b04233
вторая github.com/torvalds/linux/commit/61a1d87a324ad5e3ed27c6699dfc93218fcf3201

    ext4: check if directory block is within i_size

Бгг. Видимо Теодорчик решил, что в его коде всё within, ведь "индекс проверять надо если программист решил что тут есть шанс того, что он окажется некорректным", а оказалось, что не within. Это какое-то шанс-ориентированное программирование. Сишник к успеху шёл, не получилось, не фартануло.

> рассказывал что за бабло готов на всё

Так и вы рассказывайте! (с)

И это у нас "реальный дед", создатель и мейнтейней линуксовых файлух, десятилетия опыта и все такое. А как бракоделил, так и бракоделит.

Ответить | Правка | Наверх | Cообщить модератору

161. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 00:45 
Код пишут люди, люди совершают ошибки.
В перечисленных вами примерах ничего особенного нет: нашли - исправят.


Если вы за мир где всё делают компуктеры, то не нужно думать что там ошибок не будет, но вот процесс их исправления будет намного хуже.
Раньше везде сидели всякие тётеньки и дяденьги, писали, считали. Они ошибались. Им тыкали в морду и они переделывали.
Потом поставили компьютеры и к ним операторов. Когда случалась ошибка оператор говорила: ну тут компьютер так выдал, идите куданибудь и там разбирайтесь, не мешайте работать.

Мне вот с год назад делали электронный ID с ЭЦП, там внутри обычная смарткарта с NFC а в ней обычный сертификат который госы выпускают и подписывают своим ключём.
Для серта нужен e-mail. Ну я и дал им свой e-mail, он у меня вида: xxx@yyy.email
да да, домен .email. Вот прямо так.
На месте выяснилось что такой адрес в программу ввести не возможно, потому что он не корректный (по мнению программы, вернее того кто писал валидатор). В итоге была куча перезвонов и попыток меня убедить что это какой то не правильный адрес, я даже с каким то там разработчиком вообщался. И пришлось в этот раз дать им gmail.com чтобы они подавились.

А что ты будешь делать когда компьютеры будут писать сами себе программы а ты не впишешься в какой то редкий фильтр а тебе прям без этого жизни не будет?)

Ответить | Правка | К родителю #99 | Наверх | Cообщить модератору

103. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (27), 24-Янв-25, 18:50 
Все подобные аргументы звучат как-то вот так

"Что за бред этим ваши ремни безопасности? Нормальные водители проблем с ДТП не испытывают"

Ответить | Правка | К родителю #94 | Наверх | Cообщить модератору

162. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 00:52 
Таки что из этого должно следовать?

Ремни в ДТП снижают травматичность лишь до определённой степени.
После 40 км/ч ремни уже слабо помогают и если нет подушек безопасности то риски смерти растут по экспоненте к скорости. Да в общем и на 40 км/ч резкая остановка об стену до 0 км/ч будет довольно болезненной и травматичной.
После 70 км/ч уже огромное влияние того как сделан кузов и как он гасит удар.

Если посмотреть на типичные скорости и типичные авто то лучше вообще в этом не ездить :))))

Ответить | Правка | Наверх | Cообщить модератору

112. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (27), 24-Янв-25, 19:08 
А вообще, вот такие рассуждения про, что "нормальные программисты на Си проблем с памятью не ведают" - как раз выдает того, кто не имеет никакого понятия про нормальное программирование на Си. Нормальный Си как раз отдает себе отчёт, что у него в руках опасная бритва
Ответить | Правка | К родителю #94 | Наверх | Cообщить модератору

121. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (94), 24-Янв-25, 20:21 
Расскажи моему спутниковому софту, что я не умею писать на сях без всего этого "безопасного" дерьма.
Ответить | Правка | Наверх | Cообщить модератору

131. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (131), 24-Янв-25, 21:46 
> Расскажи моему спутниковому софту, что я не умею писать на сях
> без всего этого "безопасного" дерьма.

Да, да, разумеется умеешь! И софт спутниковый, и по для атомных станций, и ядро линукса.
Все ты можешь, все ты умеешь!

*два кубика галоперидола ему и в палату*

Ответить | Правка | Наверх | Cообщить модератору

163. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 00:53 
Чувак, это тебе лекарств не хватает, раз ты глючный код сравниваешь с бритвой.
Ответить | Правка | Наверх | Cообщить модератору

116. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (116), 24-Янв-25, 19:44 
В Java такие проверки изначально встроены в язык. И удаление ненужных проверок (т.н. "bounds-checking elimination") гораздо более продвинуто сделано.

Проблема этой магии в том, что не глядя на ассемблерный код ты фиг поймёшь, где и сколько будет проверок. Может быть ни одной (если их все удалил компилятор), а может прямо в середину оптимизированного цикла влепить пару десятков. Как следствие, реальная потеря производительности непредсказуема.

Ответить | Правка | Наверх | Cообщить модератору

171. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (167), 25-Янв-25, 01:34 
на расте пишут те же люди, которые пишут на js. им просто невозможно объяснить, что такое быстрый код. для них быстрый - это раст, им так в бенчмарках сказали
Ответить | Правка | Наверх | Cообщить модератору

118. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Илья (??), 24-Янв-25, 19:52 
А это разве не решается через введение безопасной абстракции (мимо дотнет-разработчик)
Ответить | Правка | Наверх | Cообщить модератору

132. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от maximnik0 (?), 24-Янв-25, 21:53 
>это разве не решается через введение безопасной абстракции (мимо дотнет-разработчик)

Я не знаю зачем Эппл пилит эту библиотеку.Унаследованный проект или на всякий случай ? Они же перешли на ARM64, а там защита гораздо лучше.В АRM64 реализована атрибутная защита памяти MTE ,а теперь добавлена ARM64 GCS (Guarded Control Stack) для аппаратной защиты адресов возврата из функций.Все, описал атрибутами буфера- в случае переполнения срабатывает аппаратная защита.

Ответить | Правка | Наверх | Cообщить модератору

133. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (133), 24-Янв-25, 22:11 
> Я не знаю зачем Эппл пилит эту библиотеку.Унаследованный проект или на всякий
> случай ? Они же перешли на ARM64, а там защита гораздо лучше.

Последний макбук на интеле вышел в 2020 году.
Он полноценно поддерживает последнюю MacOS Sequoia (вышла всего 4 месяца назад).
И есть шансы что будет поддержка еще и следующей MacOS 16.
Поэтому им вполне полезен этот проект.

Ну и эпл - это не только консюмерские девайсы, а еще и огромная инфраструктура.
А она крутится скорее всего не на армах. Ну, или как минимум не только на армах.

Ответить | Правка | Наверх | Cообщить модератору

165. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 01:13 
Так пиши сразу на другом языке :)
Всмысле нет, там разные кейсы проверок и оно привязано к базовому синтаксису языка.
В любом случае нужно будет много править код, что никому не впёрлось.
Ответить | Правка | К родителю #118 | Наверх | Cообщить модератору

119. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Аноним (119), 24-Янв-25, 20:03 
Раньше все достаточно сложные программы на Си содержали в себе только кривую реализацию подмножества Лиспа. Теперь ещё и кривую реализацию подмножества Раста будут содержать.
Ответить | Правка | Наверх | Cообщить модератору

147. "На базе Clang для языка Си реализован режим проверки границ ..."  +/
Сообщение от Ivan_83 (ok), 25-Янв-25, 00:03 
Частично это повторяет функционал: -D_FORTIFY_SOURCE=2
который не требует вообще никак трогать исходники. Одно время я с этим все порты в системе и саму систему собирал. По итогу из того что я заметил оно отловило только в claws-mail выход за границы буфера, за примерно год+ использования.

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

В целом было бы больше проку если бы оно работало как статический анализатор и насовывала варнингов при включении на те места где проврок не хватает и без необходимости править код.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру