C++ Academy
15.5K subscribers
845 photos
143 videos
1 file
760 links
По всем вопросам- @workakkk

РКН: clck.ru/3FmxJF

#VRHSZ
Download Telegram
🧩 Упрощенная сериализация в C++ по контракту

SerializationByContract предлагает инновационный подход к сериализации и десериализации данных, используя контракты для автоматизации процессов. Вместо создания отдельных функций для сериализации и десериализации, вы определяете контракт, который управляет всем процессом.

🚀 Основные моменты:
- Автоматизация сериализации и десериализации через контракты.
- Поддержка большинства STL структур данных.
- Применение в межпроцессном взаимодействии (IPC).
- Простота интеграции пользовательских структур данных.

📌 GitHub: https://github.com/amarmer/SerializationByContract

#cpp

🚀 MAX
7❤‍🔥2🥰1😱1
🧩 Легкий IoC контейнер для C++17

Genode.IoC — это компактный и простой в использовании контейнер внедрения зависимостей для C++17. Он не требует базовых классов или интерфейсов, что делает его идеальным для легковесных проектов. Автоматическое создание объектов и управление временем жизни упрощают интеграцию.

🚀 Основные моменты:
- Одно заголовочное файл.
- Автоматическое разрешение зависимостей.
- Минимальная конфигурация и управление временем жизни.
- Поддержка синглтонов и локальных экземпляров.
- Легкая интеграция в проекты.

📌 GitHub: https://github.com/SirusDoma/Genode.IoC

#cpp
3👍3🔥2
🚀 Высокопроизводительная библиотека интернирования строк на C++

Azrar::StringIndex предлагает эффективный механизм интернирования строк, создавая глобальный словарь уникальных строк. Это значительно ускоряет доступ и сравнение строк, что особенно полезно в приложениях с большим количеством идентичных строк.

🚀 Основные моменты:
- Уменьшает использование памяти за счет хранения строк только один раз.
- Обеспечивает быстрый доступ к строкам через индексы.
- Поддерживает многопоточность для повышения производительности.
- Идеально подходит для приложений, работающих с большими объемами строк.

📌 GitHub: https://github.com/kboutora/Azrar

#cpp
👍5❤‍🔥11👏1
🌍🚀 Эффективная библиотека для работы с часовыми поясами

vtz предлагает высокую производительность и простой API для обработки временных данных. Она значительно быстрее конкурентов, обеспечивая до 60 раз более быстрые преобразования часовых поясов и парсинг временных меток, что делает её идеальным выбором для приложений с высокими требованиями к скорости и масштабируемости.

🚀Основные моменты:
- 30-60x быстрее преобразования часовых поясов.
- Эффективный алгоритм с блочной таблицей для быстрого поиска.
- Совместимость с std::chrono::time_zone.
- Оптимизирована для работы с большими объемами данных.

📌 GitHub: https://github.com/voladynamics/vtz

#cpp
🔥6👍2
🌟 Быстрая библиотека JSON: Glaze

Glaze — это одна из самых быстрых библиотек для работы с JSON и другими форматами, обеспечивающая высокую производительность и простоту интерфейса. Она поддерживает множество форматов, включая JSON, CBOR, YAML и другие, с акцентом на компиляцию времени и рефлексию.

🚀Основные моменты:
- Поддержка C++23 и C++26 с рефлексией для удобной работы с данными
- Высокая производительность: быстрая сериализация и десериализация
- Заголовочная библиотека без зависимости от RTTI и исключений
- Совместимость с современными компиляторами и стандартами

📌 GitHub: https://github.com/stephenberry/glaze

#cpp
10👍2
Data-Parallel Types: алгоритмы (C++26)

