The OpenNET Project / Index page

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

Релиз проекта Memsafe для безопасной работы с памятью в С++

04.03.2025 21:13

Опубликован релиз проекта Memsafe, реализующего механизм безопасной работы со ссылочными типами и динамической памятью в коде на языке С++. Защита может быть добавлена без нарушения обратной совместимости со старым С++ кодом. Проект оформлен в виде одного заголовочного файла memsafe.h и плагина для компилятора Clang. Код распространяется под лицензией LGPL 2.1.

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

Предложенная техника защиты походит на концепцию владения и заимствования из языка Rust, но реализована на базе сильных и слабых ссылок (стандартных механизмов С++ shared_ptr и weak_ptr). Любые операции с данными для переменной по ссылке возможны только после её захвата, т.е. после преобразования слабой ссылки (weak_ptr) в сильную (shared_ptr).

Способ маркировки объектов в коде библиотеки реализован с помощью С++ атрибутов "[[memsafe(...)]]", что напоминает способ из спецификаций P3038 и P3081 с профилями безопасности (предложены Бьёрном Страуструпом (Bjarne Stroustrup) и Гербом Саттером (Herb Sutter)), но не требует разработки нового стандарта С++ (достаточно использовать уже существующий С++20).

Пример работы плагина анализатора для кода:


     std::vector<int> vec(100000, 0);
     auto x = vec.begin();
     auto y = vec.end();
     vec = {};
     vec.shrink_to_fit(); 
     std::sort(x, y); // malloc(): unaligned tcache chunk detected or Segmentation fault 

Командная строка для запуска компилятора с плагином:


     clang++ -std=c++20 -Xclang -load -Xclang ./memsafe_clang.so -Xclang -add-plugin -Xclang memsafe _example.cpp

Фрагмент вывода плагина компилятора с сообщениями об ошибках, связанных с недействительностью ссылочных переменных после изменения данных в основной переменной:


     _example.cpp:29:17: warning: using main variable 'vect'
        29 |                 vect = {};
           |                 ^
     _example.cpp:30:17: warning: using main variable 'vect'
        30 |                 vect.shrink_to_fit();
           |                 ^
     _example.cpp:31:27: error: Using the dependent variable 'beg' after changing the main variable 'vect'!
        31 |                 std::sort(beg, vect.end()); // malloc(): unaligned tcache chunk detected or Segmentation fault 
           |                           ^

