Портфолио: три системы на языке Rust

Здесь три самостоятельных проекта. Для каждого — что он делает, насколько готов и сколько в него вложено работы. Все числа получены измерением инструментами, а не прикидкой; где стоит «оценка» — так и написано.

Если вы не пишете на Rust, в конце есть короткая шпаргалка, как читать технические цифры в таблицах.


Коротко: три проекта одним взглядом

Проект Что делает Размер Насколько готов
xslt-transducer Свой движок для языка запросов к XML-документам (аналог «SQL, но для XML») ~49 000 строк Рабочий, близок к промышленному качеству
kdsl Из одного описания расчёта генерирует быстрый код сразу под процессор и видеокарты ~7 800 строк Рабочий прототип, часть задумки ещё впереди
colm-rs Набор инструментов вокруг языка COLM для разбора и преобразования текста ~1 400 строк Исследовательские прототипы

Ниже — подробно про каждый.


1. xslt-transducer — свой движок запросов к XML

Что это. Существует язык XPath (и его «старшие братья» XQuery и XSLT) — им спрашивают данные из XML-документов и преобразуют их. Проще всего представить так: как SQL достаёт данные из обычной базы, так XPath — это «SQL для XML».

Признанный эталон в этой области — коммерческий движок Saxon (написан на Java, стоит денег). Мы написали свой движок на Rust и полностью с нуля — не оборачивая чужие готовые библиотеки, а реализовав всё сами. Важная деталь: в мире Rust готового решения такого уровня просто не было — всё, что есть, либо застряло на версии стандарта 2018 года, либо является «обёрткой» над старой библиотекой на языке C.

Насколько готов. Рабочий движок, близкий к промышленному качеству. Основная часть — обработка XPath/XQuery версии 3.1 — работает уверенно. Поддержка преобразований XSLT — пока ранний прототип.

Чем доказывается качество — и это главный аргумент. У консорциума W3C (организация, которая утверждает интернет-стандарты) есть официальный набор проверочных тестов. Тем же набором проверяют и коммерческие движки — это честная, признанная в отрасли линейка. Результаты нашего движка:

Сколько работы вложено (точные числа):

Часть проекта Что это Строк кода Структур Перечисл. Функций Тестов
xpath-core Сам движок (сердце проекта) 40 653 52 48 474 314
xpath-harness Запуск и подсчёт официальных тестов 3 758 18 7 85 3
xpath-census Инструмент статистики по возможностям 1 466 5 0 36 0
dss-core Ранний слой преобразований XSLT 3 481 13 13 89 79
Итого 49 358 88 68 684 396

Разбор языка написан вручную (89 отдельных функций-разборщиков) — это кропотливая работа, зато полный контроль над поведением.

Какие навыки показывает: построение разборщиков сложных языков, соответствие огромному отраслевому стандарту с измеримым доказательством (а не «на словах»), уверенный Rust на трудной задаче.


2. kdsl — генератор быстрого кода под разное «железо»

Что это. Когда нужен очень быстрый расчёт, его обычно приходится писать вручную отдельно под каждый тип «железа»: под обычный процессор, под видеокарту NVIDIA, под видеокарты других производителей. Это долго и легко наделать ошибок. kdsl позволяет описать расчёт один раз, а дальше программа сама генерирует три оптимизированные версии:

Сама идея «опиши один раз — получи под всё» пришла из известного инструмента Halide (его используют, например, в Google и Adobe для обработки изображений).

Насколько готов. Рабочий прототип. Все три генератора кода запускаются (для процессора — самый полный; для видеокарт — частично). Главная «фишка» первоисточника — отдельная тонкая настройка того, как именно раскладывать вычисление по железу — пока только спроектирована, но ещё не построена. Отдельно отмечу честно: внутри проекта лежит очень амбициозный документ-манифест, и на собеседовании стоит сразу сказать, что рабочий код пока скромнее этого манифеста.

Чем доказывается. Результаты всех трёх сгенерированных версий сверяются с эталонным расчётом и совпадают до последнего бита — это доказывает, что автоматическая генерация кода не вносит ошибок. 56 автоматических тестов проходят, ни один не падает.

Сколько работы вложено (точные числа):

Часть проекта Что это Строк кода Структур Перечисл. Трейтов Функций Тестов
kdsl Основной генератор (процессор + NVIDIA) 6 838 13 6 2 103 56
kdsl-spirv Генератор под универсальный GPU-стандарт 933 1 0 0 10 0
Итого 7 771 14 6 2 113 56

(В подсчёт вошёл только рукописный код. Автоматически сгенерированные программой примеры-крейты честно исключены — это не ручная работа, а результат работы самого генератора.)

Какие навыки показывает: написание компиляторов и генераторов кода, работа с видеокартами (CUDA, SPIR-V/Vulkan, ISPC), проектирование удобного языка описания расчётов, сравнительное («до бита») тестирование результатов.


3. colm-rs — инструменты для языка разбора текста COLM

Что это. COLM — специализированный язык для разбора и преобразования текста (например, чтобы автоматически переводить код из одного формата в другой). Его первоисточник написан на языке C автором самого языка. Мы построили вокруг него набор из четырёх небольших инструментов на Rust:

Попутно мы нашли и починили две ошибки в оригинальном C-коде — из-за них программа аварийно падала.

Насколько готов. Исследовательские прототипы, небольшие по объёму — но с реально работающими и проверенными частями.

Чем доказывается. Тесты запускались по-настоящему: переписанный исполнитель прошёл 7 тестов из 7, компилятор — 6 из 6, причём с проверкой, что его результат совпадает буква-в-букву с оригинальным инструментом COLM.

Сколько работы вложено (точные числа):

Часть проекта Что это Строк кода Структур Функций Тестов
colmc Компилятор COLM внутри Rust (+ 2 почин. бага) 261 0 11 6
colm-rt Переписанный на Rust «исполнитель» 761 5 11 7
colm-rs Мостик к оригинальной C-библиотеке + демо 343 8 12 0
colm-udf-demo Сквозное демо до базы данных 70 0 2 0
Итого 1 435 13 36 13

Объём небольшой, но задача из тех, где строчек мало, а сложность высокая: нужно было аккуратно состыковать два языка (Rust и C), разобраться в чужом коде на 105 000 строк и починить в нём ошибки.

Какие навыки показывает: стыковка Rust с кодом на C/C++ (непростая, «низкоуровневая» работа), понимание внутреннего устройства языков и их «исполнителей», умение читать и чинить большой чужой код.


Шпаргалка: как читать технические цифры

Для тех, кто не пишет на Rust — что означают столбцы в таблицах:


Все замеры сделаны 2026-07-01 инструментами: tokei (подсчёт строк) и собственный анализатор кода на основе Rust-парсера syn (подсчёт структур, функций и т.д.). Числа — не оценка, а измерение.


Контакты

Гура Денис

Приложения