Рубріки: Новости

Спустя 8 лет и 28 000 коммитов вышла новая версия языка программирования Scala: что в ней нового

Богдан Мирченко

После 8 лет работы, 28 000 коммитов, 7 400 пулл-реквестов и 4 100 закрытых вопросов вышла новая версия мультипарадигмального языка программирования Scala 3. В проект внесли свой вклад более 100 человек. Сборка включает в себя последние исследования в области теории типов и отраслевой опыт предыдущей версии, а основным изменением и объектом для изучения по сравнению со Scala 2 стали макросы. 

С чего начать

Чтобы узнать об особенностях новой сборки и миграции с предыдущей версии, разработчики Scala советуют:

Что нового

Синтаксис

  • Новый синтаксис управления для структур if, while и for;
  • Ключевое слово new теперь необязательно;
  • Опциональные скобы, которые поддерживают стиль программирования без отвлекающих факторов и с учетом отступов;
  • Переработаны имплициты и их синтаксис.

 Контекстные абстракции 

Раньше функция имплицитов использовалась для моделирования контекстной абстракции, для выражения вычислений на уровне типов, моделирования классов типов, выполнения неявных приведений, кодирования методов расширения. В Scala 3 вместо одной мощной функции используется несколько специализированных языковых. Они помогают разработчикам напрямую показывать то, что они хотят сделать. Среди таких функций: 

  • Абстрагирование из контекстной информации. По сравнению с имплицитами Scala 2, using-предложения Scala 3 можно указывать по типу, освобождая сигнатуры функций от имен переменных терминов, которые никогда не упоминаются явно;
  • Предоставление экземпляров Type-class. Они позволяют разработчикам определять каноническое значения определенного типа. Это упрощает программирование помощью type-class без утечки деталей реализации;
  • Ретроактивно расширяемые классы. В Scala 2 методы расширения нужно было кодировать с помощью неявных преобразований или неявных классов. В новой версии метод расширения встроены в язык, что приводит к улучшению сообщений об ошибках и улучшенному выводу типов;
  • Рассмотрение одного типа как другого. Неявные преобразования были переработаны с нуля как экземпляры type-class conversion

Улучшенная система ввода

Система типов Scala 3 оснащена множеством новых функций и предоставляет мощные инструменты для статического выражения инвариантов в типах. Вот некоторые из них: 

  • Перечисления. Были переработаны, чтобы хорошо сочетать с case-классами и сформировать новый стандарт для выражения алгебраических типов данных;
  • Зависимые типы функций. В Scala 2 типы возвращенных данных могут зависеть от аргументов (значений). В новой сборке можно абстрагироваться от этого паттерна и выражать типы зависимых функций;
  • Лямбда-выражения. То, что в Scala 2 нужно было выражать с помощью подключаемого модуля, в Scala 3 является первоклассной функцией. Лямбда-выражения — это функции уровня типа, которые можно передавать как аргументы типа (более высокого порядка), не требуя определения вспомогательного типа;
  • Match-типы. Вместо кодирования вычислений на уровне типов с использованием неявного разрешения, в Scala 3 есть прямая поддержка сопоставления типов. Интеграция вычислений на уровне типов в средство проверки типов позволяет улучшить сообщения об ошибках и устраняет необходимость в сложных кодировках.

Метапрограммирование

Scala 3 поставляется с множеством инструментов для метапрограммирования. Более подробная информация по макросам содержится в специальной документации. Вот некоторые возможности для метапрограммирования в Scala 3: 

  • В качество базовой точки встроенная функция позволяет сокращать значения и методы во время компиляции;
  • Пакет scala.compiletime содержит дополнительные функции, которые можно использовать для реализации встроенных методов;
  • В Scala 3 появилась функция квазицитирования кода, которая предоставляет удобный высокоуровневый интерфейс для создания и анализа кода.

 После выпуска стабильной версии, команда Scala планирует выпускать обновления каждые шесть недель. Патчи будут содержать исправления ошибок, влияющих на соответствующую дополнительную версию. Также в следующих версиях появятся новые языковые функции и стандартные библиотечные API.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023