QuantLib переписывают на Rust: 470 тысяч строк C++ ради безопасности
QuantLib переписывают на Rust: 470 тысяч строк C++ ради безопасности
Один из самых уважаемых open-source проектов в финансовой математике — библиотека QuantLib — получил Rust-переосмысление. Авторы нового проекта Libitofin переносят примерно 470 тысяч строк зрелого C++ кода на безопасный идиоматичный Rust, и это заметно больше, чем просто «переписать на модном языке».
QuantLib — это 16 модулей проверенного временем кода для оценки производных финансовых инструментов. Именно на таких библиотеках держатся расчёты в банках и хедж-фондах, где ошибка в численных методах стоит очень дорого. Поэтому главный принцип порта — не менять математику, а сохранить её один в один.
Как устроен перенос
Авторы описывают подход как «снизу вверх, слой за слоем»: модуль нельзя портировать раньше его зависимостей. Оракулом корректности выступает родной тест-сьют QuantLib из 186 файлов .cpp — функция считается готовой только тогда, когда перенесены соответствующие тесты и вывод Rust совпадает с выводом C++ в пределах допуска.
Архитектурно ядро однопоточно-изменяемое на этапе настройки, а затем «замораживается» в неизменяемые снимки для параллельных вычислений через rayon — так удаётся обойтись без гонок данных. Поверх ядра лежат привязки к Python (через PyO3) и C-ABI (через cbindgen), поэтому один и тот же движок доступен из Python, C, C++, Julia, R и других языков. Название проекта — отсылка к Киёси Ито, чьё стохастическое исчисление лежит в основе современного ценообразования деривативов.
Отдельно авторы фиксируют дисциплину коммитов: целевой размер изменения — не более 350 строк, жёсткий предел — 500, всё крупное дробится на отдельные PR. В духе Rust предпочтение отдаётся типам времени компиляции и явным ошибкам Result вместо рантайм-кастов и тихих фолбэков, а удобства вынесены в привязки. Подробности можно найти в документации проекта.
Что это значит
Для индустрии это сигнал: переписывание критичного по надёжности кода с C++ на Rust перестаёт быть экспериментом и превращается в методичную инженерную практику с чёткими критериями приёмки. Для разработчиков финансового ПО появляется шанс получить движок без ручного управления памятью и циклических shared_ptr, но с той же численной точностью — а значит, и с меньшим числом дорогих сюрпризов в продакшене.
Если вам интересно, как устроены современные подходы к безопасному системному программированию и миграции legacy-кода, узнайте больше — там разбираются подобные инженерные кейсы простым языком.
📌 Чтобы не пропустить новые публикации, подписывайтесь там, где вам удобнее: Дзен или MAX.
💛 Если статья оказалась полезной, поддержите автора донатом.
Материал подготовлен на основе информации из открытых источников. Все права на исходные материалы принадлежат их авторам. Если вы являетесь правообладателем и возражаете против использования, свяжитесь с нами по адресу info@11st.press.