На прошлой неделе посетил конференцию RustCon.
Язык Rust для меня - хобби. Мне нравится новизна заложенных концепций (ownership, borrowing). Местами он похож на Ruby (еще больше на C, который я учил студентом).
💡Внутри популярных Ruby-библиотек часто скрывается код, написанный на C. В основном это специфические гемы для решения определенных задач:
- эффективные структуры данных (murmurhash)
- профилировщики и дебаггеры (stack-prof, byebug, ruby/debug)
- cpu-bound задачи: парсинг, сериализация (pg_query, nokogiri, oj, json, puma (парсинг http1.1))
- шифрование и криптография (bcrypt, digest-crc, xxhash)
- функциональные биндинги к С-библиотекам (karafka-rdkafka, grpc)
- низкоуровневые библиотеки, базирующиеся на системных вызовах (semian)
- клиенты для бд (pg, mysql2)
😡С появлением Rust - некоторые низкоуровневые вещи начинают писать на нем. Я провел небольшое исследование зависимостей Ruby-монолитов в Купере. Итоги:
- ~450 зависимостей
- 34 - используют под капотом С
- 3 - используют Rust (prometheus-client-mmap, pact-ffi)
Дополнительно в Ruby-экосистеме есть:
- packs - аналог фреймворка модуляризации Packwerk
- artichoke - альтернативная MRI-совместимая имплементация Ruby
- поддержака создания ruby-гема с Rust-кодом (статья)
Пока не выглядит как тренд замещения внутренностей Ruby-гемов кодом на Rust, но лед тронулся!
На эту тему на конференции был классный доклад, о переводе cpu-bound задач c Python на Rust, где автору местами удалось достигнуть ускорения x3 (пока доступны только слайды).
Post #25
1.56K

- 🔥 15
- 👍 9
- 🤔 2