🔥 Большой апдейт стандартных Си-библиотек: 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++ разработчика
#свежак
После шести месяцев разработки вышла новая версия 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 активно интегрируется в библиотеку. Добавлены новые функции вроде 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++ разработчика
#свежак
При работе из дома обстановка имеет решающее значение. Правильно организованное рабочее место помогает сосредоточиться, снизить усталость и повысить эффективность.
Ниже я собрала научно обоснованные советы по обустройству домашнего офиса. И конечно же, все рекомендации подкреплены исследованиями (ссылки прилагаются).
👉 Продолжение...
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
👍3
Оба связаны с pointer provenance и strict aliasing, но решают разные проблемы.
Когда компилятор «знает» значение через 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; // Правильно: 100launder заставляет компилятор перечитать значение из памяти, игнорируя предыдущие предположения.Он нужен когда объекта физически нет, но память готова:
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