Skip to content

cppmoscow/cpp-digest-1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

cpp-digest-1

Название: C++ Дайджест №1

Дата: 7 августа 2023 – 20 августа 2023

Аннотация

Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира 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.

About

C++ Дайджест №1 (7 августа 2023 – 20 августа 2023)

Resources

License

Stars

Watchers

Forks