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

РКН: clck.ru/3FmxJF

#VRHSZ
Download Telegram
🧩 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
🎨 FusionUI: современная библиотека UI на C++23

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

🚀Основные моменты:
- Декларативные виджеты с типобезопасными стилями
- Поддержка анимаций и переходов
- Отсутствие глобального состояния для изоляции приложений
- Легкая интеграция с Vulkan и SDL3
- Кроссплатформенная: Windows, macOS, Linux

📌 GitHub: https://github.com/neilmewada/FusionUI

#cpp
👍172🔥2😁1
⚙️ clap: современный парсер аргументов командной строки для C++26

clap предлагает удобный способ парсинга аргументов командной строки с использованием рефлексии. Он поддерживает различные типы аргументов, включая обязательные и необязательные, а также предоставляет возможность задавать значения по умолчанию и использовать переменные окружения.

🚀Основные моменты:
- Поддержка значений по умолчанию и необязательных аргументов
- Краткие аргументы и комбинированные флаги
- Аннотации для описаний полей
- Автоматическое преобразование имен в kebab-case
- Простота использования с рефлексией

📌 GitHub: https://github.com/nathan-baggs/clap

#cpp
🔥8👍21
🚁Высокопроизводительная библиотека H.A.L.O. для автономных дронов

H.A.L.O. Aegis Omniverse - это библиотека на C++20, предназначенная для навигации и защиты автономных спасательных дронов в сложных условиях. Она сочетает в себе передовые методы поиска пути и тактическое избегание препятствий с реакцией менее чем за наносекунду.

🚀 Основные моменты:
- Высокая производительность с использованием JPS+ для навигации.
- 10-слойная система защиты для мгновенного реагирования.
- Оптимизация под ARM NEON и SSE4 для максимальной скорости.
- Открытый исходный код для гуманитарных миссий.

📌 GitHub: https://github.com/Nguyenidkskibidi/halo-aegis-core

#cpp
🔥10👍5🤔41
🧩 ACAV: Интерактивный просмотр AST для C/C++ проектов

ACAV (Aurora Clang AST Viewer) — это настольное приложение для визуализации абстрактных синтаксических деревьев (AST) в проектах на C, C++ и Objective-C. Оно позволяет пользователям исследовать представление исходного кода Clang, перемещаться между местоположениями кода и узлами AST, а также изучать структуру программ.

🚀 Основные моменты:
- Интерактивная визуализация AST для языков семейства C.
- Двусторонняя навигация между исходным кодом и узлами AST.
- Просмотр файлового дерева для исходных файлов и заголовков.
- Поиск по исходному коду и узлам AST.
- Поддержка нативных и контейнеризованных рабочих процессов для macOS и Linux.

📌 GitHub: https://github.com/uvic-aurora/acav

#cpp
11👍6🥰1
🚀 Высокопроизводительная библиотека CNN на C++20

MetalNet — это заголовочная библиотека для свёрточных нейронных сетей, написанная на C++20. Она обеспечивает производительность, сопоставимую с популярными фреймворками, благодаря нулевым накладным расходам, использованию DAG для автоматического дифференцирования и оптимизации под архитектуру процессора.

🚀 Основные моменты:
- Заголовочная библиотека без внешних зависимостей
- Поддержка AVX2 и OpenMP для многопоточности
- Имплицитная свёртка GEMM без избыточного использования памяти
- Оптимизированные алгоритмы для повышения производительности
- Сравнения производительности с PyTorch

📌 GitHub: https://github.com/KunwarPrabhat/CustomCNN

#cpp
🔥61
📊 Минималистичная графовая база данных на C++17

TGDB — это простая графовая база данных, реализованная как статическая библиотека. Она поддерживает фиксированные узлы и индексные указатели, обеспечивая схему без схемы и работу с базовыми типами данных. База данных позволяет эффективно создавать и извлекать объекты с свойствами.

🚀Основные моменты:
- Унифицированный тип узла размером 56 байт.
- Поддержка встроенных типов: int, double, std::string.
- Двусторонние ссылки между узлами.
- Дисковая устойчивость через mmap.
- Быстрый локальный обход и глобальный поиск.

📌 GitHub: https://github.com/LincolnCox29/TrueGraphDataBase

#cpp
🤯64👍2🥰1😁1
☕️ Latte: Ultra-Low Latency C++ Telemetry Framework

Latte — это заголовочная библиотека C++ для телеметрии, предназначенная для высокочастотной торговли и реального времени. Она измеряет циклы ЦП с помощью таймеров x86_64 и использует фиксированные кольцевые буферы для хранения данных, минимизируя накладные расходы.

🚀Основные моменты:
- Высокая точность измерений в наносекундах.
- Поддержка до 64 активных слотов на поток.
- Три режима измерений: Fast, Mid и Hard.
- Без динамических аллокаций во время работы.
- Статистический анализ и очистка данных от выбросов.

📌 GitHub: https://github.com/MoonFlowww/Latte

