🧩 Почему Databento не переписали feed-handler на Rust
Кратко:
- Контекст: реальный поток 14 млн сообщений/с и задержки <100 мкс. Требовались native-язык, простая параллельность и минимум общей памяти.
- Итог: для переписывания feed-handler выбрали C++23, а не Rust — из-за нескольких «больно на практике» паттернов.
Где Rust мешал именно под их кейс:
1) Повторное использование буфера
Хотели выделять буфер вне цикла и переиспользовать на итерациях без копий. Ссылки + времена жизни → конфликт с borrow-checker, хотя логически данные не переживают итерацию.
2) Самоссылочные структуры (self-referential structs)
Базовый паттерн «владение состоянием в объекте + подкомпоненты держат ссылки» в Rust упирается в модель заимствования. Обходные пути — RC/Arc или протаскивать ссылки аргументами — добавляют оверхед/шум. В C++ — просто порядок полей и правила перемещения/копирования.
3) Компиляционные дженерики
Шаблоны C++ гибче (partial specialization, fold-expr, constexpr). В Rust те же идеи требуют trait-интерфейсов и шаблонного «лесовоздства». На десятках версий структур получается много шаблонного кода или макросов.
Нет, это не «Rust плох»:
- У Databento уже много Rust в проде: кодеки DBN, realtime-шлюзы, клиентская библиотека. Инструменты cargo, диагностика компилятора и безопасность — огромный плюс.
- Но под данный «узкий» участок C++ дал:
кодо-реюз со старой базы, тонкий контроль ресурсов, гибкие шаблоны и прямая экспертиза команды.
Вывод:
- В их финтех-стеке оба языка уместны: Rust — где важны безопасность и современная экосистема, C++ — где критичны сам паттерн владения/памяти и совместимость с существующим кодом. Поле меняется: C++ получает compile-time reflection, Rust развивает Polonius — решения всегда прагматичны под задачу.
https://databento.com/blog/why-we-didnt-rewrite-our-feed-handler-in-rust
Кратко:
- Контекст: реальный поток 14 млн сообщений/с и задержки <100 мкс. Требовались native-язык, простая параллельность и минимум общей памяти.
- Итог: для переписывания feed-handler выбрали C++23, а не Rust — из-за нескольких «больно на практике» паттернов.
Где Rust мешал именно под их кейс:
1) Повторное использование буфера
Хотели выделять буфер вне цикла и переиспользовать на итерациях без копий. Ссылки + времена жизни → конфликт с borrow-checker, хотя логически данные не переживают итерацию.
2) Самоссылочные структуры (self-referential structs)
Базовый паттерн «владение состоянием в объекте + подкомпоненты держат ссылки» в Rust упирается в модель заимствования. Обходные пути — RC/Arc или протаскивать ссылки аргументами — добавляют оверхед/шум. В C++ — просто порядок полей и правила перемещения/копирования.
3) Компиляционные дженерики
Шаблоны C++ гибче (partial specialization, fold-expr, constexpr). В Rust те же идеи требуют trait-интерфейсов и шаблонного «лесовоздства». На десятках версий структур получается много шаблонного кода или макросов.
Нет, это не «Rust плох»:
- У Databento уже много Rust в проде: кодеки DBN, realtime-шлюзы, клиентская библиотека. Инструменты cargo, диагностика компилятора и безопасность — огромный плюс.
- Но под данный «узкий» участок C++ дал:
кодо-реюз со старой базы, тонкий контроль ресурсов, гибкие шаблоны и прямая экспертиза команды.
Вывод:
- В их финтех-стеке оба языка уместны: Rust — где важны безопасность и современная экосистема, C++ — где критичны сам паттерн владения/памяти и совместимость с существующим кодом. Поле меняется: C++ получает compile-time reflection, Rust развивает Polonius — решения всегда прагматичны под задачу.
https://databento.com/blog/why-we-didnt-rewrite-our-feed-handler-in-rust
❤4
Forwarded from C++ Academy
🚀 Полное руководство по
Этот репозиторий предлагает точную конфигурацию для работы с
🚀 Основные моменты:
- Необходима установка
- Поддержка CMake 4.1+ для экспериментального импорта
- Точный UUID для включения модуля
- Полная поддержка C++23 обязательна
- Примеры проектов для быстрой настройки
📌 GitHub: https://github.com/JRASoftware/cpp23-import-std-guide
#cpp
import std; в C++23Этот репозиторий предлагает точную конфигурацию для работы с
import std; в GCC 15.1 и CMake 4.1. Сэкономьте время, следуя проверенным настройкам и избегая распространенных ошибок.🚀 Основные моменты:
- Необходима установка
CXX_MODULE_STD 1 для всех целей- Поддержка CMake 4.1+ для экспериментального импорта
- Точный UUID для включения модуля
- Полная поддержка C++23 обязательна
- Примеры проектов для быстрой настройки
📌 GitHub: https://github.com/JRASoftware/cpp23-import-std-guide
#cpp
GitHub
GitHub - JRASoftware/cpp23-import-std-guide: Complete guide for C++23 import std; with GCC 15.1 and CMake 4.1. Includes the critical…
Complete guide for C++23 import std; with GCC 15.1 and CMake 4.1. Includes the critical CXX_MODULE_STD property that most guides miss. - JRASoftware/cpp23-import-std-guide
❤2
Потрясающий C++
Это огромная подборка библиотек, фреймворков и ресурсов для C++. Всё собрано в одном месте и сгруппировано по категориям.
Сохраняйте в избранное, чтобы держать под рукой!
#cpp
Это огромная подборка библиотек, фреймворков и ресурсов для C++. Всё собрано в одном месте и сгруппировано по категориям.
Сохраняйте в избранное, чтобы держать под рукой!
#cpp
👍5❤3
🔥 Подборка полезных ресурсов для программистов.
Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://xn--r1a.website/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://xn--r1a.website/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://xn--r1a.website/addlist/mzMMG3RPZhY2M2Iy
Папка Linux:https://xn--r1a.website/addlist/w4Doot-XBG4xNzYy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://xn--r1a.website/addlist/BkskQciUW_FhNjEy
Сохрани себе, чтобы не потерять!
Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://xn--r1a.website/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://xn--r1a.website/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://xn--r1a.website/addlist/mzMMG3RPZhY2M2Iy
Папка Linux:https://xn--r1a.website/addlist/w4Doot-XBG4xNzYy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://xn--r1a.website/addlist/BkskQciUW_FhNjEy
Сохрани себе, чтобы не потерять!
❤2
🚀 MPSC Lock-Free Queue in C++
Эта библиотека реализует очередь с множеством производителей и одним потребителем (MPSC) на основе кольцевого буфера. Она предназначена для изучения концепций неблокирующего программирования и оптимизации производительности, обеспечивая предсказуемое поведение памяти и отличную кэшируемость.
🚀 Основные моменты:
- Реализация неблокирующей очереди для многопоточных приложений.
- Использует кольцевой буфер для повышения производительности.
- Применяет атомарные операции для синхронизации.
- Подходит для высокопроизводительных систем без динамической аллокации.
📌 GitHub: https://github.com/bowtoyourlord/MPSCQueue
#cpp
Эта библиотека реализует очередь с множеством производителей и одним потребителем (MPSC) на основе кольцевого буфера. Она предназначена для изучения концепций неблокирующего программирования и оптимизации производительности, обеспечивая предсказуемое поведение памяти и отличную кэшируемость.
🚀 Основные моменты:
- Реализация неблокирующей очереди для многопоточных приложений.
- Использует кольцевой буфер для повышения производительности.
- Применяет атомарные операции для синхронизации.
- Подходит для высокопроизводительных систем без динамической аллокации.
📌 GitHub: https://github.com/bowtoyourlord/MPSCQueue
#cpp
GitHub
GitHub - bowtoyourlord/MPSCQueue: A simple, lock-free MPSC (Multiple Producer, Single Consumer) queue implemented in C++ for learning…
A simple, lock-free MPSC (Multiple Producer, Single Consumer) queue implemented in C++ for learning and experimentation purposes. Useful for everyone who is interested in low latency & extr...
❤2👍2
🚀 Курс «Java-разработчик» - всё, что нужно для современной Java-разработки
Вы освоите Java с нуля до уровня Middle:
- разработку приложений и серверных веб-сервисов
- работу с реляционными БД
- экосистему: Spring, Hibernate, PostgreSQL, Docker, Kubernetes, Kafka, RabbitMQ, JUnit, Maven/Gradle, IntelliJ IDEA
Обучение построено в 3 ступени по 5 месяцев: от первой программы и базовых алгоритмов - до продвинутого Spring и облаков.
📅 Старт курса - 27 ноября.
⏳ Успейте занять место и пройти вступительное тестирование: https://otus.pw/vGaX/?erid=2W5zFH92i7z
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Вы освоите Java с нуля до уровня Middle:
- разработку приложений и серверных веб-сервисов
- работу с реляционными БД
- экосистему: Spring, Hibernate, PostgreSQL, Docker, Kubernetes, Kafka, RabbitMQ, JUnit, Maven/Gradle, IntelliJ IDEA
Обучение построено в 3 ступени по 5 месяцев: от первой программы и базовых алгоритмов - до продвинутого Spring и облаков.
📅 Старт курса - 27 ноября.
⏳ Успейте занять место и пройти вступительное тестирование: https://otus.pw/vGaX/?erid=2W5zFH92i7z
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
❤1
🚀 Умный билд-системы с HMake
HMake — это продвинутое программное обеспечение для сборки, ориентированное на C++. Оно предлагает уникальный подход к управлению зависимостями и поддерживает модули C++20 без предварительного сканирования. Система оптимизирована для высокой скорости сборки и низкого потребления памяти.
🚀Основные моменты:
- Поддержка C++20 модулей и заголовочных единиц.
- Эффективный алгоритм сборки с динамическими зависимостями.
- Высокая скорость сборки по сравнению с Ninja.
- Простая архитектура для расширяемости.
- Поддержка множества языков программирования в будущем.
📌 GitHub: https://github.com/HassanSajjad-302/HMake
#cpp
HMake — это продвинутое программное обеспечение для сборки, ориентированное на C++. Оно предлагает уникальный подход к управлению зависимостями и поддерживает модули C++20 без предварительного сканирования. Система оптимизирована для высокой скорости сборки и низкого потребления памяти.
🚀Основные моменты:
- Поддержка C++20 модулей и заголовочных единиц.
- Эффективный алгоритм сборки с динамическими зависимостями.
- Высокая скорость сборки по сравнению с Ninja.
- Простая архитектура для расширяемости.
- Поддержка множества языков программирования в будущем.
📌 GitHub: https://github.com/HassanSajjad-302/HMake
#cpp
GitHub
GitHub - HassanSajjad-302/HMake: C++ build system that uses C++ for build configuration.
C++ build system that uses C++ for build configuration. - HassanSajjad-302/HMake
❤2