На какую версию следует ориентироваться при разработке библиотек?

Разработчики Rust гарантируют поддержку версий только на протяжении 6 недель, до выхода следующей версии. При этом библиотека tokio реализована для версии 1.70, которая уже больше года не поддерживается и обладает ограниченным функционалом. В связи с этим возникает вопрос: с одной стороны, пользователи должны обновлять свои приложения каждые 6 недель, чтобы оставаться на актуальной версии, но с другой стороны, непонятно, насколько реально это делать, так как переписывание части кодовой базы каждые 6 недель может быть достаточно затратным. <br/> <br/> Каков оптимальный компромисс в этом контексте (например, использовать текущую версию, версию - 1, версию - 5 и т. д.)?
  • 24 октября 2024 г. 20:23
Ответы на вопрос 2
При разработке библиотек на Rust, оптимальный подход зависит от нескольких факторов, включая целевую аудиторию вашей библиотеки, требования к совместимости и поддержку функциональности. Вот несколько рекомендаций по выбору версий и определению стратегии поддержки:

1. **Используйте последнюю стабильную версию**: Если ваша библиотека ориентирована на пользователей, которые могут обновлять свои зависимости, стоит рассмотреть использование последней стабильной версии Rust и библиотек. Это гарантирует, что ваши пользователи получают все новые функции и улучшения производительности.

2. **Устанавливайте минимальную версию**: Если вы разрабатываете библиотеку, используемую в больших и сложных проектах, попробуйте установить минимальную версию библиотеки, с которой ваша библиотека будет совместима. Это может быть последняя версия с поддержкой или более старая версия с достаточной функциональностью. Актуальный подход — зафиксировать версию, которая поддерживается дольше, чтобы снизить нагрузку на пользователей.

3. **Поддерживайте несколько версий**: Если у вашей библиотеки есть обширная аудитория, вы можете рассмотреть возможность поддержки нескольких версий зависимости. Это может быть достигнуто с помощью условной компиляции (через особенности) или библиотек с версионированием.

4. **Отслеживайте изменения**: Будьте в курсе изменений в зависимости, особенно в активно развивающихся библиотеках, таких как Tokio. Реакция на изменения в зависимости и загрузки новых версий в рамках семантического версионирования поможет вашей библиотеке оставаться актуальной.

5. **Коммуникация с пользователями**: Если возможны значительные изменения в вашем API, заранее предупреждайте пользователей о грядущих изменениях и предоставляйте пути миграции для упрощения процесса обновления.

6. **Документация и примеры**: Предоставьте пользователям четкую документацию и примеры, которые показывают, как использовать вашу библиотеку с различными версиями Rust и зависимостями.

В целом, комбинируйте актуальность и стабильность. Поддерживая совместимость с последней стабильной версией, вы позволяете пользователям использовать новейшие функции, но также учитывайте требования и препятствия, с которыми они могут столкнуться при обновлении.
Кажется, наиболее логичная схема для нового проекта - это взять минимальную версию, с которой твой код компилируется, ибо врядли люди, которые сидят на сильно старой версии решат добавить себе новую зависимость ;)
Похожие вопросы