🆕 Анонс: Proxy 4 — новый шаг в C++-полиморфизме
🟢 Что такое Proxy 4?
Proxy — это header-only, кроссплатформенная библиотека C++20, позволяющая писать полиморфный код без наследования и традиционных виртуальных функций.
Используется в кодовой базе Windows с 2022 года и теперь выходит как зрелая, готовая к продакшену технология.
**Что нового в версии 4?**
- Навыки (Skills): простое подключение возможностей (format, fmt_format, rtti, as_view, slim и др.) через композицию фасадов.
-
- Совместное владение: новые API
- Умный диспетчинг и конверсии: возможности
- Рекурсивные фасады:
Документация теперь размещена на обновлённом сайте — удобная навигация, FAQ, API-справочник, примеры.
Также доступен экспериментальный запуск в Compiler Explorer: попробуйте Proxy прямо в браузере без настройки среды.
Почему это важно?
- Полиморфизм без наследования и виртуалок: менее навязчиво, гибче и возможно производительнее.
- Эффективное управление временем жизни объектов: поддержка владения, заимствования и слабых ссылок.
- Высокая производительность сравнима или превосходит ручной код.
- Расширяемость и гибкость: полиморфизм поверх функций, операторов, конверсий и даже кастомных абстракций.
Что говорят разработчики (reddit-комментарии):
> “Proxy library is like std::any … but adds runtime polymorphism without needing inheritance.”
> — TheFreestyler83
> “It's like doing
> — qalmakka
> “They claim it's both easier and faster, but … ownership seems very unclear …”
> — Bart_V
Резюме
- Proxy 4 — новый стандарт для полиморфизма в C++.
- Богатая модульная архитектура — расширение навыков через фасады.
- Инструменты: документация, примеры в Compiler Explorer, нативные C++20 возможности.
- Признание от сообщества и множество способов применения, включая заимствование идей из Rust.
🟠 Автор: Mingxin Wang, старший инженер Microsoft: devblogs.microsoft.com/cppblog/announcing-proxy-4-the-next-leap-in-c-polymorphism
@cpluspluc
Proxy — это header-only, кроссплатформенная библиотека C++20, позволяющая писать полиморфный код без наследования и традиционных виртуальных функций.
Используется в кодовой базе Windows с 2022 года и теперь выходит как зрелая, готовая к продакшену технология.
**Что нового в версии 4?**
- Навыки (Skills): простое подключение возможностей (format, fmt_format, rtti, as_view, slim и др.) через композицию фасадов.
-
proxy_view
и weak_proxy
: удобные типы для нефламентируемых и слабых ссылок. - Совместное владение: новые API
make_proxy_shared
и allocate_proxy_shared
обеспечивают эффективное разделенное владение без overhead std::shared_ptr
. - Умный диспетчинг и конверсии: возможности
weak_dispatch
, explicit_conversion_dispatch
, улучшенные сообщения об ошибках, понятные концепты proxiable_target
, inplace_proxiable_target
. - Рекурсивные фасады:
facade_aware_overload_t
позволяет строить рекурсивные операторы (например, арифметику, конкатенацию) без преждевременной инстанциации. Документация теперь размещена на обновлённом сайте — удобная навигация, FAQ, API-справочник, примеры.
Также доступен экспериментальный запуск в Compiler Explorer: попробуйте Proxy прямо в браузере без настройки среды.
Почему это важно?
- Полиморфизм без наследования и виртуалок: менее навязчиво, гибче и возможно производительнее.
- Эффективное управление временем жизни объектов: поддержка владения, заимствования и слабых ссылок.
- Высокая производительность сравнима или превосходит ручной код.
- Расширяемость и гибкость: полиморфизм поверх функций, операторов, конверсий и даже кастомных абстракций.
Что говорят разработчики (reddit-комментарии):
> “Proxy library is like std::any … but adds runtime polymorphism without needing inheritance.”
> — TheFreestyler83
> “It's like doing
&something as &dyn Display
in Rust… you can do type erasure like virtual interfaces, but without editing types.” > — qalmakka
> “They claim it's both easier and faster, but … ownership seems very unclear …”
> — Bart_V
Резюме
- Proxy 4 — новый стандарт для полиморфизма в C++.
- Богатая модульная архитектура — расширение навыков через фасады.
- Инструменты: документация, примеры в Compiler Explorer, нативные C++20 возможности.
- Признание от сообщества и множество способов применения, включая заимствование идей из Rust.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5🔥3
⚡️ Dependabot теперь поддерживает vcpkg
GitHub объявил о расширении возможностей Dependabot — теперь система автоматических обновлений работает с vcpkg, менеджером зависимостей для C/C++ от Microsoft. Это позволит поддерживать актуальность native-библиотек без ручного вмешательства.
Теперь Dependabot отслеживает изменения в vcpkg.json и автоматически создает pull-request'ы для обновления builtin-baseline. Для подключения достаточно добавить конфигурацию vcpkg в файл .github/dependabot.yml.
🔗 Ссылка - *клик*
@cpluspluc
GitHub объявил о расширении возможностей Dependabot — теперь система автоматических обновлений работает с vcpkg, менеджером зависимостей для C/C++ от Microsoft. Это позволит поддерживать актуальность native-библиотек без ручного вмешательства.
Теперь Dependabot отслеживает изменения в vcpkg.json и автоматически создает pull-request'ы для обновления builtin-baseline. Для подключения достаточно добавить конфигурацию vcpkg в файл .github/dependabot.yml.
🔗 Ссылка - *клик*
@cpluspluc
❤7🔥3👍1🥰1
Forwarded from Machinelearning
Группа инженеров из Google DeepMind опубликовали 12-ю главу своего он-лайн учебника "How to Scale Your Model: A Systems View of LLMs on TPUs"
How to Scale Your Model - практико-ориентированное руководство по масштабированию LLM из 12 разделов для разработчиков и исследователей. Оно объясняет, как анализировать и оптимизировать производительность модели, учитывая системные ресурсы: вычисления, память и пропускную способность.
Пособие научит выбирать оптимальные стратегии параллелизма, оценивать стоимость и время обучения и инференса, а также глубже понять взаимодействие между TPU/GPU и алгоритмами масштабирования как на одном, так и на тысячах ускорителей.
12-я глава - глубокое техническое руководство по архитектуре GPU и стратегиям масштабирования больших моделей. В ней детально разбирается устройство современных GPU NVIDIA: Streaming Multiprocessors, Tensor Cores, иерархия памяти (HBM, L2, SMEM), все это с подробными сравнительными таблицами характеристик для разных поколений чипов.
Очень подробно выполнено сравнение архитектур GPU и TPU, с объясняем ключевого различия между модульностью GPU и монолитностью TPU.
Особое внимание, что редкость для обучающих материалов, уделено сетевой организации кластеров. Авторы доступно объясняют как GPU соединяются внутри узлов через NVLink/NVSwitch и между узлами через InfiniBand в топологии "Fat tree", и как пропускная способность на каждом уровне влияет на реальную производительность коллективных операций (AllReduce, AllGather).
Описаны основные стратегии параллелизма: Data Parallelism, Tensor Parallelism, Expert Parallelism и Pipeline Parallelism, с разбором их ограничений и примеров из реальных проектов.
В конце главы есть хороший анализ новых возможностей архитектуры Blackwell.
@ai_machinelearning_big_data
#AI #ML #LLM #Scaling #GPU #TPU
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5❤🔥2🔥1
🔥 БЕСПЛАТНЫЙ КУРС ПО СОЗДАНИЮ НЕЙРО-СОТРУДНИКОВ НА GPT И ДРУГИХ LLM 🔥
Ищете практический и углубленный курс, чтобы освоить создание нейро-сотрудников? Мы создали курс из 5 объемных занятий. Это именно то, что нужно, чтобы прокачать свои навыки абсолютно бесплатно!
📌 Темы занятий:
1. Введение в мир нейро-сотрудников
2. Как работают LLM и их аналоги
3. Создание базы знаний для нейро-сотрудника (RAG)
4. Тестирование и отладка нейро-сотрудников
5. Интеграция нейро-сотрудников в Production
Вот 5 тем курса - он максимально простой и доступный, общеобразовательный, без какого-либо сложного программирования 📚Прохождение этого курса, скорее всего, займет у вас от 1 до 3 часов
🤖 Присоединяйтесь к нашему бесплатному курсу и разберитесь в этой увлекательной теме с нами!
Ищете практический и углубленный курс, чтобы освоить создание нейро-сотрудников? Мы создали курс из 5 объемных занятий. Это именно то, что нужно, чтобы прокачать свои навыки абсолютно бесплатно!
📌 Темы занятий:
1. Введение в мир нейро-сотрудников
2. Как работают LLM и их аналоги
3. Создание базы знаний для нейро-сотрудника (RAG)
4. Тестирование и отладка нейро-сотрудников
5. Интеграция нейро-сотрудников в Production
Вот 5 тем курса - он максимально простой и доступный, общеобразовательный, без какого-либо сложного программирования 📚Прохождение этого курса, скорее всего, займет у вас от 1 до 3 часов
🤖 Присоединяйтесь к нашему бесплатному курсу и разберитесь в этой увлекательной теме с нами!
🧠 C++ хитрая задача — SPSC-кольцевая очередь без блокировок (lock-free), корректная по memory ordering
Задача.
Реализуйте обобщённую кольцевую очередь single-producer / single-consumer (один писатель, один читатель), которая:
- не использует мьютексы;
- корректна по отношению к перезагрузкам CPU/компиляторным переупорядочиваниям (правильные `memory_order`);
- не падает на гонках при чтении/записи индексов;
- работает на произвольных типах
- имеет фиксированную ёмкость
Требования:
1)
2)
3) Между продюсером и консюмером ровно по одному потоку.
4) Без UB: корректно управлять временем жизни
5) Отсутствие ложных срабатываний на гонки: индексы —
Решение
Ключевая идея: у нас **отдельные** атомики для `head` (читатель продвигает) и `tail` (писатель продвигает).
- Писатель смотрит `head` только с `memory_order_acquire` (наблюдать продвинутые позиции),
обновляет `tail` с `memory_order_release`.
- Читатель зеркально: читает `tail` с `acquire`, продвигает `head` с `release`.
Так мы гарантируем, что **запись объекта** произойдёт до публикации индекса, а **чтение** — после наблюдения индекса.
Частые ошибки (и почему это «хитро»):
- Неверные порядки памяти. seq_cst «вылечит», но дорого; relaxed везде — сломает HB-отношения. Нужны именно пары release/acquire на публикации индексов.
- Забыли разрушить объект в слоте. Утечки и нарушение инвариантов времени жизни.
- Модуль через % и N не степень 2. Работает, но медленнее; очень заметно на горячих путях.
- Многопоточность не SPSC. Даже два продюсера ломают модель: нужны дополнительные атомики/барьеры (или MPMC структура).
- false sharing на head_/tail_. Без выравнивания производительность деградирует на нагрузке.
Задача.
Реализуйте обобщённую кольцевую очередь single-producer / single-consumer (один писатель, один читатель), которая:
- не использует мьютексы;
- корректна по отношению к перезагрузкам CPU/компиляторным переупорядочиваниям (правильные `memory_order`);
- не падает на гонках при чтении/записи индексов;
- работает на произвольных типах
T
(в том числе не `trivially copyable`);- имеет фиксированную ёмкость
N
, лучше степенью двойки для дешёвого модуля через маску.Требования:
1)
try_push(T)
— помещает элемент, если не переполнено; возвращает false
иначе. 2)
try_pop(T&)
— извлекает элемент, если не пусто; возвращает false
иначе. 3) Между продюсером и консюмером ровно по одному потоку.
4) Без UB: корректно управлять временем жизни
T
(placement new / явный деструктор). 5) Отсутствие ложных срабатываний на гонки: индексы —
std::atomic<size_t>
с правильными порядками.Ключевая идея: у нас **отдельные** атомики для `head` (читатель продвигает) и `tail` (писатель продвигает).
- Писатель смотрит `head` только с `memory_order_acquire` (наблюдать продвинутые позиции),
обновляет `tail` с `memory_order_release`.
- Читатель зеркально: читает `tail` с `acquire`, продвигает `head` с `release`.
Так мы гарантируем, что **запись объекта** произойдёт до публикации индекса, а **чтение** — после наблюдения индекса.
Частые ошибки (и почему это «хитро»):
- Неверные порядки памяти. seq_cst «вылечит», но дорого; relaxed везде — сломает HB-отношения. Нужны именно пары release/acquire на публикации индексов.
- Забыли разрушить объект в слоте. Утечки и нарушение инвариантов времени жизни.
- Модуль через % и N не степень 2. Работает, но медленнее; очень заметно на горячих путях.
- Многопоточность не SPSC. Даже два продюсера ломают модель: нужны дополнительные атомики/барьеры (или MPMC структура).
- false sharing на head_/tail_. Без выравнивания производительность деградирует на нагрузке.
🔥6👍5❤3🗿2🥰1
📦 C++ обертка для SQLite с расширенными возможностями ⚙️
Библиотека boost_sqlite предоставляет удобный интерфейс для работы с SQLite в C++. Она поддерживает типизированные запросы, подготовленные выражения, функции на основе JSON и пользовательские функции. Библиотека не скрывает C-API SQLite, а дополняет его.
🚀Основные моменты:
- Типизированные запросы и подготовленные выражения
- Поддержка JSON и пользовательских функций
- Виртуальные таблицы и хуки событий
- Легкая интеграция с существующими проектами
📌 GitHub: https://github.com/klemens-morgenstern/sqlite
@cpluspluc
Библиотека boost_sqlite предоставляет удобный интерфейс для работы с SQLite в C++. Она поддерживает типизированные запросы, подготовленные выражения, функции на основе JSON и пользовательские функции. Библиотека не скрывает C-API SQLite, а дополняет его.
🚀Основные моменты:
- Типизированные запросы и подготовленные выражения
- Поддержка JSON и пользовательских функций
- Виртуальные таблицы и хуки событий
- Легкая интеграция с существующими проектами
📌 GitHub: https://github.com/klemens-morgenstern/sqlite
@cpluspluc
👍10❤6🔥3🥰1
🧩 Умный текстовый анализатор для обработки данных
Этот репозиторий предлагает инструменты для анализа и обработки текстовой информации. Он включает в себя функции для извлечения ключевых слов, анализа частоты слов и других полезных методов, которые помогут в работе с текстовыми данными.
🚀 Основные моменты:
- Извлечение ключевых слов из текста
- Анализ частоты слов и фраз
- Поддержка различных форматов входных данных
- Легкий в использовании интерфейс
📌 GitHub: https://github.com/conanhujinming/text_dedup
@cpluspluc
Этот репозиторий предлагает инструменты для анализа и обработки текстовой информации. Он включает в себя функции для извлечения ключевых слов, анализа частоты слов и других полезных методов, которые помогут в работе с текстовыми данными.
🚀 Основные моменты:
- Извлечение ключевых слов из текста
- Анализ частоты слов и фраз
- Поддержка различных форматов входных данных
- Легкий в использовании интерфейс
📌 GitHub: https://github.com/conanhujinming/text_dedup
@cpluspluc
👍5🔥3❤1
Тренировки Яндекса по алгоритмам: от решения задач к карьере в IT
Вас ждет 4 недели практики, чтобы систематизировать знания и научиться решать задачи, которые встречаются на собеседованиях и в реальной работе.
Программа включает восемь ключевых тем: множества, словари, динамическое программирование и не только. Лекции и разборы будет вести Михаил Густокашин — директор Центра студенческих олимпиад ВШЭ и тренер чемпионов мира по программированию.
Топ-300 участников смогут пропустить контест при отборе на стажировку в Яндекс по направлениям бэкенд, фронтенд, мобилка и пройти пробное техническое собеседование. А еще лидеры рейтинга смогут получить персональные карьерные консультации.
Подать заявку можно до 29 сентября.
Вас ждет 4 недели практики, чтобы систематизировать знания и научиться решать задачи, которые встречаются на собеседованиях и в реальной работе.
Программа включает восемь ключевых тем: множества, словари, динамическое программирование и не только. Лекции и разборы будет вести Михаил Густокашин — директор Центра студенческих олимпиад ВШЭ и тренер чемпионов мира по программированию.
Топ-300 участников смогут пропустить контест при отборе на стажировку в Яндекс по направлениям бэкенд, фронтенд, мобилка и пройти пробное техническое собеседование. А еще лидеры рейтинга смогут получить персональные карьерные консультации.
Подать заявку можно до 29 сентября.
❤3👍3
librats — это современная библиотека для пиринговых сетей, обеспечивающая высокую производительность и простоту использования. Она предлагает кроссплатформенные решения с поддержкой автоматического обнаружения узлов, NAT-траверсала и безопасной передачи данных.
🚀 Основные моменты:
- Высокая производительность с использованием C++17
- Поддержка DHT, mDNS и STUN для обнаружения узлов
- Безопасная передача данных с шифрованием и проверкой целостности
- Удобный API для работы с событиями и сообщениями
- Кроссплатформенность: Windows, Linux, macOS
📌 GitHub: https://github.com/DEgitx/librats
#cpp
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2🥰1