Эссе о разработке игр, мышлении и книгах

Минидрама: Python, C, Rust, криптография и Gentoo

Новость с деталями.

  1. Часть кода популярной Python криптобиблиотеки переписали на Rust.
  2. Сломалось CI у кучи людей.
  3. Дополнительно сломалось чегой-то в пакетном менеджере Gentoo.
  4. Изменения незаметили, так как… ну кто следит за криптолибами? Их просто ставят.
  5. Все думали, что cryptography следует semantic versioning, оказалось, что нет :-D

В итоге:

  • Разработчики сказали, что откатывать Rust взад не будут — это более кошерный язык для криптографии, чем C.
  • Gentoo оказалась не так уж и поломана — зависимость оказалась ненужной, но осадочек остался.
  • Люди с CI поплакали, но донастроили что надо было донастроить, и вернулись к своим делам.

Соль драмы в том, Gentoo поддерживает часть архитектур, которые не умеют в Rust. Одновременно Gentoo сильно зависит от Python. В этот раз пуля пролетела мимо, но возникли опасения, что Rust будет всё активнее использоваться к инфраструктуре Python. и в какой-то момент станет необходимой зависимостью. Что в этом случае случится с поддержкой минорных архитектур не ясно.

Разработчики cryptography, конечно, в своём праве.

Во-первых, это некоммерческий проект. Формальных обязательств они не имеют. Имеются неформальные обязательства, но тут разработчики сами вольны очерчивать их круг. Борьба между гонкой за технологиями и поддержкой старого была и будет всегда — каждый сам определяет баланс между этими направлениями.

Во-вторых, для чего ещё использовать Rust, если не для криптографии?

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

Наблюдая со стороны за движением вокруг Rust, я постепенно меняю мнение о нём.

Появляются интересные проекты на этом языке. Позднее, чем на том же Go, но это может быть объяснено сложностью предметной области.

Складывается впечатление, что Rust сильно переигрывает C/С++ (простите за слешик) по информационному шуму, и что важнее, по инфраструктуре. Начинающие программисты, вероятно, с большей охотой будут выбирать Rust для своих проектов, так как фактический порог входа в него может быть ниже (это гипотеза).

Если Rust выиграет «битву за умы», то замкнётся обратная связь: легче вход -> больше актуальных проектов —> лучше инфраструктура -> ещё легче вход. Это создаст эволюционное давление на нишевые платформы: хочешь пользоваться современными новыми либами — пиши на Rust.

Возможно, в ближайшие 5-10 лет мы сможем наблюдать быстрые эволюционные процессы среди системного софта и нишевых платформ в духе: «кто не адаптируется — тот вымрет».