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

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

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

  1. Dear ImGui 1.89.9 — Сентябрьский патч-релиз, содержащий небольшие изменения и багфиксы.

  2. Conan 1.61.0 — Добавление поддеркжи SCons и Xcode 15.

  3. Conan 2.0.11 — Улучшение поддеркжи Meson и clang-cl, исправлениие регрессий и крашей.

  4. CppCheck 2.12.0 — Добавление нескольких новых и улучшение уже существующих проверок.

  5. Godot XR September 2023 — Добавление поддержки macOS OpenXR, нескольких новых шлемов: Tilt Five, PICO.

  6. Ogre 14.1.0 — Добавление поддержки прямоугольных источников света и улучшение теней: теперь в их формировании может участвовать несколько светильников, а не только один.

???? Статьи

  1. ???????? Habr: Собираем и запускаем калькулятор из Windows XP в среде Windows 10 c помощью GCC x64.

  2. ???????? Habr: Создаем проект STM32 C++ FreeRTOS в VS Code для очень маленьких — Гайд, как подружить FreeRTOS, VS Code и C++.

  3. 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;
  1. Andreas Fertig: C++20 Dynamic Allocations at Compile Time — C++20 дал нам возможность выделять динамическую память в compile-time: как это работает, и какие у нее ограничения?

  2. Arthur O'Dwyer: Just how constexpr is C++20’s std::string? — О том, какие ограничения имеет использование std::string и std::vector в контексте времени компиляции.

  3. Rainer Grimm: C++23: Four new Associative Containers — Обзор четырёх новых ассоциативных контейнеров, появившихся в C++23: std::flat_map, std::flat_set, std::flat_multimap, and std::flat_multiset. И том, когда их использование оправдано, а когда лучше использовать «классические» контейнеры.

  4. Rainer Grimm: C++23: A Multidimensional View — Обзор одного из нововведений C++23, очень гибкого и кастомизируемого многомерного аналога std::span.

  5. Marius Bancila: Formatting Text in C++: The Old and The New Ways — Обзор различных способов форматирования текста в C++, сравнение их производительности: I/O streams, семейство printf функций, std::format, libfmt.

  6. Sandor Dargo: C++23: some changes related to templates — Обзор нововведений C++23, благодаря которым стала возможна реализация deducing this: std::forward_like, вывод типов для унаследованных конструкторов.

  7. Sandor Dargo: Constexpr functions for smaller binary size? — constexpr: вред или польза для размеров бинарников?

  8. Julien Jorge: Weight Gain and Perf Loss — Захватывающая детективная история об одной include-директиве, загадочным образом увеличивавшей на 5% производительность всей программы и вместе с тем уменьшавшей ее размер.

  9. Daneil Lermire: Locating ‘identifiers’ quickly (ARM NEON edition) — Ускорение алгоритма поиска идентификаторов в строке более чем в 30 раз с помощью инструкций ARM NEON.

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

  1. Jason Turner: C++ Weekly - Ep 392 - Google's Bloaty McBloatface — обзор Bloaty McBloatface, профилировщика размера для бинарных файлов, поддерживающего WebAssembly, ELF (Linux), Mach-O (MacOS) и PE/COFF (Windows).

  2. Jason Turner: C++ Weekly - Ep 393 - C++23's std::unreachable — Обзор нововведения C++23, позволяющего программисту, недовольного недостаточным количеством неопределенного поведения в своей программе, вызвать его самостоятельно и том, зачем это иногда бывает нужно.

C++ Now 2023

  1. Daisy Hollman, Kris Jusiak: Adapting C++20 Ranges Algorithms for Most Metaprogramming Needs in Fewer Than 1,000 Lines of Code — О нововведениях C++20, делающих метапрограммирование более доступным, и компромиссам между ним, кодогенерацией и дублированием.

  2. Robert Seacord: Integer Type Selection in C++: in Safe, Secure and Correct Code — Гайд по выбору правильных целочисленных типов во имя красивых, удобных и безопасных интерфейсов.

  3. John McCall: Introducing a Memory-Safe Successor Language in Large C++ Code Bases — О максимально безболезненном интегрировании Swift в большие плюсовые кодовые базы и том, почему именно этот язык лучше всех остальных подходит для написания критичного кода, где ошибки, связанные с неправильным управлением памятью, недопустимы.

  4. David Sankel: Assembly, System Calls, and Hardware in C++ — Погружение в низкоуровневые аспекты, лежащие в основе всех наших программ: системные вызовы, соглашения о вызовах, атомарные вычисления и не только.

  5. Chandler Carruth: Carbon Language Successor Strategy: From C++ Interop to Memory Safety — Взгляд на путь, который Carbon предоставит для постепенного и масштабируемого обеспечения безопасности существующих плюсовых кодовых баз.

  6. Tony Van Eerd: Value Oriented Programming Part 1: You Say You Want to Write a Function — Гайд по написанию функций в value-ориентированном стиле.

  7. Andrei Zissu: Lightning Talk: A Journey Back In Time - C++ Evolution

  8. Christopher Fretz: Lightning Talk: How Hard Can it be to SFINAE in C++03?

  9. Ben Deane: Lightning Talk: Global API Injection in C++

  10. Richárd Szalay: Lightweight Wrappers for Conscious std::transform_reduce Operation Safety

Stockholm C++ 0x29

  1. Paul Dreik: Using variable templates on a tiny problem — О том, как шаблонные переменные, представленные в C++14, способны повысить удобочитаемость вашего кода.

  2. Karl Åkerblom: A quick look at Tracy Profiler — Краткий обзор инструментального профилировщика Tracy; рассмотрение нюансов работы с ним.

????️Подкасты

  1. CppCast: Episode 369, AI and Random Numbers — О различиях между ИИ на основе LLM и более статистических подходах, а также месте случайных чисел во всем этом и ограничениях их текущей поддержки в C++.

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

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

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

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

Комментарии (0)