METABYTE
К списку статей

Как я засунул Rust-движок в шесть языков, и никто не пострадал

Один разработчик упаковал Rust-движок для вывода в шесть языковых рантаймов — теперь нейросети можно запускать откуда угодно, даже из COBOL (шутка).

15 мая 20262 мин чтения
Как я засунул Rust-движок в шесть языков, и никто не пострадал

Разработчик с ником py-teleos решил, что одного Rust ему мало, и внедрил свой движок для машинного вывода аж в шесть языковых сред: Python, Ruby, PHP, Java, Node.js и Go. Выглядит это как попытка скрестить ужа с ежом, но, судя по всему, получилось даже работоспособно.

Как это работает и зачем?

Суть простая: есть нативная библиотека на Rust, которая умеет быстро гонять модели машинного обучения (типа ONNX или собственные). Вокруг неё автор накрутил обёртки для каждого из шести языков — через FFI, C ABI и немного магии. Теперь разработчики могут вызывать inference из любимого языка, не покидая зону комфорта.

Плюсы подхода:

  • Производительность Rust (без GC, без тормозов).
  • Единый движок — меньше шансов, что Python-модель будет считать не так, как Java-модель.
  • Не надо учить Rust, если вы пишете на PHP (хотя, может, и стоило бы).

Минусы:

  • Обёртки — это всегда дополнительный слой, который может бажить.
  • Если вы фанат JavaScript, то готовьтесь к тому, что нативный модуль придётся собирать под каждую платформу отдельно. Добро пожаловать в мир node-gyp.

Почему это не очередной хайп?

Подобные проекты — не редкость, но здесь подкупает простота: автор выложил всё в открытый доступ, и можно посмотреть, как он мучился с FFI. Для стартапов, которые хотят быстро прототипировать на Python, а потом выкатить в продакшн на Go, это реально экономит время. А ещё это хороший пример, как Rust постепенно становится клеем для всей экосистемы — не только системное программирование, но и ML.

Комментарий студии METABYTE: Если вы тоже хотите скрестить Rust с чем-то несочетаемым, но боитесь, что всё развалится — мы знаем, как сделать это без боли. Главное, не пытайтесь внедрить Rust в Excel, мы уже пробовали. Там VBA обижается. 🤖

СЛЕДУЮЩИЙ ШАГ

Понравилось как мыслим?

Применяем те же принципы в клиентских проектах: AI, автоматизации, продукты, которые не умирают после релиза.