#cpp
❤‍🔥7👍4🔥2🎉1
🚀 Библиотека ycetl для C++20: constexpr на первом месте

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

🚀 Основные моменты:
- Контейнеры, работающие в constexpr и на этапе выполнения.
- Умные указатели с поддержкой различных схем владения.
- Многотипная память для безопасного управления типами.
- Примеры использования, включая компиляцию простых чисел и вложенных деревьев.
- Совместимость с C++20 и современными компиляторами.

📌 GitHub: https://github.com/zokrezyl/ycetl

#cpp
👍83🤔2🦄1
🚀 SIMD-ускоренное преобразование целых чисел в строки

Simditoa - библиотека для быстрого преобразования 64-битных целых чисел в десятичные строки с использованием SIMD-инструкций. Достигает скорости менее 2 наносекунд на современном оборудовании, обеспечивая высокую производительность на архитектурах x86-64.

🚀 Основные моменты:
- Поддержка AVX-512 для максимальной скорости.
- Альтернативная скалярная реализация для совместимости.
- Простой API для интеграции в проекты C++.
- Значительное ускорение по сравнению с std::to_chars.

📌 GitHub: https://github.com/simditoa/simditoa

#cpp
🔥12👍41
⚡️ Один `static` - три разных смысла. Добро пожаловать в C.

В C ключевое слово static меняет поведение в зависимости от того, где именно оно написано.

### 1. static у глобальной переменной


static int global;


Переменная имеет internal linkage - она доступна только внутри текущего .c файла.

Это удобный способ спрятать детали реализации модуля.

### 2. static внутри функции


void foo(void) {
static int count;
count++;
}


count не создаётся заново при каждом вызове.

Он существует всё время работы программы и сохраняет значение между вызовами функции.


foo(); // count = 1
foo(); // count = 2
foo(); // count = 3


### 3. static у функции


static void bar(void) {
}


Функция становится видна только внутри текущего translation unit.

Другой .c файл вызвать bar() напрямую уже не сможет.

Итого:


static global variable -> скрыть символ внутри файла
static local variable -> сохранить состояние между вызовами
static function -> скрыть функцию внутри файла


🔥 Поэтому static в C полезнее воспринимать не как одно конкретное поведение, а как подсказку проверить две вещи:

lifetime и linkage.

#C #Programming #SystemsProgramming #LowLevel #Cpp
👍15🔥96❤‍🔥1
🎶 Оптимизированный аудиовизуализатор для Windows

Spectrum — это легковесный аудиовизуализатор на C++, который обрабатывает звук в реальном времени и выводит его в консоль без разрывов экрана. Он использует FFTW3 для анализа аудиосигналов и обеспечивает точное визуальное представление частот.

🚀 Основные моменты:
- Реализация на C++17 для Windows.
- Низкое использование CPU и памяти.
- Поддержка WASAPI для захвата системного звука.
- Отображение в виде ASCII-графиков.
- Легкий в использовании и установке.

📌 GitHub: https://github.com/majockbim/spectrum

#cpp
👍63🔥2
💡 Clang умеет показывать AST, и это один из лучших способов реально понять, что компилятор видит в вашем C/C++ коде.

AST — это Abstract Syntax Tree, внутреннее представление программы после парсинга.

Например, простой код:


int x = a + b * 2;


для компилятора — не просто строка текста, а дерево примерно такого смысла:


VarDecl
└── BinaryOperator +
├── a
└── BinaryOperator *
├── b
└── 2


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

У Clang AST можно получить напрямую:


clang++ -Xclang -ast-dump -fsyntax-only main.cpp


А в Compiler Explorer / Godbolt есть отдельный режим просмотра AST, поэтому можно менять код и сразу видеть, как перестраивается дерево.

Особенно полезно разбирать так:

* шаблоны;
* перегрузку функций;
* implicit conversions;
* auto;
* лямбды;
* range-based for;
* временные объекты;
* разные формы инициализации.

Если регулярно смотреть AST, C++ постепенно перестаёт выглядеть как набор «магических правил».

Начинаешь видеть код примерно так, как его видит компилятор.

🔗 https://godbolt.org/z/cfc7h41bT

#Cpp #Clang #Compiler #Programming
👍18🔥8🥰42💯1
📚 Библиотека для работы с SQLite в C++26 с использованием рефлексии

Reflite — это библиотека на C++26, которая упрощает взаимодействие с SQLite, позволяя использовать обычные структуры как основу для выполнения запросов. Она поддерживает основные операции: вставка, удаление, выборка и обновление, избавляя от лишнего шаблона кода.

🚀 Основные моменты:
- Легковесная библиотека в одном файле
- Поддержка операций INSERT, DELETE, SELECT, UPDATE
- Использует рефлексию для работы с типами структур
- Не требует полной реализации SQL, фокус на простоте
- Совместима с современными компиляторами C++26

📌 GitHub: https://github.com/KaruroChori/reflite

#cpp
🔥9👍42🥰1👌1