Uncategorized

Scala 3 пересмотрел язык для улучшения взаимодействия с разработчиками

За восемь лет разработки, 28 000 коммитов, 7400 запросов на вытягивание и 4100 закрытых проблем, был выпущен Scala 3.0, обеспечивающий «полный пересмотр языка Scala» с новыми функциями, обновлениями синтаксиса и систем типов, а также новыми инструментами для метапрограммирование. Справочник по совместимости со Scala объявляет версию 3 “переломным моментом”. […] это значительно улучшит повседневный опыт каждого программиста Scala ». Scala 3 имеет бинарную обратную совместимость со Scala 2.13, но не полностью совместим с исходным кодом. Новый компилятор Dotty может автоматически переносить старый код и сообщать о любых оставшихся проблемах.

Scala 3.0 стал более лаконичным благодаря новому синтаксису. В new ключевое слово теперь является необязательным (аналогично тому, как Google представил эту функцию в Dart 2.0), как и круглые скобки в выражениях управляющих структур. Некоторые вхождения фигурных скобок могут быть заменены отступом исходного кода, хорошо известной особенностью Python.

Новые языковые функции позволяют разработчикам напрямую выражать свои намерения с помощью самоуверенных контекстных абстракций: using статьи и given экземпляры упрощают параметры контекста, методы расширения – первоклассные граждане языка, и implicit преобразования теперь строятся как экземпляры scala.Conversion класс.

Система типов была улучшена такими функциями, как упрощенные перечисления; opaque типы, скрывающие детали реализации; типы пересечения и объединения для обеспечения синтаксиса, например A & B а также A | B, соответственно; новые типы зависимых функций, результат которых зависит от параметров функции; и встроенные лямбда-выражения типов, которые когда-то требовали плагина компилятора в Scala 2.

Синтаксис перечисления в Scala 2 был подробным. Рассмотрим следующий пример:

sealed trait Direction 
case object East extends Direction
case object West extends Direction

Scala 3 вводит более лаконичный синтаксис:

enum Direction:
   case: East, West

Функциональное программирование было упрощено с переработкой контекстных абстракций и изменениями системы типов. Объектно-ориентированная разработка также была улучшена за счет новых функций, таких как: traits принимает параметры и объявляется как transparent; ан open модификатор, который явно отмечает классы как открытые для расширения; и в духе поощрения принципа шаблонов проектирования Decorator, предпочитать композицию наследованию, путем предоставления export предложения, которые определяют псевдонимы для выбранных членов объекта.

Макросы, впервые представленные в Scala 2.10, были экспериментальной функцией. Scala 3 представляет набор инструментов метапрограммирования, включающий в себя: методы встраивания для повышения производительности приложений; операции времени компиляции, которые можно использовать со встроенными методами; цитируемые блоки кода для построения и анализа кода; и API отражения, чтобы обеспечить представление типизированных абстрактных синтаксических деревьев, включая файлы TASTy. Макросы Scala 3, разработанные для обеспечения стабильности, будут совместимы с будущими версиями Scala. Однако с этой новой моделью метапрограммирования макросы Scala 2.13 потребуют переписывания. Кроме того, многие Scala 2 scaladoc настройки были изменены для стандартизации параметров в Scala 3.

Новые параметры компилятора, такие как: -Xignore-scala2-macros игнорирует ошибки компилятора с кодом, вызывающим макросы Scala 2; -print-tasty распечатает сырые файлы TASTy; а также -no-indent будут применять классический синтаксис, это лишь некоторые из множества новых возможностей компиляции кода. В руководстве по миграции подробно описан переход на Scala 3 и содержится руководство по переносу полного проекта Scala 2.13 на Scala 3.

Приложение Scala 3.0 может по-прежнему использовать библиотеку Scala 2.13 даже с макросами – если нерабочие макросы нарушают работу библиотеки. Верно и обратное: приложение Scala 2.13 может использовать библиотеку Scala 3.0. Индекс библиотек Scala, также известный как Scaladex, перечисляет библиотеки, готовые для Scala 3.0.

Однако за эти изменения приходится платить, поскольку некоторый исходный код Scala 2.13 несовместим со Scala 3.0. К счастью, новый компилятор включает режим миграции, который может автоматически переносить код Scala 2 в Scala 3 и сообщать обо всех оставшихся проблемах, требующих исправления вручную.

Более подробную информацию о Scala 3 можно найти в разделе «Что нового» на веб-сайте.

Самый простой способ начать работу со Scala 3.0 – это Scastie, онлайн-среда разработки Scala, где код может быть написан и выполнен непосредственно в браузере. В документации также показано, как запустить программу «Hello, world».

Спустя пять недель после выпуска документация и книга Scala 3.0 остаются неполными, и сообществу Scala предлагается внести свой вклад.

Новые выпуски Scala ожидаются каждые шесть недель после выпуска 3.0. Разработчики могут ожидать следующего релиза в конце июня 2021 года.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button