Минидрама: Python, C, Rust, криптография и Gentoo
- Часть кода популярной Python криптобиблиотеки переписали на Rust.
- Сломалось CI у кучи людей.
- Дополнительно сломалось чегой-то в пакетном менеджере Gentoo.
- Изменения незаметили, так как… ну кто следит за криптолибами? Их просто ставят.
- Все думали, что 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 лет мы сможем наблюдать быстрые эволюционные процессы среди системного софта и нишевых платформ в духе: «кто не адаптируется — тот вымрет».