Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели. Приятного чтения! What Would Make CLion a Better C and C++ IDE? — Дорожная карта развития CLion, намечающая направление изменений для следующего релиза, CLion 2023.3: улучшение AI-assistant, поддержка Meson и Bazel, интеграция возможностей Compiler Explorer прямо в IDE. CLion 2023.2.1 Bug-Fix Update — Багфиксы к CLion 2023.2. Introducing the new CLion Conan Plugin compatible with 2.X — Обзор нового CLion плагина для поддержки Conan: если раньше он поддерживал только conan 1.x, то теперь им снова можно пользоваться, теперь он поддерживает conan 2.x. Conan 2.0.10 — Добавление поддержки новых платформ, другие исправления и багфиксы. fmt 10.1.1 — Добавление поддержки форматирования std::atomic и std::atomic_flag, улучшение совместимости с GBK кодировкой, другие небольшие улучшения и исправления. 🇷🇺 Habr: Книги по C++, которые можно рекомендовать разработчикам в 2023 году — Подборка книг по плюсам, актуальных как для начинающих, так и для опытных разработчиков. 🇷🇺 Habr: Быстрый двоичный поиск без ветвления — Обзор самой быстрой (и вместе с тем простой) реализации двоичного поиска на C++.  🇷🇺 Habr: Распространённые паттерны опечаток при программировании — О семи самых распространенных ошибках, свойственных коду как на C, так и на C++, C# и Java. 🇷🇺 Habr: Пять продвинутых техник инициализации в C++: От reserve() до piecewise_construct. 🇷🇺 Habr: PVS-Studio vs CodeLite: битва за идеальный код — анализ результатов проверки кодовой базы CodeLite, свободной кроссплатформенной IDE для C++ и не только, с помощью PVS-Studio. Bartlomiej Filipek: How to Use Monadic Operations for std::optional in C++23  — Знакомство с новыми методами std::optional: and_then, transform и or_else, позволяющие сделать код более читаемым и избавиться в нем от кучи бойлерплейта. Sandor Dargo: C++23: compatibility with C — Обзор нововведений C++23, принятых ради совместимости C: новый заголовочный файл <stdatomic.h>, возможность определения меток в конце составных инструкций.  Raymond Chen: On writing loops in PPL and continuation-passing style (part 1, part 2, part 3, part 4) — Microsoft Parallel Patterns Library целиком и полностью основано на жонглировании коллбеками, и с их использованием не возникает проблем, когда речь идет о последовательных вычислениях. А что, если нам надо итерироваться? Как мы можем наиболее элегантно эту возможность реализовать? Raymond Chen: The different types of shared pointer control blocks — О том, как отличаются контрольные блоки std::shared_ptr, созданных различными способами: на основе уже имеющегося указателя, с помощью std::make_shared, std::allocate_shared. Martin Hořeňovský: The Little Things: The Missing Performance in std::vector — Обзор предельно простого улучшения std::vector, отсутствующего в стандарте, но способного во многих кейсах увеличить производительности вставки новых элементов в него до 5 раз. Jonathan Müller: Compile-time sizes for range adaptors — О применении идиомы static constexpr std::integral_constant для адаптеров диапазонов. Shafik Yaghmour: Auto Auto Auto — Детальный разбор головоломки, корректен ли следующий тип: auto() -> auto(*)() -> auto(*)() -> int. Demofox: Inverting Gauss’ Formula — Применение инвертированной формулы нахождения суммы последовательных чисел от 1 до N к решению задач на графы. Demofox: Permutation Iteration and Random Access — Разбор алгоритмов нахождения строки на основе ее лексикографического ранга среди всех перестановок и, наоборот, нахождения лексикографического ранга строки. NVIDIA DevBlog: Accelerated Encrypted Execution of General Purpose Applications — Небольшой обзор ArctyrEX, фреймворка для распределенных гомоморфных вычислений, впрочем, еще не находящегося в свободном доступе. NVIDIA DevBlog: Simplifying GPU Application Development with Heterogeneous Memory Management — Обзор HMM, нововведения CUDA 12.2, обеспечивающего беспрепятственный обмен данными между хостом (CPU) и ускоряющими устройствами (GPU) и позволяющего писать код намного проще. Jason Turner: C++ Weekly - Ep 390 - constexpr + mutable ?! — О создании на этапе компиляции с объектов с изменяемым на этапе исполнения состоянием.  Jason Turner: C++ Weekly - Ep 391 - Finally! C++23's std::views::enumerate — Обзор std::views::enumerate, нововведения C++23. Timur Doumler: What is Low Latency C++? (Part 1, Part 2) — Часто говорят, что C++ это отличный язык для систем с низкой задержкой, таких как финансы, обработка звука и игры. Но что именно мы подразумеваем под «низкой задержкой», чем это отличается от «высокой производительности», и что делает C++ отличным языком для этого? Cassio Neri: Implementing Fast Calendar Algorithms - Speeding Date — О реализации и оптимизации календарных алгоритмов в libstdc++. Luke Valenty: Composition on Tiny Embedded Systems in C++ — О современном подходе к разработке встраиваемых систем на C++. Ben Deane: Applicative: The Forgotten Functional Pattern in C++ — Все всегда говорят о монадах и функторах, но аппликативные функторы, несмотря на то, что они часто бывают чрезвычайно полезны, не упоминаются практически никогда. Хотя большую часть времени, когда мы думаем о «монадическом интерфейсе», нам в действительности нужен «аппликативный интерфейс». Этот доклад призван исправить это, осветив аппликативные функторы во всей их красе. Chandler Carruth, Josh Levenberg, Richard Smith: Definition-Checked Generics (Part 1, Part 2)  — Знакомство с обобщенным программированием с полной проверкой определений: о попытке его введения в C++0x; том, как оно соотносится с концептами, которые у нас есть в C++20 и какие преимущества дает.  Hans de Nivelle: Trees for Logic and Parsing in C++ — О современном подходе к реализации формальной логики (в том числе абстрактных синтаксических деревьев) на плюсах. Peter Muldoon: Exceptions in C++: Better Design Through Analysis of Real World Usage — Обзор механизма работы исключений и том, когда их стоит и не стоит использовать. Steve Downey: Using the C++ Sender/Receiver Framework: Implement Control Flow for Async Processing Andreas Weis: Safety-First: How To Develop C++ Safety-Critical Software Bill Hoffman: State of C++20 modules in CMake Kevlin Henney: Algorithm? You Keep Using That Word — Поучительная история о попытке реализации одного простого алгоритма на незнакомом языке программирования с помощью ChatGPT. CppCast: Episode 368, Automatic Static Analysis — О пользе и проблемах статического анализа кода на C++. Дайджест составлен и опубликован при поддержке московского сообщества программистов C++ Moscow Заметили ошибку или опечатку? Сообщите в личку (telegram, habr) Прислать ссылку можно через форму или просто написав мне в личные сообщения (telegram, habr) ← Предыдущий выпуск: C++ Дайджест №1  Программист C++