Библиотека C/C++ разработчика | cpp, boost, qt
19.4K subscribers
2.01K photos
65 videos
16 files
4.29K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17

#WXSSA
Download Telegram
🔥 Большой апдейт стандартных Си-библиотек: Glibc 2.43 и newlib 4.6.0

После шести месяцев разработки вышла новая версия GNU C Library 2.43, и это серьёзный релиз, который меняет правила игры для C-разработчиков. Над ним работали 69 контрибьюторов, и теперь библиотека полностью соответствует стандартам ISO C23 и POSIX.1-2024.

🍿 Что нового?

Самое заметное — экспериментальная поддержка Clang для сборки Glibc на платформах aarch64 и x86_64. Наконец-то можно использовать альтернативный компилятор, хотя пока требуется Clang 18+ и совместимый с libgcc runtime.

Для Linux-систем появились две важные функции: mseal() для блокировки изменений частей адресного пространства процесса и openat2() с расширенными флагами безопасности — запретом пересечения точек монтирования, символических ссылок и "../" в путях.

🍪 Новый C23

Стандарт C23 активно интегрируется в библиотеку. Добавлены новые функции вроде free_sized, free_aligned_sized и memset_explicit. Макрос assert теперь поддерживает переменное число аргументов. Интересный момент: функции поиска (strchr, memchr и компания) переопределены как макросы для поддержки const-квалификаторов — это вызвало бурное обсуждение в комьюнити, но решает реальную проблему type safety.

👌 Производительность и безопасность

Из проекта CORE-MATH перенесли оптимизированные математические функции, добавили векторные варианты для AArch64, улучшили производительность множества функций. На AArch64 теперь по умолчанию включены huge pages (2MB) в malloc, а для RISC-V появилась оптимизированная memset с использованием векторного расширения RVV.

✏️ Новость

📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🙏1
🏠🪴 10 простых советов, как обустроить рабочее место на удаленке и повысить продуктивность

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

Ниже я собрала научно обоснованные советы по обустройству домашнего офиса. И конечно же, все рекомендации подкреплены исследованиями (ссылки прилагаются).

👉 Продолжение...

📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#свежак
👍3
🍿 std::start_lifetime_as vs std::launder: в чём разница?

Оба связаны с pointer provenance и strict aliasing, но решают разные проблемы.


🍴 std::launder — обход оптимизаций

Когда компилятор «знает» значение через const member или reference, он может закешировать его:

struct S { const int x; };
S* p = new (addr) S{42};
p->x; // Компилятор: "всегда 42"

new (p) S{100}; // Переиспользуем память
p->x; // Всё ещё 42? Нет, но компилятор так думает!

auto q = std::launder(p);
q->x; // Правильно: 100


launder заставляет компилятор перечитать значение из памяти, игнорируя предыдущие предположения.


🍬 start_lifetime_as — создание lifetime

Он нужен когда объекта физически нет, но память готова:

alignas(int) char buffer[sizeof(int)];
*reinterpret_cast<int*>(buffer) = 42; // UB: нет объекта

int* p = std::start_lifetime_as<int>(buffer);
*p = 42; // OK: объект создан



🏝 Вывод

launder — для существующих объектов с переписанной памятью. start_lifetime_as — для памяти, которая станет объектом.


📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👾1