Dev-теги Dart 3.12 выходят быстро: как их читать (и что делать) как разработчику Flutter 3.x
Dev-теги Dart 3.12 появляются быстро. Вот как читать строку версии, зафиксировать dev SDK в CI и сортировать сбои, чтобы ваша миграция Flutter 3.x была маленьким PR, а не пожарной тревогой.
Лента релизов Dart SDK была необычно активна в последние 48 часов, с несколькими тегами Dart 3.12 dev, выходящими подряд (например 3.12.0-12.0.dev). Даже если вы выпускаете Flutter 3.x stable, эти теги важны, потому что они — ранний сигнал о грядущих изменениях в языке, анализаторе и VM.
Источник: Dart SDK 3.12.0-12.0.dev
Dev-тег — это не “релиз”, но это превью совместимости
Если вы на Flutter stable, не стоит произвольно обновлять тулчейн до dev SDK. Но dev-теги можно использовать стратегически:
- Поймать поломки анализатора рано: линты и ошибки анализатора всплывают до того, как станут вашей проблемой.
- Проверить инструменты сборки: генераторы кода, build runner и CI-скрипты часто падают первыми.
- Оценить стоимость миграции: если пакет, на который вы полагаетесь, хрупок, вы узнаете это сейчас, а не в день релиза.
Думайте о dev-тегах как о канале превью совместимости.
Как читать строку версии без догадок
Формат 3.12.0-12.0.dev выглядит странно, пока вы не воспринимаете его как: “3.12.0 prerelease, dev-сборка номер 12”. Вам не нужно выводить возможности из самого числа. Вы используете его, чтобы зафиксировать известный тулчейн при тестировании.
На практике:
- Выберите один dev-тег для краткоживущей ветки исследования.
- Зафиксируйте его явно, чтобы воспроизводить результаты.
- Запустите реалистичную нагрузку:
flutter test, релизную сборку и хотя бы один прогон build_runner, если вы используете codegen.
Фиксирование конкретного Dart SDK в CI (не ломая всем день)
Вот минимальный пример GitHub Actions, который настраивает зафиксированный SDK и запускает обычные проверки. Это намеренно отделено от вашей основной сборки, чтобы можно было трактовать сбои как “сигнал”, а не “остановите мир”.
name: dart-dev-signal
on:
schedule:
- cron: "0 6 * * *" # daily
workflow_dispatch:
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Pin a specific dev tag so failures are reproducible.
# Follow Dart SDK release assets/docs for the right install method for your runner.
- name: Install Dart SDK dev
run: |
echo "Pin Dart 3.12.0-12.0.dev here"
dart --version
- name: Analyze + test
run: |
dart pub get
dart analyze
dart test
Важное поведение — не сниппет инсталлятора, а политика: этот job — канарейка.
Что делать со сбоями
Когда dev-канал ломает вашу сборку, нужно, чтобы сбой отвечал на один вопрос: “это наш код или наши зависимости?”
Быстрый чеклист сортировки:
- Если ошибки анализатора изменились: проверьте новые линты или более строгую типизацию в вашем коде.
- Если build_runner падает: сначала зафиксируйте и обновите генераторы, затем перезапустите.
- Если падает зависимость: откройте issue апстриму с точным dev-тегом, а не “последний dev”.
Награда скучная, но настоящая: когда Flutter в конце концов подтянет более новый тулчейн Dart, ваша миграция будет маленьким PR, а не пожарной тревогой.
Ресурс: Dart SDK releases
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.