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

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

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

  1. What Would Make CLion a Better C and C++ IDE? — Дорожная карта развития CLion, намечающая направление изменений для следующего релиза, CLion 2023.3: улучшение AI-assistant, поддержка Meson и Bazel, интеграция возможностей Compiler Explorer прямо в IDE.

  2. CLion 2023.2.1 Bug-Fix Update — Багфиксы к CLion 2023.2.

  3. Introducing the new CLion Conan Plugin compatible with 2.X — Обзор нового CLion плагина для поддержки Conan: если раньше он поддерживал только conan 1.x, то теперь им снова можно пользоваться, теперь он поддерживает conan 2.x.

  4. Conan 2.0.10 — Добавление поддержки новых платформ, другие исправления и багфиксы.

  5. fmt 10.1.1 — Добавление поддержки форматирования std::atomic и std::atomic_flag, улучшение совместимости с GBK кодировкой, другие небольшие улучшения и исправления.

? Статьи

  1. ?? Habr: Книги по C++, которые можно рекомендовать разработчикам в 2023 году — Подборка книг по плюсам, актуальных как для начинающих, так и для опытных разработчиков.

  2. ?? Habr: Быстрый двоичный поиск без ветвления — Обзор самой быстрой (и вместе с тем простой) реализации двоичного поиска на C++.

  3. ?? Habr: Распространённые паттерны опечаток при программировании — О семи самых распространенных ошибках, свойственных коду как на C, так и на C++, C# и Java.

  4. ?? Habr: Пять продвинутых техник инициализации в C++: От reserve() до piecewise_construct.

  5. ?? Habr: PVS-Studio vs CodeLite: битва за идеальный код — анализ результатов проверки кодовой базы CodeLite, свободной кроссплатформенной IDE для C++ и не только, с помощью PVS-Studio.

  6. Bartlomiej Filipek: How to Use Monadic Operations for std::optional in C++23 — Знакомство с новыми методами std::optional: and_then, transform и or_else, позволяющие сделать код более читаемым и избавиться в нем от кучи бойлерплейта.

  7. Sandor Dargo: C++23: compatibility with C — Обзор нововведений C++23, принятых ради совместимости C: новый заголовочный файл <stdatomic.h>, возможность определения меток в конце составных инструкций.

  8. Raymond Chen: On writing loops in PPL and continuation-passing style (part 1, part 2, part 3, part 4) — Microsoft Parallel Patterns Library целиком и полностью основано на жонглировании коллбеками, и с их использованием не возникает проблем, когда речь идет о последовательных вычислениях. А что, если нам надо итерироваться? Как мы можем наиболее элегантно эту возможность реализовать?

  9. Raymond Chen: The different types of shared pointer control blocks — О том, как отличаются контрольные блоки std::shared_ptr, созданных различными способами: на основе уже имеющегося указателя, с помощью std::make_shared, std::allocate_shared.

  10. Martin Hořeňovský: The Little Things: The Missing Performance in std::vector — Обзор предельно простого улучшения std::vector, отсутствующего в стандарте, но способного во многих кейсах увеличить производительности вставки новых элементов в него до 5 раз.

  11. Jonathan Müller: Compile-time sizes for range adaptors — О применении идиомы static constexpr std::integral_constant для адаптеров диапазонов.

  12. Shafik Yaghmour: Auto Auto Auto — Детальный разбор головоломки, корректен ли следующий тип: auto() -> auto(*)() -> auto(*)() -> int.

  13. Demofox: Inverting Gauss’ Formula — Применение инвертированной формулы нахождения суммы последовательных чисел от 1 до N к решению задач на графы.

  14. Demofox: Permutation Iteration and Random Access — Разбор алгоритмов нахождения строки на основе ее лексикографического ранга среди всех перестановок и, наоборот, нахождения лексикографического ранга строки.

  15. NVIDIA DevBlog: Accelerated Encrypted Execution of General Purpose Applications — Небольшой обзор ArctyrEX, фреймворка для распределенных гомоморфных вычислений, впрочем, еще не находящегося в свободном доступе.

  16. NVIDIA DevBlog: Simplifying GPU Application Development with Heterogeneous Memory Management — Обзор HMM, нововведения CUDA 12.2, обеспечивающего беспрепятственный обмен данными между хостом (CPU) и ускоряющими устройствами (GPU) и позволяющего писать код намного проще.

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

  1. Jason Turner: C++ Weekly - Ep 390 - constexpr + mutable ?! — О создании на этапе компиляции с объектов с изменяемым на этапе исполнения состоянием.

  2. Jason Turner: C++ Weekly - Ep 391 - Finally! C++23's std::views::enumerate — Обзор std::views::enumerate, нововведения C++23.

C++ Now 2023

  1. Timur Doumler: What is Low Latency C++? (Part 1, Part 2) — Часто говорят, что C++ это отличный язык для систем с низкой задержкой, таких как финансы, обработка звука и игры. Но что именно мы подразумеваем под «низкой задержкой», чем это отличается от «высокой производительности», и что делает C++ отличным языком для этого?

  2. Cassio Neri: Implementing Fast Calendar Algorithms - Speeding Date — О реализации и оптимизации календарных алгоритмов в libstdc++.

  3. Luke Valenty: Composition on Tiny Embedded Systems in C++ — О современном подходе к разработке встраиваемых систем на C++.

  4. Ben Deane: Applicative: The Forgotten Functional Pattern in C++ — Все всегда говорят о монадах и функторах, но аппликативные функторы, несмотря на то, что они часто бывают чрезвычайно полезны, не упоминаются практически никогда. Хотя большую часть времени, когда мы думаем о «монадическом интерфейсе», нам в действительности нужен «аппликативный интерфейс». Этот доклад призван исправить это, осветив аппликативные функторы во всей их красе.

  5. Chandler Carruth, Josh Levenberg, Richard Smith: Definition-Checked Generics (Part 1, Part 2) — Знакомство с обобщенным программированием с полной проверкой определений: о попытке его введения в C++0x; том, как оно соотносится с концептами, которые у нас есть в C++20 и какие преимущества дает.

  6. Hans de Nivelle: Trees for Logic and Parsing in C++ — О современном подходе к реализации формальной логики (в том числе абстрактных синтаксических деревьев) на плюсах.

  7. Peter Muldoon: Exceptions in C++: Better Design Through Analysis of Real World Usage — Обзор механизма работы исключений и том, когда их стоит и не стоит использовать.

  8. Steve Downey: Using the C++ Sender/Receiver Framework: Implement Control Flow for Async Processing

  9. Andreas Weis: Safety-First: How To Develop C++ Safety-Critical Software

  10. Bill Hoffman: State of C++20 modules in CMake

ACCU 2023

  1. Kevlin Henney: Algorithm? You Keep Using That Word — Поучительная история о попытке реализации одного простого алгоритма на незнакомом языке программирования с помощью ChatGPT.

?️Подкасты

  1. CppCast: Episode 368, Automatic Static Analysis — О пользе и проблемах статического анализа кода на C++.

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

Заметили ошибку или опечатку? Сообщите в личку (telegram, habr)

Прислать ссылку можно через форму или просто написав мне в личные сообщения (telegram, habr)

Предыдущий выпуск: C++ Дайджест №1