Rust в производстве: Astropad

Перевод | Автор оригинала: Ellina Poponnikova

В этом интервью я разговариваю с Джереми Ноупом, штатным инженером-программистом в Astropad, компании, которая разрабатывает продукты для творческих людей. Читайте дальше, чтобы узнать, где они используют Rust, почему они выбрали его, и с какими проблемами они столкнулись при использовании этого языка.

Интервью с Джереми Ноупом

Не могли бы вы немного рассказать об Astropad, проектах, над которыми работает компания, и вашей роли в них?

Astropad создает продукты для расширения возможностей творческих людей, особенно профессиональных креативщиков, поскольку мы начали с продукта, предназначенного для художников.

Теперь у нас есть два продукта. Первая - это Astropad Studio, которая превращает ваш iPad в планшет для рисования на вашем компьютере. Второй - Luna Display, который превращает ваш iPad в портативный второй дисплей для вашего компьютера.

Изначально моя роль начиналась как помощь в создании программного обеспечения для macOS и iPadOS, но затем переросла в помощь Rust в переводе наших продуктов на Windows и самостоятельную разработку Windows.

Джереми Ноуп

Можете ли вы рассказать о стеке технологий Astropad и месте в нем Rust?

Мы называем наш основной стек LIQUID, и это ядро наших приложений, которые мы перенесли на Rust. Он охватывает сети, видеокодек и многое другое. Это большая часть Rust для Windows, и, в конечном итоге, в будущем она станет большей частью Rust для macOS и iPadOS, поскольку мы начинаем заменять на эти платформы больше, чем просто сеть, на версию Rust.

Мы используем Rust в качестве нашей базовой библиотеки, обеспечивая кроссплатформенный движок для всех наших приложений. Мы также написали несколько внутренних инструментов для решения различных задач в Rust.

Как и почему вы решили выбрать Rust?

Мы выбрали Rust после того, как другие способы переноса наших продуктов на Windows не увенчались успехом. Мы хотели иметь возможность совместно использовать кодовую базу на разных платформах и не поддерживать отдельные, помимо собственного кода графического интерфейса. Нам также требовалась возможность сохранить часть нашего хорошо настроенного кода C++ и ассемблера.

Rust хорошо подходил для этого, и я лично изучал его и получал удовольствие от этого, поэтому я предложил поэтапное переписывание в Rust в качестве пути вперед. Знание, что переписывание в Rust, скорее всего, не приведет к потере производительности, но, возможно, повысит ее, также было большой победой.

Какие конкретные библиотеки Rust вы хотите добавить?

crossbeam_channel и serde - две библиотеки, которые мы используем и ценим. Мы также открыли исходный код нескольких наших собственных, например peertalk-rs и astro-dnssd.

Где лучше всего использовать Rust и где ему не хватает в вашем стеке?

Я бы сказал, что он отлично подходит для того, для чего мы его используем, - для основной библиотеки наших приложений. Мы определенно считаем, что знакомство с графическим интерфейсом в Rust немного грубо.

Есть несколько вариантов, которые мы использовали для графических интерфейсов Windows, но наши основные приложения остаются собственными графическими интерфейсами с Rust FFI для доступа к нашей библиотеке. FFI определенно не так идеален, как нам хотелось бы, поскольку возможность оставаться в чистом Rust намного приятнее и безопаснее.

Что было самым большим вызовом при разработке вашего проекта с помощью Rust?

Соединение частей нашей кодовой базы Rust с FFI было одной из самых больших проблем. Это, несомненно, напоминание о том, что мы получаем в Rust, и его сложно адаптировать к C API.

Довольны результатом?

Наш Rust C FFI API для наших интерфейсов, отличных от Rust, неплох, но мы предпочли бы сохранить максимальное количество кода на Rust. В настоящее время у нас не было графических интерфейсов на основе Rust, за исключением некоторых ограниченных инструментов.

Какие важные выводы вы хотели бы поделиться с нашей аудиторией?

Определенно постарайтесь сделать свой Rust FFI как можно более простым, так как это риск для безопасности и часто проблема API. Существует множество многообещающих инструментов и библиотек, которые могут помочь улучшить и снизить риски FFI. Всегда больше, чтобы исследовать и учиться! Какие планы на будущее у Astropad?

Наша следующая большая задача - получить Astropad Studio, наше ориентированное на художников решение, выпущенное для Windows. Это будет здорово для различных художников, использующих Windows и желающих использовать iPad + Apple Pencil со своим различным программным обеспечением для творчества.

Я хотел бы поблагодарить Джереми за интервью и пожелать Astropad удачи в создании их удивительных продуктов для художников.

Если вы хотите прочитать больше статей о Rust, не забудьте подписаться на нас в Twitter, Medium и DEV.