Название: C++ Дайджест №3
Дата: 4 сентября – 17 сентября 2023
Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели.
Приятного чтения!
- Dear ImGui 1.89.9 — Сентябрьский патч-релиз, содержащий небольшие изменения и багфиксы.
- Conan 1.61.0 — Добавление поддеркжи SCons и Xcode 15.
- Conan 2.0.11 — Улучшение поддеркжи Meson и clang-cl, исправлениие регрессий и крашей.
- CppCheck 2.12.0 — Добавление нескольких новых и улучшение уже существующих проверок.
- Godot XR September 2023 — Добавление поддержки macOS OpenXR, нескольких новых шлемов: Tilt Five, PICO.
- Ogre 14.1.0 — Добавление поддержки прямоугольных источников света и улучшение теней: теперь в их формировании может участвовать несколько светильников, а не только один.
- 🇷🇺 Habr: Собираем и запускаем калькулятор из Windows XP в среде Windows 10 c помощью GCC x64.
- 🇷🇺 Habr: Создаем проект STM32 C++ FreeRTOS в VS Code для очень маленьких — Гайд, как подружить FreeRTOS, VS Code и C++.
- Andreas Fertig: Control your numbers in C++ — Обзор нововведения C++14, позволяющего использовать сепаратор в целочисленных литералах:
char buffer[2'048]{};
const auto someConstant = 2'00'00'00;
const auto anotherConstant = 0xFF'256'AF;
- Andreas Fertig: C++20 Dynamic Allocations at Compile Time — C++20 дал нам возможность выделять динамическую память в compile-time: как это работает, и какие у нее ограничения?
- Arthur O'Dwyer: Just how constexpr is C++20’s std::string? — О том, какие ограничения имеет использование
std::string
иstd::vector
в контексте времени компиляции. - Rainer Grimm: C++23: Four new Associative Containers — Обзор четырёх новых ассоциативных контейнеров, появившихся в C++23:
std::flat_map
,std::flat_set
,std::flat_multimap
, andstd::flat_multiset
. И том, когда их использование оправдано, а когда лучше использовать «классические» контейнеры. - Rainer Grimm: C++23: A Multidimensional View — Обзор одного из нововведений C++23, очень гибкого и кастомизируемого многомерного аналога
std::span
. - Marius Bancila: Formatting Text in C++: The Old and The New Ways — Обзор различных способов форматирования текста в C++, сравнение их производительности: I/O streams, семейство printf функций, std::format, libfmt.
- Sandor Dargo: C++23: some changes related to templates — Обзор нововведений C++23, благодаря которым стала возможна реализация deducing this: std::forward_like, вывод типов для унаследованных конструкторов.
- Sandor Dargo: Constexpr functions for smaller binary size? — constexpr: вред или польза для размеров бинарников?
- Julien Jorge: Weight Gain and Perf Loss — Захватывающая детективная история об одной include-директиве, загадочным образом увеличивавшей на 5% производительность всей программы и вместе с тем уменьшавшей ее размер.
- Daneil Lermire: Locating ‘identifiers’ quickly (ARM NEON edition) — Ускорение алгоритма поиска идентификаторов в строке более чем в 30 раз с помощью инструкций ARM NEON.
- Jason Turner: C++ Weekly - Ep 392 - Google's Bloaty McBloatface — обзор Bloaty McBloatface, профилировщика размера для бинарных файлов, поддерживающего WebAssembly, ELF (Linux), Mach-O (MacOS) и PE/COFF (Windows).
- Jason Turner: C++ Weekly - Ep 393 - C++23's std::unreachable — Обзор нововведения C++23, позволяющего программисту, недовольного недостаточным количеством неопределенного поведения в своей программе, вызвать его самостоятельно и том, зачем это иногда бывает нужно.
- Daisy Hollman, Kris Jusiak: Adapting C++20 Ranges Algorithms for Most Metaprogramming Needs in Fewer Than 1,000 Lines of Code — О нововведениях C++20, делающих метапрограммирование более доступным, и компромиссам между ним, кодогенерацией и дублированием.
- Robert Seacord: Integer Type Selection in C++: in Safe, Secure and Correct Code — Гайд по выбору правильных целочисленных типов во имя красивых, удобных и безопасных интерфейсов.
- John McCall: Introducing a Memory-Safe Successor Language in Large C++ Code Bases — О максимально безболезненном интегрировании Swift в большие плюсовые кодовые базы и том, почему именно этот язык лучше всех остальных подходит для написания критичного кода, где ошибки, связанные с неправильным управлением памятью, недопустимы.
- David Sankel: Assembly, System Calls, and Hardware in C++ — Погружение в низкоуровневые аспекты, лежащие в основе всех наших программ: системные вызовы, соглашения о вызовах, атомарные вычисления и не только.
- Chandler Carruth: Carbon Language Successor Strategy: From C++ Interop to Memory Safety — Взгляд на путь, который Carbon предоставит для постепенного и масштабируемого обеспечения безопасности существующих плюсовых кодовых баз.
- Tony Van Eerd: Value Oriented Programming Part 1: You Say You Want to Write a Function — Гайд по написанию функций в value-ориентированном стиле.
- Andrei Zissu: Lightning Talk: A Journey Back In Time - C++ Evolution
- Christopher Fretz: Lightning Talk: How Hard Can it be to SFINAE in C++03?
- Ben Deane: Lightning Talk: Global API Injection in C++
- Richárd Szalay: Lightweight Wrappers for Conscious std::transform_reduce Operation Safety
- Paul Dreik: Using variable templates on a tiny problem — О том, как шаблонные переменные, представленные в C++14, способны повысить удобочитаемость вашего кода.
- Karl Åkerblom: A quick look at Tracy Profiler — Краткий обзор инструментального профилировщика Tracy; рассмотрение нюансов работы с ним.
- CppCast: Episode 369, AI and Random Numbers — О различиях между ИИ на основе LLM и более статистических подходах, а также месте случайных чисел во всем этом и ограничениях их текущей поддержки в C++.
Дайджест составлен и опубликован при поддержке московского сообщества программистов C++ Moscow
Заметили ошибку или опечатку? Сообщите в личку (telegram, habr)
Прислать ссылку можно через форму или просто написав мне в личные сообщения (telegram, habr)
← Предыдущий выпуск: C++ Дайджест №2