Уровень сообщений плагина можно ограничить в коде с помощью макроса или аргументом командной строки. После проверки исходного кода, плагин можно вообще не использовать, так как он только анализирует AST, но не вносит в него никаких исправлений. С использованием пространства имён "memsafe" и разделением защищённого и незащищённого (unsafe) кода можно познакомиться в данном примере.

  1. Главная ссылка к новости (https://github.com/rsashka/mem...)
  2. OpenNews: C++ Alliance продвигает в C++ механизмы безопасной работы с памятью, опробованные в Rust
  3. OpenNews: DARPA развивает AI-транслятор для переписывания Си-кода на Rust
  4. OpenNews: Проект TrapC развивает Си-подобный язык, безопасно работающий с памятью
  5. OpenNews: Fil-C - компилятор для языков C и C++, гарантирующий безопасную работу с памятью
  6. OpenNews: Бьёрн Страуструп призвал стандартизировать профили C++ для безопасной работы с памятью
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62830-memsafe
Ключевые слова: memsafe, cpp
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (214) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:03, 04/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –24 +/
    Прикольно, С++ превращается в уродливый Rust. Т.е. судя по вайбу (последним новостям), диды таки признали что это реально проблема, а на раст перейти нельзя из-за кучи легаси кода и лени учить новый язык.

    Ну кто бы сомневался, все заминусованые местными хомячками давно об этом говорили. Грядётъ.

     
     
  • 2.4, Дед (??), 22:11, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >а на раст перейти нельзя из-за кучи легаси кода и лени учить новый язык.

    Всё это требует зарплату и не одну (по времени), и не на одного.
    Мораль: работает - не трогай, иначе сам за всё ответишь.

     
     
  • 3.19, НяшМяш (ok), 22:29, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > работает - не трогай

    Но ведь не работает же. Особенно когда потрогал (а трогать надо - движение это жизнь) и сразу словил кучу CVE.

     
     
  • 4.39, Dima (??), 23:16, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Как только что то на уровне С и С++ пишешь на рс, везде ансейф
     
     
  • 5.41, Аноним (41), 23:35, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    ансейф по определению архитектура памяти твоей
     
  • 5.44, px (??), 23:52, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У меня совсем другой опыт
     
  • 3.37, Аноним (37), 23:02, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    >Мораль: работает - не трогай

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

     
     
  • 4.87, Аноним (-), 05:48, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –4 +/
    "Работает - не трожь" - это мораль русских сисадминов. Некоторые его переносят на другие сферы жизни. Тот Дед перевёл его в плоскость программирования. Ещё, слышал такую мораль - "Если хочешь нормально провести выходные, то не настраивай сервер в Пятницу". Это всё скорее не заблуждение, а национальная русская мораль.
     
     
  • 5.115, Смузихлеб забывший пароль (?), 08:59, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    т.е в сша в банковской сфере сисадминами и программистами сидят сплошь русские по национальности ?)
     
  • 5.122, Аномалии (?), 09:14, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не нужно путать системного администратора с эникеем.

    Опять во всем русские виноваты?

     
  • 5.221, U202204161753 (?), 20:10, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > не настраивай сервер в Пятницу

    И?

    (  Вы "теоретик бизнеса"? )

     
  • 4.95, Аноним (95), 06:38, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    При чем тут мораль. Если сервер настроен и работает, то не надо его трогать, это логично.
    Если после трогания сервер может простаивать, это убытки для бизнеса.
    Я периодически слышу критику принципа "работает не трогай". Критикуют этот принцип люди неопытные и некомпетентные, но очень сильно желающие себя проявить. Заканчивается это простоем серверов.
     
     
  • 5.102, Вася Пупкин (?), 07:50, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Должны быть выстроены процессы с zero-down-time и прочим. Но куда до этого некомпитентным выскочкам. А евли вам страшно править уязвимости, то это конечно показывает опытность, да.
     
     
  • 6.165, YetAnotherOnanym (ok), 11:29, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    "Zero-down-time" - это очень дорогое удовольствие. Даже для очень солидных контор целесообразнее предупреждать клиентов о проведении работ (а для этого заранее внести в договор пункт о допустимом даунтайме), чем тратиться обеспечение настоящего "zero-down-time".
    Но куда там высококомпетентному эксперту опеннета до каких-то презренных денежных вопросов.
     
  • 5.128, Аномалии (?), 09:21, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С одной стороны правильно. Если все отлажено и нормально работает и не нужно в ближайшее время ничего улучшать и дыры исправлять, то да. В другом случае, как раз нужно трогать сервер и что надо менять и перенастраивать. Но только чтобы не было простоя нужно подходить к серверу с умом и определенными знаниями. Ну и перед этим все изменения нужно сначала на тестовом сервере проверить, а потом уже в прод
     
  • 5.132, Аноним (132), 09:30, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А потом тебе служба безопасности даёт ссылку на CVE кака раз на твою старую версию и ты в панике поднимаешь версию или увольняешься. Разве не так?
     
     
  • 6.167, YetAnotherOnanym (ok), 11:39, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "Mitigation"? Не, не слышали.
    Когда публикуется CVE, затрагивающая установленный в хозяйстве софт, надо не в панике версию поднимать, а спокойно прикинуть, какие последствия эта CVE может иметь, и как их минимизировать или исключить какими-то вспомогательными мерами. А там и обновлённая версия в репах подоспеет, проверенная (кроме прочего) на отсутствие регрессий.
     
  • 5.144, BeLord (ok), 10:13, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Бизнес считает риски, в том числе того, что сервак упадет, а значит, либо у бизнеса есть резервные серваки, которые спокойно можно модернизировать, либо это не бизнес, а лавочники.
     
  • 4.99, Аноним (99), 07:41, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    и что ты предлагаешь? ты хоть раз сократил свой техдолг?
     
  • 4.117, Смузихлеб забывший пароль (?), 09:01, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это не заблуждение. Это - реалии для сложных систем. Если оно долго проработало и потеряло актуальность - делается ТЗ, готовится документация и делается НОВЫЙ продукт согласно новым реалиям. И им постепенно, с допиливаниями, заменяют старый.
    А не лезут кривыми руками в старый, с кучей подпорок и который местами хз как вообще работает
     
  • 4.126, diakin (ok), 09:15, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Вот так оно "работает не трогали" 30 лет, а потом новое поколение хватается за голову..

    Ну так напиши свое новое, хорошее.. Если есть за что хвататься конечно ))

     
  • 2.7, Bottle (?), 22:12, 04/03/2025 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 3.13, Аноним (-), 22:25, 04/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.17, НяшМяш (ok), 22:27, 04/03/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 4.40, maximnik0 (?), 23:16, 04/03/2025 Скрыто ботом-модератором     [к модератору]
  • +3 +/
     
     
  • 5.54, Карлос Сношайтилис (ok), 00:19, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +5 +/
     
     
  • 6.61, maximnik0 (?), 00:38, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 7.69, Карлос Сношайтилис (ok), 01:10, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 8.127, diakin (ok), 09:20, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 7.73, Аноним (73), 01:40, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 8.81, maximnik0 (?), 03:37, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 9.105, Аноним (73), 08:22, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 10.148, maximnik0 (?), 10:24, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 11.158, Аноним (73), 10:44, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 12.161, maximnik0 (?), 11:02, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 6.77, Аноним (73), 02:33, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
     
  • 7.88, Аноним (88), 05:50, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.125, morphe (?), 09:15, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 6.136, _erthink (?), 09:48, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 7.152, morphe (?), 10:31, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 8.163, Аноним (73), 11:19, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 7.229, maximnik0 (?), 22:30, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 6.142, maximnik0 (?), 10:03, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.116, Аноним (116), 09:01, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 4.166, Аноним (166), 11:34, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 3.27, Аноним (-), 22:42, 04/03/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 4.98, n00by (ok), 07:36, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
  • 2.8, Аноним (8), 22:13, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > а на раст перейти нельзя из-за

    Из-за отсутствия lts версий rustc. И не надо заливать про эндианы. Они фиксируют не компилятор, а язык.

     
     
  • 3.18, НяшМяш (ok), 22:28, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    За lts можно брать версию, которую в дебиане или сентоси заплесневели.
     
     
  • 4.29, Аноним (-), 22:43, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > За lts можно брать версию, которую в дебиане или сентоси заплесневели.

    При этом всегда найдется какой-нибудь bcachefs'ный тул который им не компилится. Не могут хайпующие хипстики - в LTS. Не их это.

     
     
  • 5.42, Карлос Сношайтилис (ok), 23:48, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    То что у тебя bcachefs не компилируется из-за того что сишники не могут в lts это печально, но причём тут Раст?
     
     
  • 6.66, morphe (?), 01:00, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У bcachefs утилиты для управления на Rust написаны, и они требуют последнюю версию компилятора.

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

     
  • 5.64, morphe (?), 00:59, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Т.е ты хочешь брать не-LTS пакет, и собирать его LTS компилятором?

    Гнилому компилятору гнилые пакеты, у тебя проблемы ещё с любыми другими пакетами могут быть аналогичные.

     
     
  • 6.180, Аноним (180), 13:01, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Гнилому компилятору гнилые пакеты

    С чего вдруг? Потому что ты так сказал?

    Посмотри какие версии gcc новое ядро linux требует.

    Собирать на всех поддерживаемых дистрибутивах установленными в дистрибутив компиляторами - базовое требование для системных проектов.

    То что система встройки rust в ядро всегда требует последнюю версию компилятора - это огромная проблема! И она не решаема.

     
  • 3.49, Аноним (49), 00:02, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Нужно эквивалентное поведение программы, а не lts и подобные костыли.
     
  • 2.9, Ivan_83 (ok), 22:13, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Минусы/плюсы ничего не значат.

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

    Насчёт легаси кода - забавный подход с навешиванием ярлыков.
    Ну типа щас уберём резко весь "легаси" на С и крестах - и что останется? - НИЧЕГО.
    Даже хруст не чем будет собрать и где запускать.
    Так что это не легаси а меинстрим получается по факту.

     
     
  • 3.43, Карлос Сношайтилис (ok), 23:52, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > но бывает падает - это уже то с чем можно жить

    Жить, когда падает, можно. С современным подходом к отказоустойчивости это как раз не проблема.

    Проблема когда не падает, а даёт доступ к памяти из-за уязвимости.

     
     
  • 4.60, Аноним (60), 00:31, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И что тебе уже сломали или украли?
    Не надо называть проблемой то, что существует только на бумажке.
     
     
  • 5.67, Карлос Сношайтилис (ok), 01:00, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Лично меня, за последние несколько лет, – нет, не ломали (или я об этом не знаю, хех).

    Сервера с которыми я имею дела, прямо или опосредованно, – да. Начиная от дешёвых хостингов, которые ломают через дыры в кривых CMS, и заканчивая серверами в зоне business critical и выше, где атаки уже точечно-целевые.

    Было бы оно на бумаге, все бы на этот Раст и безопасность чихать хотели бы.

     
     
  • 6.129, bOOster (ok), 09:22, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Обычно 99 дыр прикрыты огромным количеством софта по безопасности Всякие нюхач... большой текст свёрнут, показать
     
  • 5.86, Аноним (49), 05:37, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У моего клиента кучу всего переломали. Use-after-free в сишном демоне, рут шелл, ддос-ферма. Благо мониторинг работает, заметили что начали ноды из сети пропадать и исходящий трафик трендить в лимит, обломали кому-то праздник. Но трафик ещё полбеды, с провайдером всегда можно договориться. Месяц разгребали получившийся в результате бардак, кого-то из отпуска вызвали, каким-то кастомерам сроки сорвали, и у них что-то следом посыпалось, в целом нервная атмосфера — вот это реально дорого вышло. То, что вас весь бизнес — это лендинг на народе.ру и сеточка 192.168.0.0/24 не значит, что у всех так.
     
     
  • 6.93, Ivan_83 (ok), 06:26, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Бизнесс это про риск манагемент.
    В остальном нынче легко софт запереть так чтобы оно ничего не могло сделать кроме того для чего создано.
     
  • 6.118, Аноним (118), 09:02, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>Use-after-free в сишном демоне

    расскажите как вы это определили

     
     
  • 7.238, Аноним (49), 06:33, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Реплей трафика и пару часов в gdb. Спроси лучше как атакующие это определили, это куда интереснее.
     
  • 6.130, bOOster (ok), 09:24, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > У моего клиента кучу всего переломали. Use-after-free в сишном демоне, рут шелл,
    > ддос-ферма. Благо мониторинг работает, заметили что начали ноды из сети пропадать
    > и исходящий трафик трендить в лимит, обломали кому-то праздник. Но трафик
    > ещё полбеды, с провайдером всегда можно договориться. Месяц разгребали получившийся в
    > результате бардак, кого-то из отпуска вызвали, каким-то кастомерам сроки сорвали, и
    > у них что-то следом посыпалось, в целом нервная атмосфера — вот
    > это реально дорого вышло. То, что вас весь бизнес — это
    > лендинг на народе.ру и сеточка 192.168.0.0/24 не значит, что у всех
    > так.

    Дай догадаюсь - А да, руководство решило что компания слишком много платит профессионалу/ам..

     
     
  • 7.239, Аноним (49), 06:51, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Дай догадаюсь - А да, руководство решило что компания слишком много платит профессионалу/ам..

    Нет, с чего ты взял? Обычная компания — свой продукт, медианные зарплаты, соцпакет, wfh.

     
  • 4.74, Аноним (73), 01:49, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Жить, когда падает, можно. С современным подходом к отказоустойчивости это как раз не проблема.

    тебе там выше написали про аппаратную защиту памяти но ты прочитать не сумел, а с ней ничего переписывать не надо

     
  • 4.92, Ivan_83 (ok), 06:24, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это не так часто становилось реальной проблемой.
     
  • 2.35, Аноним (35), 22:56, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вы знаете, дорогие друзья по растосрачу, я пришёл к выводу что секрет успеха сижки в том, что там правильно поставлен приоритет в отличие от плюсов и прочих брейнфаков.
    Поясню: брейнфаки приоритетят безопасность, мол а как же так, а что если ты не туда присунешь переменную, или там вообще за границу уедешь. Это как бы факт. Их это волнует, и вот они городят свой забор с защитой от всего что попало.
    Сижка же говорит: да и хрен с ним. И фокусируется на том чтобы быть простой и прозрачной без лишних вывертов.
    Результат: весь код на сижке и с багами. Брейнфакеры крякают, но мы то знаем
     
     
  • 3.38, Аноним (38), 23:08, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Его сделали таким, что даже умственно отсталые могут как-то писать Логично Есл... большой текст свёрнут, показать
     
     
  • 4.55, Аноним (35), 00:21, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Продолжай убеждать себя
     
  • 4.59, Аноним (35), 00:29, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вообще знаешь что, пашел нахрен с бубунты тогда если у тебя не работает
     
  • 3.45, Карлос Сношайтилис (ok), 23:59, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Поясню: брейнфаки приоритетят безопасность, мол а как же так, а что если ты не туда присунешь переменную, или там вообще за границу уедешь. Это как бы факт. Их это волнует, и вот они городят свой забор с защитой от всего что попало.

    Ты написал все правильно, только переменные перепутал (что не удивительно).
    Растоманы не беспокоются о безопасности, им это даёт язык, можно писать код, не задумываясь о границах итераторов и прочей мелочи, как в примере из статьи. Язык кривой код не скомпилирует.

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

     
  • 3.96, Ю.Т. (?), 06:41, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это называется оптимальное решение.
    Хотя не следует забывать, что могут измениться и сам критерий оптимальности, и выставляемые ограничения.
    Для своего времени Си оказался хорош. Может ли он продолжать оставаться хорош? Вопрос.
    Ведь меняется и структура рынка, а тут уже могут включаться и вовсе "нетехнические" параметры.

    ЗЫ Жаль, что создателя Раста когда-то перл укусил.

     
  • 3.145, BeLord (ok), 10:17, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Секрет в том, что дефективные манагеры не шарят в разработке, если код спроектирован правильно, если гвоздями прибиты требования безопасности и стиля написания кода -  что С, что Rust даст нормальный результат. А вот, если мозг отключен, тестирования нет и код записки сатаны, тогда результат будет дерьмовый, что на С, что на Rust.
     
  • 2.48, Аноним (48), 00:01, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Значение идиомы "бородатая шутка" почти забыто, я так посмотрю...
    Ничего не имею против ржавого, но эти растофанатикотролли, 99% которых за всю жизнь и строчки кода не написали "доставляют" и вызывают желание только закрыть тред предварительно пожелав сажи во все поля.
     
  • 2.83, Аноним (83), 04:47, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Напомню, 10 лет назад я писал что проще в c++ добавить гарантии.
    На что растоманы отвечали что это невозможно. Теперь растоманы в очередной раз переобулись. Нагрянуло.
     
  • 2.137, Аноним (137), 09:51, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > а на раст перейти нельзя из-за кучи легаси кода и лени учить новый язык.

    Ну а также можете предложить ООПный язык как плюсы, только с этой безопасной работой с памятью? Rust скажем так не совсем таков.

     
  • 2.210, Аноним (210), 16:21, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эта "кучка легаси кода" всего то 70~98% из всего х86 кода, сущая мелочь ага)
     

     ....большая нить свёрнута, показать (78)

  • 1.2, SL_RU (?), 22:09, 04/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Для начала пусть сделают правило чтобы нельзя было значение optional использовать без проверки
     
     
  • 2.56, Карлос Сношайтилис (ok), 00:21, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да какой optional, окстись! Тут на одних только указателях два новых стандарта наваять можно.
    Точнее – нужно.
     

  • 1.5, Аноним (8), 22:11, 04/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    То есть вся ценность rust свелась к одному заголовочному файлу для C++? Или я что-то не так понял?
     
     
  • 2.10, Bottle (?), 22:17, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Всё правильно понял. А ещё любители ржавчины почему-то думают, что если весь код завернуть в unsafe, этот ансейф будет безопаснее сишного. Если язык позволяет что-то сломать, это обязательно произойдёт.
    Поэтому Rust небезопасен by design, потому что позволяет небезопасные вещи. Подобно Джаве, которая позволяет делать небезопасные и некорректные вещи (линковка с C/C++ через JNI, платформозависимая арифметика), язык Rust со временем будет также признан "недостаточно безопасным", а затем придумают ещё один язык, в этот раз точно супербезопасный, мамой клянусь! И будут на него переписывать небезопасные программы на небезопасном Расте.
     
     
  • 3.34, Аноним (38), 22:54, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > А ещё любители ржавчины почему-то думают, что если весь код завернуть в unsafe, этот ансейф будет безопаснее сишного.

    У ржавых просто сделано по человечески "вот мускорка, мы туда складываем всякие стремные штуки. А в остальном доме мусорить плохо".
    А у С/С++ - просто овно размазано ровным слоем по всей квартире.

    > Если язык позволяет что-то сломать, это обязательно произойдёт.

    Надеюсь что ты живешь в многоэтажке с лестницами без перил, ездишь на авто без подушек безопасности и используешь только неизолированные провода))

    > Поэтому Rust небезопасен by design, потому что позволяет небезопасные вещи.

    Твое мнение очень важно для нас.
    Пойду поем.

    > язык Rust со временем будет также признан "недостаточно безопасным", а затем придумают ещё один язык,

    Было бы неплохо, лет так через 20.

     
     
  • 4.185, dl (??), 13:44, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    вы ещё забыли про динозвров, метеориты, извощиков разных типов и может ещё чтото...
    вот честно, надоели все ваши эти аналогии
     
     
  • 5.187, анонимусс (-), 13:51, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > вы ещё забыли про динозвров, метеориты, извощиков разных типов и может ещё чтото...

    зато не забыл про CVE и новости раз в пару недель "в дырявом коде нашли пачку уязвимостей"

    > вот честно, надоели все ваши эти аналогии

    не нравится - не читайте)


     
  • 2.14, НяшМяш (ok), 22:26, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Ага, заголовочный файл включи, команды компилятору передай, С++20 перейди. Сколько дидов этим будет реально заморачиваться? А в расте это есть из коробки и по-умолчанию - тем он и хорош.
     
     
  • 3.20, Аноним (8), 22:29, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А диды будут пользоваться растом? Так пишите будто бы да.
    А молодняк будет обязательно соблюдать все требования раста? Или всё-таки будет вилять и пытаться обойти ограничения? Это пока растом интересуются более-менее понимающие люди, код нормальный. А как пойдёт в массы (если), то массы будут писать овнокод с обходом ограничений раста, лишь бы запускалось.
     
     
  • 4.22, Аноним (-), 22:31, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > о массы будут писать овнокод с обходом ограничений раста, лишь бы запускалось.

    Фишка в том, что обход ограничений виден за версту!
    И ты можешь просто прогрепать сколько строк внутри ансефа.

     
     
  • 5.23, Аноним (8), 22:33, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Жду спортивное программирование на расте на голом unsafe, без единого safe.
     
  • 4.57, Карлос Сношайтилис (ok), 00:26, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А молодняк будет обязательно соблюдать все требования раста? Или всё-таки будет вилять и пытаться обойти ограничения?

    Сильно не повиляешь – даже ансейф не делает из раста cишку. А в сейф и того подавно.

    А за ансейф, не к месту, на код ревью, по сусалам надают – вредные привычки надо искоренять.

     
     
  • 5.147, Аноним (147), 10:20, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > код ревью

    Чел, оно далеко не везде есть. Даже в крупных компаниях.

     
  • 4.97, Ю.Т. (?), 06:45, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Именно этот момент и выпадает из пропаганды Раста (слово пропаганда без осуждения, пусть будет промоущен).
    Можно придумать сколь угодно совершенный формальный язык, и все равно с этой стороны интерфейса с ним будет работать несовершенный (по определению) писатель на этом языке.
     
  • 4.100, Аноним (99), 07:44, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    молодняк не будет пользоваться растом из-за сложности вхождения. им подавай питон или джаваскрипт
     
     
  • 5.240, Молодой Смузихлёб (?), 06:54, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Дважаскрипт уж точно лучше раста, но в ядро Линукс его не пропихивают!
     
  • 3.160, User (??), 10:58, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вообще - там, где надо (хинт - не в opensouce, этим и впрямь покласть) на уровне проекта вполне себе энфорсится.
     
  • 2.15, Аноним (-), 22:26, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > То есть вся ценность rust свелась к одному заголовочному файлу для C++?

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

     
     
  • 3.26, Аноним (26), 22:40, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Нет. Тут другая модель управления память. Не как в Rust, когда компилятор отслеживает единственного владельца сильной за счет "заимствования", а стандартный shared_ptr, которых может быть несколько.

    Вот эти "несколько" и отслеживаются плагином во время компиляции, чтобы не было циклических и зависших ссылок. А в рантайме проверяется только счетчик владений в shared_ptr с атомарными инкрементами и декрементами.

     
     
  • 4.33, Аноним (-), 22:52, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А в рантайме проверяется только счетчик владений в shared_ptr
    > с атомарными инкрементами и декрементами.

    Этого вполне достаточно для замедления программы :)
    Гугел и не только уже экспериментировали со всякими miracle_ptr и оно реально тормозило.

     
  • 4.50, Карлос Сношайтилис (ok), 00:07, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Знаменитое zero-cost из C++: оно как бы zero, но не совсем.

    — У нас есть классы и оно zero-cost! (vtable не считается)
    — У нас есть умные указатели и они zero-cost! (игнорируем счётчик ссылок)

    — А как получить настоящий zero-cost?
    — Это к С, мальчик. Иди, не мешай дядям.

     
     
  • 5.91, Аноним (91), 06:08, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    TANSTAAFL. Zero-cost не бывает в принципе. Да, ваш любимый раст - он в 2 раза медленнее, чем C++.
     
     
  • 6.101, Карлос Сношайтилис (ok), 07:49, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Да, ваш любимый раст - он в 2 раза медленнее, чем C++

    Ага, раст делает проверки и оптимизации в компайл тайме, а С++ – в рантайме, поэтому С++ быстрее.
    Л – логика.

     
     
  • 7.143, мяв (?), 10:07, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    вообще-то, например, при получении, условно, элементов массива в while-цикле с инкрементом, растц вполне себе рантайм проверку бахнет.
    и код будет медленне такого же на С, до момента, пока в С-версии не добавят проверку.
     
     
  • 8.208, Аноним (41), 15:55, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Теорема Чёрча 8212 Россера... текст свёрнут, показать
     
  • 6.198, 111 (??), 15:06, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Да, ваш любимый раст - он в 2 раза медленнее, чем C++.

    Где пруфы?

     
     
  • 7.225, Аноним (225), 21:17, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> Да, ваш любимый раст - он в 2 раза медленнее, чем C++.
    > Где пруфы?

    Вот:
    https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/gpp-rust.h
    просто нужно брать правильные программы для сравнения!
    А если  по потреблению памяти(больше == лучше), то вообще любая плюсанутая вариация уделывает этот ваш сраст в 2-5 раз!


     
     
  • 8.226, Аноним (-), 21:24, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Первый же пример fannkuch-redux secs cpu secs mem C g 6... текст свёрнут, показать
     
     
  • 9.231, Аноним (225), 23:06, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 10.233, Аноним (-), 23:17, 05/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.123, Cooler (??), 09:14, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    std::unique_ptr<…> - zero-cost.
    struct{…}, class{…} без виртуальных функций - zero-cost. А там где нужны виртуальные функции, ты и на С не сможешь без индирект-call.
     
     
  • 6.230, Аноним (230), 23:04, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >  std::unique_ptr<…> - zero-cost.

    Нет, ABI запрещает передавать его через регистры, что не даёт ему быть zero-cost.

    При добавлении нестандартного [[clang::trivial_abi]] "Google has measured performance improvements of up to 1.6% on some large server macrobenchmarks, and a small reduction in binary sizes" - https://libcxx.llvm.org/DesignDocs/UniquePtrTrivialAbi.html

     
  • 5.168, Аноним (166), 11:41, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще-то ничто не мешает в C ручками прикрутить vtable, чтобы полиморфизм симитировать.
     
     
  • 6.232, Аноним (230), 23:09, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И если при этом не будет автоматической девиртуализации по возможности, то тогда плюсы становятся negative-cost!
     
  • 2.31, Аноним (26), 22:46, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Заголовочный файл + плагин для компилятора.

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

     

  • 1.6, Аноним (6), 22:12, 04/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Костыль не принимается, только новая нога.
     
     
  • 2.11, Bottle (?), 22:18, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Аналогия изначально хорошая, поскольку при попытке приживить новую ногу всю жизнь придётся пользоваться имунноподавляющими лекарствами. Костыль или протез подобного не требуют.
     
     
  • 3.203, Гентушник (ok), 15:37, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Можно взять ногу от близнеца.
    Близнеца можно сделать клонированием, желательно заранее, уже при рождении человека (типо страховка такая).
     
  • 2.12, Аноним (12), 22:19, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но их у ц++ уже и так 20, куда уж больше?
     

  • 1.16, Аноним (16), 22:27, 04/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Походу особо одаренным, просто религия не позволяет использовать и/или С++ и/или Rust. Хз, в чём проблема то? - жесть!
     
     
  • 2.36, Аноним (35), 22:59, 04/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проблема-то проста. Изучи и то и другое на норм уровень и не вырви мозгом
     
     
  • 3.51, Аноним (49), 00:09, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Достаточно знать программирование на «норм» уровне, и язык программирования перестанет иметь такое большое значение и становится всего лишь средством достижения цели. Да, какие-то языки лучше подходят для решения каких-то задач в каких-то доменах, какие-то меньше. К каким-то душа лежит, а к каким-то не лежит. На каких-то писать можно только за зарплату, а на каких-то ещё и для души. Но это сиюминутные мелочи. Скилл — он совсем в другой плоскости лежит.
     
     
  • 4.65, Аноним (65), 01:00, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Это бесполезно объяснять удушенным Яндекс практикумом "мега питон синьор помидор".
     
     
  • 5.103, n00by (ok), 07:56, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А зачем им это объяснять? Пусть себе воюют. Где бы их для этого обособить, что бы остальным мозг не клевали - вот вопрос.
     
     
  • 6.113, Арман (?), 08:53, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Жму вам всем руки, товарищи адекваты. Здоровья.
     
  • 6.214, Аноним (49), 17:23, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Их и обособили, здесь на опеннете.
     
  • 4.217, Аноним (217), 19:11, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Считать что хороший программист на С/С++ освоит новый язык в совершенстве за две недели/месяц/год - это профнепригодность!
     
     
  • 5.237, Аноним (49), 06:29, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А в совершенстве что-то знать не только невозможно, но и не нужно. Нужно конкретные прикладные задачи решать на приемлимом уровне. Для хорошего программиста изучение языка на уровне, соответствующем уровню проекта не является сложной задачей. Ещё раз повторю: скилл лежит совершенно в иной плоскости. Не в плоскости языков программирования, тулчейнов, редакторов, ДЕ, ОС, или клавиатурных раскладок.
     
     
  • 6.241, Аноним (217), 08:11, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Приемлемый уровень - это "середнячок". Этого точно достаточно чтобы писать качественный и безопасный код? Да... это явно выходит за рамки профнепригодности.
     
  • 2.109, bOOster (ok), 08:41, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Походу особо одаренным, просто религия не позволяет использовать и/или С++ и/или Rust.
    > Хз, в чём проблема то? - жесть!

    Концептуально Rust сырой. Предположим написали уже гору софта, а расто-маны раз и очередной раз поменяли концептуальные основы языка, так как концепция просто не предусматривала какой-нибудь ВАЖНОЙ мелочи.
    Тем более такое уже было. Понятны последствия?

    Рассказать чем закончилось это в прошлый раз? Именно после такого "финта ушами" - я пересмотрел вообще отношение к расту.

     
     
  • 3.138, morphe (?), 09:58, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Тем более такое уже было. Понятны последствия?

    После Rust 1.0? Когда и что это такое было?

     
     
  • 4.139, bOOster (ok), 10:01, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Тем более такое уже было. Понятны последствия?
    > После Rust 1.0? Когда и что это такое было?

    Так было или не было?
    И какие гарантии у Ржи что такого не будет в дальнейшем? У С, С++ стандартизация есть и эта стандартизация работа комитета с серьезными участниками.
    В случае Ржи - толпа маргиналов.

     
     
  • 5.149, incorporate (?), 10:25, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    MEMSAFE - очередной нестандартизированный костыль для плюсов. Крупным производителям ПО нужен язык, генерирующий быстрый код с минимальными затратами на отладку крупных проектов. И чтобы индусы были подешевле. Ну а вы продолжайте лениво ковырять сишечкой свой никому не нужный DIY, никому нет до этого дела
     
  • 5.162, morphe (?), 11:06, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>> Тем более такое уже было. Понятны последствия?
    >> После Rust 1.0? Когда и что это такое было?
    > Так было или не было?

    Ты скажи, ты же это заявление сделал. А официально у Rust сказано что ломающие изменения могут быть только в editions, новая версия компилятора будет компилировать код написанный под старый edition, и в одном проекте ты можешь смешивать пакеты написанные под разные editions.

    https://github.com/rust-lang/rfcs/blob/master/text/2052-epochs.md

    В целом это не особо отличается от плюсовых стандартов, за тем исключением что Rust компилятор умеет все editions и строго их разделяет, а msvc/gcc/clang каждый имеет своё подмножество поддерживаемых, и иногда это не спасает от того что код перестаёт компилироваться при обновлении компилятора.

    > И какие гарантии у Ржи что такого не будет в дальнейшем?

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

    > С, С++ стандартизация есть и эта стандартизация работа комитета с серьезными
    > участниками.

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

     
     
  • 6.170, bOOster (ok), 11:44, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >[оверквотинг удален]
    >> И какие гарантии у Ржи что такого не будет в дальнейшем?
    > У Rust строгий, прозрачный, и демократичный RFC процесс, вся история развития языка
    > в публичном доступе, по любому изменению ты можешь прочитать дискуссию, какие
    > были альтернативы, и т.д.
    >> С, С++ стандартизация есть и эта стандартизация работа комитета с серьезными
    >> участниками.
    > Вот только по итогу эти серьёзные участники друг с другом спорят по
    > поводу изменений стандартов и в итоге приходят к неприятным для всех
    > компромиссам без возможности сообществу внести свои предложения, а GCC/LLVM эти стандарты
    > читают как хотят, и половину предложенных стандартов не реализуют.

    Этот бред даже комментировать желания нет.

     
     
  • 7.174, Аноним (-), 11:50, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> а GCC/LLVM эти стандарты читают как хотят, и половину предложенных стандартов не реализуют.
    > Этот бред даже комментировать желания нет.

    А зря. Потому что это не бред.

    Просто открываешь
    en.cppreference.com/w/cpp/compiler_support
    и видишь что НИ ОДИН компилятор не реализует C++23 core language или C++23 library features  полностью. Ни один, Карл!

    Вот такой классный стандарт, который к исполнению не обязателен.
    "Стандарт — это просто свод указаний, а не жёстких законов.​​" (с)

     
     
  • 8.178, деанон (ok), 12:50, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Занеси денег разработчикам, тогда будут тебе фичи, которые скажешь... текст свёрнут, показать
     
  • 8.182, Аноним (180), 13:17, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В самом стандарте есть механизмы предусматривающие возможность реализации не все... текст свёрнут, показать
     
     
  • 9.189, анонимусс (-), 13:56, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Значит это плохой стандарт Нет Например для того чтобы иметь право называться ... текст свёрнут, показать
     
     
  • 10.195, Аноним (180), 14:40, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    С вашей точки зрения плохой А так - единственно возможный И где теперь эта А... текст свёрнут, показать
     
     
  • 11.197, анонимусс (-), 14:48, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что значит единственно возможный Я примел пример других вариантов Работает т... текст свёрнут, показать
     
     
  • 12.199, Аноним (180), 15:08, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На которой пишут полтора землекопа Я же не про побайтовую совместимость, а чтоб... текст свёрнут, показать
     
     
  • 13.213, Аноним (-), 17:16, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ой, а когда это количество погромистов стало признаком качества Если так судить... текст свёрнут, показать
     
  • 6.177, деанон (ok), 12:48, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Веганская этичная горизонтальная сейфспейс разработка. Мы поняли
     

  • 1.21, Аноним (-), 22:30, 04/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Ахаха!
    Как забегали, как засуетились!
    Теперь ждем гору различных и при том несовместимых решений для плюсов. В идеале - чтобы они еще конфликтовали друг с другом))
    Вот это будет представление! Уже запасаюсь попкорном))
     
     
  • 2.141, bOOster (ok), 10:03, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ахаха!
    > Как забегали, как засуетились!
    > Теперь ждем гору различных и при том несовместимых решений для плюсов. В
    > идеале - чтобы они еще конфликтовали друг с другом))
    > Вот это будет представление! Уже запасаюсь попкорном))

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

     
     
  • 3.150, incorporate (?), 10:29, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Противоречите сам себе. "Разнообразие это всегда отлично"?
     
  • 3.172, Аноним (-), 11:45, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Разнообразие решений приведет к выбору лучшего. Разнообразие это всегда отлично.

    Это от создателей "зачем в ядре 2 языка" и "да что эти, с крашенными волосами, себе позволяют!11" ?
    Или ЭТО_ДРУГОЕ™ ?

    > В отличии от кучки ржавых маргиналов с манией величия - нагнем всех,

    Хахахаха, сначала сделайте что-то нормально работающее, нагибаторы мамкины

    > что продиктуем - то и будете пользвоать.

    Пока шанс того, что дырявые языки выкинут из госконтрактов существенно больше.


     
     
  • 4.179, деанон (ok), 12:57, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ты явно не понимаешь как устроена разработка
     
  • 2.159, Соль земли (?), 10:55, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Напиши это со своего браузера, тогда поговорим.
     

  • 1.32, _erthink (?), 22:48, 04/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Ой молодцы, пойду задоначу
     
  • 1.46, Аноним (46), 23:59, 04/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чтобы растовики отстали, но пользоваться все равно никто этим не будет.
     
     
  • 2.53, Карлос Сношайтилис (ok), 00:11, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А растовикам зачем приставать к плюсовикам?
    Их и у себя хорошо кормят
     
     
  • 3.78, Аноним (78), 02:35, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    да постоянно плюсы помоями поливают, а потом берут LLVM написанный на С++ и идут свои хелоувроты компилировать.
     
     
  • 4.104, Карлос Сношайтилис (ok), 08:00, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Помоями поливают Раст. "Кривой синтаксис", "ничего не написано", "безопасность с ансейф" и пр. Знакомо?
    А растоманы пользуются трудами других людей и в ус не дуют.

    > потом берут LLVM написанный на С++

    Если ты видишь в этом проблему или идеологическое несоответствие, то как же ты используешь ядро, написанное на С?

    Или это другое?

     
     
  • 5.153, Аноним (78), 10:31, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Или это другое?

    Конечно другое, мне нравится Си и считаю что весь системный софт, ОС и ядра с дровами должны быть написаны на нем.

     
  • 5.169, Аноним (166), 11:43, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Безопасность с ансейф называется безопасТность.
     
  • 4.155, incorporate (?), 10:35, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Процессору пофиг на чем ты свой хелловрот писал. Процессор умеет лишь в свой набор команд, слабо скормить процессору нативный си++ код? А что так?
     
     
  • 5.157, Аноним (78), 10:38, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Процессору то пофиг. Вот только машинные коды получаются не идентичные взасимости от того на каком ЯП был написан код, какие ключи оптимизации были использованы, какая версия компилятора и тд.
     
  • 3.85, Аноним (88), 05:12, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А растовикам зачем приставать к плюсовикам?

    Хз. Петушатся, дыряшки им везде мерещатся...

     

  • 1.52, Карлос Сношайтилис (ok), 00:10, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это новый MiraclePtr?
    А что со старым, не взлетел?
     
  • 1.62, Аноним (-), 00:46, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Командная строка для запуска компилятора с плагином:
         clang++ -std=c++20 -Xclang
    Но где же гнутелла?))

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

     
     
  • 2.84, Аноним (84), 04:48, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Возможно, единственный адекватный комментатор под этой новостью.
     
     
  • 3.94, Аноним (94), 06:36, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Цены ему не было бы если бы он ещё дочитал до конца новости что это "нестандартизированное поделие" не влияет на генерируемый код.
     
  • 3.133, Аноним (132), 09:32, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    То есть вы себя не включили в разряд адекватных? Бывает.
     
  • 2.184, Аноним (180), 13:22, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ты собираешь компилятором gcc код.

    Собираешь его clang'ом с плагином.

    И там и там соберётся. Как clang c плагином повлияет на собранный gcc код?

     
     
  • 3.188, Аноним (-), 13:51, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ты собираешь компилятором gcc код.
    > Собираешь его clang'ом с плагином.

    О... т.е. вы предлагаете мне не просто тащить еще 100500Гб мусорного шланга в систему, но еще и заставляете использовать несвободный софт?
    Ради чего? Чтобы пару CVE не сделать?

    Не дождетесь! Одной CVE больше, одной меньше. Переживете.

     
     
  • 4.194, Аноним (26), 14:40, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Какой из компиляторов является не свободным, gcc или Clang?
     
     
  • 5.215, Аноним (215), 18:13, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    clang не свободный. По лицензии gcc нельзя посадить под замок
     
  • 5.216, Аноним (-), 18:21, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Какой из компиляторов является не свободным, gcc или Clang?

    Clang - свободный.

    А GCC - нет.
    Они даже в свое время пытались провернуть "все что скомпиленно gcc заражается GPL".
    Приколько конечно - твой код кто-то скомпилировал, теперь его надо открывать под гну-раком.
    Их конечно знатно накормили и пришлось костылить GCC Runtime Library Exception.
    Но работать с такими копирастами.. просто себя не уважать)

     

  • 1.68, Neon (??), 01:01, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Опять костыли. Куда то С++ пошел явно не туда после 11 и 14 версий. И чем дальше, тем сильнее не туда. Вместо учета пожеланий прикладных программистов все новшества исключительно для разработчиков самого С++ и его стандартной библиотеки, всё для себя любимых. Да и сама стандартная библиотека С++ какой то бред воспаленного ума, бред в горячке у Степанова. Неудобная, с идиотской архитектурой, с синтаксисом явно нечеловеческим. Вместо поддержки сети, например, зачем то эллиптические функции добавлены в стандартную библиотеку, хотя большинству программистов именно сеть нужна, а не эти функции. Даже поддержка строк сделана явно через ж@пу.
     
     
  • 2.70, Карлос Сношайтилис (ok), 01:12, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не время думать о строках, указатели в опасности!
     
  • 2.71, Аноним (88), 01:21, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Могли бы, например, просто функции для прикладных задач из PHP в стандартную библиотеку Си++ перенести. Так нет же, маялись сплошным переусложнением ради переусложнения. На хабре эта тема уже поднималась, пришли к аналогичному выводу.

    Ладно, что есть то есть. К сожалению, пришлось на плюсах самому переизобретать некоторые вещи по итогу, свои классы обёртки писать, чтобы упростить Си++ до удобочитаемости скриптового языка для быстрого прототипирования.

     
  • 2.72, Аноним (88), 01:24, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да, и строку тоже пришлось свою делать, т.к. пользоваться этим стандартным убожеством нет никакого желания. Получилось гораздо многофункциональнее, удобнее, проще. Я понимаю, велосипедостроение, но это реально - был шаг от отчаяния.
     
     
  • 3.110, Аноним (110), 08:42, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Да, и строку тоже пришлось свою делать, т.к. пользоваться этим стандартным убожеством нет никакого желания. Получилось гораздо многофункциональнее, удобнее, проще.

    Голосом Каневского:

    "Многофункциональнее, удобнее и проще конечно ни у кого не получилось" (c) Каждый велосипедист строк в плюсах обречен писать глючное подмножество стандартного решения, которое подмножество "не тормозит" из-за срезанных примерно всех углов квадратных колес велосипеда, и ломается примерно сразу в любых более других входных условиях, о которых велосипедист не подумал. А "проще" оно потому что максимально наивное.

    >но это реально - был шаг от отчаяния.

    "Не умеешь решить задачу в общем виде, пили велосипед для своего частного случая".

     
     
  • 4.190, Аноним (88), 13:57, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Наивно полагать, что "комитетчики" решили задачу в общем виде.
    Они её решили просто безобразно.
     
  • 2.80, Аноньимъ (ok), 02:50, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Оно не туда после 97 чи 99 пошло.
     
     
  • 3.112, Аноним (110), 08:48, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Оно не туда после 97 чи 99 пошло.

    Удачи сопровождать код из 90-х ("ехало UB через UB") в 2025-м, когда есть фичи стандартов 11++.

     
     
  • 4.212, Аноньимъ (ok), 16:54, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>Оно не туда после 97 чи 99 пошло.
    > Удачи сопровождать код из 90-х ("ехало UB через UB") в 2025-м, когда
    > есть фичи стандартов 11++.

    Там было меньше UB чем в новых стандартах.

     
  • 3.173, Аноним (166), 11:48, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >97 чи 99

    А такие были? Вот 98 и 03 точно были.

     
     
  • 4.211, Аноньимъ (ok), 16:53, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>97 чи 99
    > А такие были? Вот 98 и 03 точно были.

    Значит 98

     
  • 2.107, bOOster (ok), 08:35, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В ракурсе такого рассуждения - Раст это вообще сплошной костыль Каким образом... большой текст свёрнут, показать
     
  • 2.114, Аноним (110), 08:59, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Знакомые песни неосиляторов, не написавших ничего примерно никогда Степанов пок... большой текст свёрнут, показать
     
     
  • 3.134, bOOster (ok), 09:34, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Недалеким и потому самоуверенным велосипедистам все время кажется что проблема строк ограничена
    > их частным случаем. А потом по кодовой базе разбросаны их велосипеды
    > string2, string3, string_ng...

    Да отрок просто не догоняет что за 256 символами ASC-II есть еще UNICOD в различных инкарнациях для абсолютно непохожих языков типа японского и т.д.

     
  • 2.124, Аноним (124), 09:14, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем тебе вообще строки, это такие же данные, как и другие.
     
     
  • 3.220, Аноним (220), 19:45, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну да, только ассемблер, только машинный код!
    А реверсить его в читабельный вид и ревюить кто будет, телепаты в матрице?
     
  • 2.171, nonstop (?), 11:45, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Именно так. Добавляют нужное, но с невероятно медленной скоростью.
    Вероятно это плата за стандартизацию, но непросто конечно с таким смириться.
    Добавление в STL умных указателей больше 10-ти лет заняло.
    Лямбды добавили, про потоки вспомнили, уже радость.
    Корутины завезли хоть в каком-то виде, хотя явно неродные они в языке.
    А ещё ведь есть строки с юникодом, сеть, дата и время, работа с базами данных...
    Я естественно в курсе про boost и само-собой его использую по возможности, но когда возвращаешься к родным плюсам после питона или го...
    Печаль в общем.
     

  • 1.106, bOOster (ok), 08:31, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "на концепцию владения и заимствования из языка Rust"
    Причем тут Ржа? Данные методики появились задолго до раста. В расте они были реализованы в концепции языка.
    Я лет 20 назад баловался с похожими/идентичными идеями, но для себя использовать было лень :)
     
  • 1.108, Я (??), 08:37, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сделали бы для начала инструмент валидации указателей на уровне стандартных библиотек. Все борются с UB, созданными толпой бывших питонистов - разработчиков компиляторов в погоне за лучшей оптимизацией. Не запрещено в стандарте - значит нужно оптимизировать - выкинув лишнее, выведем предупреждение если пользователь включит флаги а, б, с, ш. именно в этом порядке.
     
     
  • 2.111, Я (??), 08:42, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    живой пример, питонисты пролобировали добавление в стандартные библиотеки функции strdup, которая автоматически делает realloc при вызове, но что будет если указатель был в стеке или статик, в питоне все работает - вносим в стандарт.
     
     
  • 3.121, Аноним (118), 09:12, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>но что будет если указатель был в стеке или статик

    а что будет если Вы пойдёте на красный свет? просто этого не делайте

     
     
  • 4.154, Я (??), 10:33, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    не вызывайте free два раза подряд. ржавотики говорят, что проблема языка. прохожие из городов, где все время день, рредлагают не ходить на красный.
     

  • 1.120, Аноним (124), 09:10, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Си/C++ не исправить, поэтому и появилась куча других языков, например, odin и zig. Смиритесь и живите дальше.
     
     
  • 2.131, Аноним (131), 09:28, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > появилась куча других языков

    Как появилась, так и исчезла. С C/C++ был, есть и будет.

     
     
  • 3.135, Аноним (135), 09:37, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    как и проблемы с памятью
    неужели раст исчезнет первый?
     

  • 1.146, Анониматор (?), 10:18, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все языки исчезнут одновременно, как только ИИ заменит кожаных программистов. Ему проще сразу в машинных кодах будет.
     
     
  • 2.175, Аноним (166), 11:50, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В машинных кодах какой архитектуры? Тогда уж на JS, ну а чего, кросплатформенно же.
     
  • 2.193, Аноним (180), 14:35, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    У ИИ невозможно избавится от галюцинирования из-за самой сути машинного обучения.

    Вот когда будут разрабатывать сильный ИИ - тогда будет шанс. Но в эту сторону не то что бы шаг сделали - даже голову пока не повернули.

     
     
  • 3.196, Аноним (124), 14:47, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    всё будет циклично, сильный ии найдёт лазейку для обучения у более тупого и сам станет тупым
     

  • 1.151, Аноним (151), 10:30, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Костыли, костыли, костыли....
    К сожалению, костыли.
     
     
  • 2.156, Аноним (118), 10:35, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    руки ноги - это костыли. мозги кстати тоже костыль не очень удачный )))
     

  • 1.164, Аноним (164), 11:21, 05/03/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +2 +/
     

  • 1.191, Аноним (191), 14:16, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В rust хорошо, там изобретён блок unsafe. А в крестах как они собираются выкурчиваться? Тут же 100% кода как было unsafe, так и осталось, и любой коммит может как улучшить ситуацию, так и ухудшить
     
     
  • 2.192, Аноним (180), 14:24, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А здесь собираются дать возможность на каждый артефакт навесить что-то типа тега, управляющего функциональностью ему доступной. Помимо опций компиляции. Знает компилятор теги - проверит. Не знает - проигнорирует. Код в любом случае один и тот же.
     
     
  • 3.209, Аноним (191), 16:15, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В этом и проблема, что даже если проект и перейдёт на данный вариант, то никаких гарантий, что одним коммитом эту ситуацию не сломают - нет
     

  • 1.202, fdn721 (ok), 15:36, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Концепция "weak_ptr при захвате превращается в shared_ptr" - редкостное дермицо. Ибо если оригинальный shared_ptr освободит поток владельца, а в это время, weak_ptr будет захвачен, то это передаст владение объектом владельцу weak_ptr. Соответственно из его же потока будет вызван деструктор. По этому weak_ptr не настоящий слабый указать, а всего лишь возможность разорвать циклические ссылки. Как поверх этого дерьма можно ещё какую-то безопасность пытаться накрутить?
     
     
  • 2.218, Аноним (26), 19:25, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы мешаете в кучу теплое и кислое и правильно написали, что weak_ptr и shared_ptr, это только про циклические ссылки. И они не гарантируют корректную работу из разных потоков https://en.cppreference.com/w/cpp/memory/shared_ptr (так же как и попытка разименования nullptr является UB)

    Поэтому для работы из разных потоков нужно использовать другой класс со встроенной синхронизацией https://github.com/rsashka/memsafe/blob/main/memsafe.h#L416

     

  • 1.222, Аноним (222), 20:18, 05/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Наконец-то! Можно выбрасывать Java, C#, Golang и начинать всё делать на C++. Это будет также легко и безопасно как на расте! Жду не дождусь. Сейчас вся индустрия повернёт вспять.
     
     
  • 2.223, Аноним (88), 20:42, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну и чего ты здесь опять распетушился со своим растом? Человек хотя бы попробовал - и это похвально. Возможно, кто-нибудь изучит его идеи и придумает что-то ещё более интересное и удобное. Это называется brainstorm.
     
     
  • 3.224, Аноним (26), 21:03, 05/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Возможно, кто-нибудь изучит его идеи и придумает что-то ещё более интересное и удобное. Это называется brainstorm.

    Именно на это я и надеюсь, так как хоть и пишу на С++ очень давно, но знаю его только в необходимом мне объеме. А чтобы решать подобные глобальные задачи, требуется более  глубокое понимание темы и стандартов, чем у меня.  

    Я немного обсуждал этот момент с Гербом Саттером и у него бОльший интерес вызвал способ обеспечения обратной совместимости с уже существующим С++ кодом, чем текущая реализация библиотеки (что естественно).

     
  • 2.234, Аноним (191), 00:31, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Тяжеловесным крестам далеко до выразительных языков. И выборочное решение одной из многих проблем в безопасности не изменит этого
     
     
  • 3.236, Аноним (217), 06:09, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Разве С/C++ не являются одними из самых выразительных языков?
     

  • 1.235, uis (??), 02:22, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > но не требует разработки нового стандарта С++ (достаточно использовать уже существующий С++20).

    Так-то это уже не стандарт, а расширение языка.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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