Библиотека «data-parallel types» для SIMD-векторов (пространство имён std::experimental, алиас stdx) предоставляет четыре специальных алгоритма: `min, max, minmax и clamp.

min, max, minmax

- min(a, b) и max(a, b) принимают два SIMD-вектора и возвращают вектор покомпонентных минимумов/максимумов.
- minmax(a, b) возвращает пару SIMD-векторов: первый — покомпонентные минимумы, второй — максимумы.
- Автор отмечает, что строка stdx::minmax(a, b) у него не компилировалась ни в GCC, ни в Clang (на момент публикации).

clamp

- stdx::clamp(v, lo, hi) применяет std::clamp к каждому элементу SIMD-вектора: значения ниже lo поднимаются до нижней границы, выше hi — опускаются до верхней.
- Показаны два примера: ограничение к диапазону INT8_MIN..INT8_MAX и к 0..UINT8_MAX; на выводах видно, как выходящие за пределы элементы прижимаются к границам.

Итог

- Для SIMD-векторов доступны привычные «минимумы/максимумы» и покомпонентный clamp.
- minmax задуман как удобный возврат пары (min/max), но в текущих компиляторах может не собираться.
- Дальше автор планирует разбирать новые возможности C++26 (в частности, контракты).

https://www.modernescpp.com/index.php/data-parallel-types-algorithms/

#cpp #programming
👍74🔥1
🧩 C++ обертка для PCRE2

pcre2cpp - это объектно-ориентированная обертка для библиотеки PCRE2, обеспечивающая удобный интерфейс для работы с регулярными выражениями. Поддерживает C++17 и C++20, упрощая процесс сопоставления и захвата результатов.

🚀 Основные моменты:
- Объектно-ориентированный интерфейс для PCRE2 10.47
- Совместимость с C++17 и C++20
- Удобное сопоставление регулярных выражений
- Встроенное захватывание результатов

📌 GitHub: https://github.com/MAIPA01/pcre2cpp

#cpp
👍3🔥32
Media is too big
VIEW IN TELEGRAM
Веселье с type erasure: делаем обертку с семантикой значения для полиморфных типов
Павел Новиков

Цель доклада — познакомить с подноготной базовой реализации type erasure (т.н. «стирание типов») в C++, а также придать уверенности при возможном взаимодействии с подобным кодом.

Используя реализацию обертки с семантикой значения в качестве примера, мы посмотрели на то, как работает type erasure, похожий на std::any.

В отличие от повсеместно используемой семантики указателя или ссылки, в данном случае обертка с семантикой значения позволяет нам обращаться с полиморфными объектами со «стертыми типами» как с обычными значениями: перемещать их, копировать, присваивать новые значения, при этом всей головной болью владения (ownership) и клонирования объекта исходного типа займётся реализация «за кулисами».

источник

#cpp #programming
3🔥2😁1
This media is not supported in your browser
VIEW IN TELEGRAM
🐦 Flappy Bird на Си: Вес APK < 100 Килобайт! 🚀

В сентябре 2024 года, увидев Flappy Bird на C# в дискорд-канале Raylib, я решил попробовать реализовать эту игру на Си для Android с весом APK менее 100 КБ. 🚀

Идея казалась безумной, но спортивный интерес взял верх. 💪

https://github.com/VadimBoev/FlappyBird

#cpp #programming
👍85🔥3
🧩 userver 3.0 — крупное обновление C++ фреймворка от Яндекса для highload-сервисов

Яндекс Go выпустил новую версию open source-фреймворка userver, который используется для разработки высоконагруженных и отказоустойчивых систем промышленного масштаба. В релиз вошло более 2500 улучшений.

🚀 Основные моменты:
- Chaotic — генерация boilerplate-кода по схемам данных
- userver easy — быстрый старт микросервисов с возможностью дальнейшего масштабирования
- Снижение потребления RAM и CPU в production-сценариях
- Асинхронная архитектура для высоконагруженных сервисов
- Используется в реальных сервисах Яндекса: Go, Еда, Лавка и других
- Open source и доступен сообществу на GitHub

📌 GitHub https://github.com/userver-framework

#cpp
12🔥8👍4