Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира 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.
C++ Now 2023
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
ACCU 2023
Kevlin Henney: Algorithm? You Keep Using That Word — Поучительная история о попытке реализации одного простого алгоритма на незнакомом языке программирования с помощью ChatGPT.
????️Подкасты
CppCast: Episode 368, Automatic Static Analysis — О пользе и проблемах статического анализа кода на C++.
Дайджест составлен и опубликован при поддержке московского сообщества программистов C++ Moscow
Заметили ошибку или опечатку? Сообщите в личку (telegram, habr)
Прислать ссылку можно через форму или просто написав мне в личные сообщения (telegram, habr)