Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели.

Приятного чтения!

⚡️️ Новости и релизы

  1. Boost 1.83.0 — Ряды библиотек Boost пополнились Boost.Compat, «‎репозиторием реализаций на C++11 стандартных компонентов, добавленных в более поздних стандартах»‎, однако на данный момент включающей реализации лишь std::latch и std::shared_lock.

  2. fmt 10.1.0 — Оптимизация format_to и format_to_n, увеличивающая производительность на 40-400% в бенчмарке конкатенации строк, другие улучшения и багфиксы.

  3. Meson 1.2.1 — Добавление поддержки C++23 и C++26, багфиксы и прочие изменения.

  4. Qt Creator 11.0.2 — Багфиксы.

  5. Visual Studio 2022 17.7 — Добавление инструмента сравнения файлов, более быстрый запуск отладчиков и поиск по файлам, интеграция C++ Build Insights, позволяющего легко отслеживать наиболее «‎дорогостоящие»‎ инклуды и другое.

  6. MSVC Address Sanitizer – One DLL for all Runtime Configurations — О нововведении Visual Studio 2022 version 17.7 Preview 3, упрощающем конфигурирование и использование MSVC Address Sanitizer.

  7. Introducing CMake Debugger in VS Code: Debug your CMake Scripts using Open-Source CMake Debugger — Главное счастье и радость всех плюсовых разработчиков, пользующихся VS Code, теперь CMake скрипты можно будет так же дебажить, как и весь остальной код: с брейкпойнтами, стеком вызовов и просмотром значений переменных.

???? Статьи

  1. ???????? Habr: Правильный if для ускорения работы — О том, как мы можем помочь компилятору оптимизировать блоки if, если у нас нет [[likely]] и [[unlikely]] из C++20, но зато есть интринсик __builtin_expect (спойлер: пользователи msvc, у вас его нет).

  2. ???????? Habr: Seastar как платформа для опорной сети 5G и краткое сравнение с Boost.Asio, userver и другими — Обзор Seastar, сетевого фреймворка с share-nothing архитектурой и lock-free cross-CPU communication, позволяющего из коробки линейно масштабировать производительность по количеству ядер.

  3. ???????? Habr: Как написать хороший генератор — Гайд по написанию эффективного и удобного в использовании (даже удобнее, чем std::generator из C++23) генератора на корутинах.

  4. ???????? Habr: Как я вошёл в клуб бага 323 — Перевод статьи о 23-летнем баге №323, объединяющем целые поколения пользователей gcc и clang.

  5. ???????? Habr: Первые новинки C++26: итоги летней встречи ISO — Обзор нововведений C++26, только-только принятых в стандарт: Hazard Pointer, Read-Copy-Update, множество доработок по constexpr и другое.

  6. ???????? Habr: Подводные камни C++. Решаем загадки неопределённого поведения, ч. 2 — Продолжение серии статей об UB-проблемах и способах их решения, на этот раз о гонке данных, deadlock, семантике перемещения и use after move.

  7. ???????? Habr: Недостатки корутин в C++ — Перевод статьи о рисках, связанных с переносом кодовых баз на использование корутин, потенциально способных привести к уменьшению безопасности и замедлению программы.

  8. Bartlomiej Filipek: Five Advanced Initialization Techniques in C++: From reserve() to piecewise_construct and More — Обзор некоторых техник инициализации, начиная с всем знакомой reserve() + emplace_back() и заканчивая constinit и make_unique_for_overwrite, нововведениями C++20.

  9. Andrey Upadyshev: A case in optimizing auto-vectorized code — История о том, как проанализировав автоматически векторизованный компилятором код, автор смог улучшить его на 90%, векторизовав его уже вручную.

  10. Sandor Dargo: C++23: multidimensional operator[] — О пользе принятого в C++23 многомерного operator[] и том, как с ним наш код изменится.

  11. Sandor Dargo: C++23: mdspan — Обзор одного из нововведений C++23, очень гибкого и кастомизируемого многомерного аналога std::span.

  12. Raymond Chen: Inside STL: The array, Inside STL: The deque, design, Inside STL: The deque, implementation, Inside STL: The unordered_map, unordered_set, unordered_multimap, and unordered_multiset, Inside STL: The map, set, multimap, and multiset — Продолжение серии статей об особенностях реализации контейнеров стандартной библиотеки в libc++, libstdc++ и Microsoft's STL.

  13. Raymond Chen: Inside STL: Smart pointers, Inside STL: The shared_ptr constructor vs make_shared, Inside STL: The shared_ptr constructor and enable_shared_from_this — О фундаментальных особенностях реализации умных указателей, разнице между std::shared_ptr(new S()) и std::make_shared<S>() и том, как работает std::enable_shared_from_this.

  14. Raymond Chen: What it means when you convert between different shared_ptrs, Phantom and indulgent shared pointers — О различных способах создания нового std::shared_ptr из уже имеющегося, и его пограничных состояниях, phantom и indulgent.

  15. Daniel Lemire: Transcoding UTF-8 strings to Latin 1 strings at 18 GB/s using AVX-512 — О том, как даже без excessive cleverness AVX-512 позволяет ускорить трансформации строк, включая нетриваиальные, до 10 раз.

  16. Marius Bancila: How to convert an enum to string in C++ — Пример реализации макроса для преобразования значений перечислений в строки.

  17. Tristan Brindle: Parameter Passing in Flux versus Ranges — Обзор библиотеки flux, замене диапазонов из C++20, и о том, как различается в них подход к передаче параметров в объекты адаптеров.

  18. Arthur O’Dwyer: Some C++20 ranges aren’t const-iterable — Об одной из ловушек, подстерегающей неопытных пользователей C++20 Ranges, невозможности константного итерирования по некоторым из них.

  19. Rainer Grimm: C++23: The Small Pearls in the Core Language — Продолжение серии статей о языковых нововведениях C++23: auto(x) и auto{x}, многомерный operator[], static operator() и operator[].

???? Видео и доклады

  1. Jason Turner: Interview with Felix Jones: Game Dev, GBA Homebrew, constexpr and Minecraft — Интервью с Феликсом Джонсом, техлидом Minecraft Bedrock Edition.

  2. Jason Turner: C++ Weekly - Ep 388 - My constexpr Revenge Against Lisp — Обзор cons_expr, constexpr интерпретатора Scheme-подобного скриптового языка.

  3. Jason Turner: C++ Weekly - Ep 389 - Avoiding Pointer Arithmetic — Обзор множества способов, как мы можем изголяться, лишь бы не использовать арифметику указателей, на простейшем примере.

C++ Now 2023

  1. Sean Parent: All the Safeties: Safety in C++

  2. Hana Dusíková: A Graph Based Update System in C++: Lightning Updates

  3. Herb Sutter: Keynote: The Evolution of C++ - A Typescript for C++

  4. Chandler Carruth: Modernizing Compiler Design for Carbon Toolchain

ACCU 2023

  1. Augustin Popa: C++ Package Manager - C++ Dependencies Don't Have To Be Painful!

  2. Rostislav Khlebnikov: Function Contracts in Practice using C++

  3. Anthony Williams: Designing for C++ Concurrency Using Message Passing

????️Подкасты

  1. CppCast: Episode 367, Soagen — О рефлексии, SIMD и soagen, утилите и библиотеке, упрощающей работу с Structure-of-Arrays.

Дайджест составлен и опубликован при поддержке московского сообщества программистов C++ Moscow

Комментарии (0)