Применимость Rust к реальным приложениям с графами объектов

Интересно, какой опыт были у крупных проектов с Rust, особенно w.r.t. управление графом объектов, его безопасность и производительность по сравнению с управляемыми языками и небезопасными языками, такими как C ++.

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

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

Официальный Руст Часто задаваемые вопросы рекомендует использовать Rc<RefCell<T>> или арена / плита в качестве косвенного слоя. Оба из которых не соответствуют обещанию нулевой стоимости:

  1. Объединяя Rc<> а также RefCell<> ввести две операции записи в оперативную память для доступа к объекту, одну для получения ссылки, а другую для освобождения ссылки. Это вполне может привести к накладным расходам GC на управляемых языках и, возможно, больше из-за интенсивной записи этих оболочек, возможно, делает недействительными кэши ЦП и генерирует избыточный трафик шины.
  2. Использование массивов / арен / слябов для ссылки на объекты является сложным делом с точки зрения очистки кеша (разыменование ключей объекта) и проверки во время выполнения (проверка того, есть ли объект, который мы хотим и что он не мертв).
  3. Если вы используете unsafe{} Повсюду с блоками, вам, вероятно, лучше использовать небезопасный C ++, не прибегая к заимствованиям и времени жизни.

РЕДАКТИРОВАТЬ:
Перефразируя как более конкретный вопрос: кому-нибудь удалось построить граф объектов в Rust и быть довольным результатами, с точки зрения производительности и безопасности? Если это так, как мои оговорки могут быть решены выше?

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]