Насколько беспрепятственной будет интеграция dotty / scala3 с такими технологиями, как scala -native и scala - js? - PullRequest
1 голос
/ 05 апреля 2020

Есть ли какие-то ограничения, о которых мы должны знать? Потребуется ли нам использовать некоторые подобные скаляфику инструменты? или это будет работать из коробки?

1 Ответ

4 голосов
/ 05 апреля 2020

Миграция с 2.13 на 3.0 в целом:

  • Дотти использует коллекции 2.13, поэтому не нужно ничего менять здесь - фактически 2.13 будет настолько близок к 3.0, что сопровождающие решили пропустить 2.14 релиз, который должен был послужить трамплином
  • макросы, нужно будет переписать - это самая большая проблема, но у организаторов библиотеки есть время для этого, а некоторые переписывают вещи даже сейчас (см. quill )
  • будет мало устаревших, например, пропадет синтаксис forSome для экзистенциальных типов (см .: Возможности удаления в документации )
  • библиотеки могут нужно расширять себя для поддержки новых вещей (объединение / пересечение / непрозрачные типы), но до тех пор, пока вы не начнете использовать новые вещи в вашем коде, все будет работать, как раньше
  • , за исключением того, что старый Scala код должен работать без каких-либо изменений

Scalafix используется на prod даже сейчас, например, Scala Steward может применять миграции при обновлении библиотек. в новую версию.

Scala. js уже поддерживается как бэкэнд Dotty рядом с JVM one.

Недавно Scala Центр занял Scala -native, поэтому следует ожидать, что Scala -распространенная разработка ускорится (она была немного застопорилась), и в конечном итоге она должна появиться в качестве другого поддерживаемого бэкэнда. Я не могу сказать, удастся ли им доставить до выхода Дотти, но я сомневаюсь в этом. На данный момент Scala -native сначала должен получить поддержку 2.12 и / или 2.13. Проследите эту проблему , если вы хотите узнать или спросить о Gitter.

Короче говоря: вам нужно подождать библиотек, которые вы используете, чтобы портировать на Dotty, а затем обновить ваши макросы, если вы написал любой, кроме того, что миграция должна быть довольно простой для JVM и JS backends. Scala native, вероятно, займет больше времени.

...