Scala-дайджест (15 июня – 02 июля)

Эта статья является частью большого Java-дайджеста за 2 июля 2018 года.

Главное

Build Server Protocols

Анонсирована версия BSP 1.0, а это значит, что с каждым днем мы все ближе к светлому будущему с одинаково удобными инструментами для разработки на Scala в любом редакторе или IDE, какие душе угодно. Уже сделан рабочий вариант интеграции Bloop и IntelliJ IDEA. В статье можно найти ссылки на руководство по установке nightly-версии на IDEA, где можно опробовать впечатляюще быстрый импорт проекта.

 

Scalac options

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

SIP Meeting June 2018

Прошел июньский онлайн-митинг по обсуждению SIP. Сначала быстро и единогласно был принят By Name implicit parameters от Майлза Сабина https://docs.scala-lang.org/sips/byname-implicits.html, после чего обсуждение перешло на тему будущего Scala 3. Видео рекомендуется к просмотру, если вас волнует судьба фич, прекратить поддержку которых уже давно собирались в Dotty (xml literals, early initializers, delayedInit), и новых типов (union, implicit function).

Данные митинги проходят онлайн, и в будущем ссылку на транcляцию можно поймать в официальном Twitter @scala_lang.

Scaladays New York 2017

Видео и слайды уже в открытом доступе!

Релизы

  • Akka.js Случайно на просторах Twitter был замечен интересный проект Akka.js — порт Akka на scala.js. В README можно найти демку и ссылки на выступления автора. В выступлении на прошлогоднем Scala Days есть пример c DomActor, где в комбинации со Scala tags появляется ещё один способ делать списки задач, но теперь уже в акторной модели.
  • STTP -1.2.0-RC1 HTTP-клиент для Scala, о котором кое-то давно мечтал, дожил до версии 1.2.0 — теперь с поддержкой Scala.js !
  • Вышла RDBC — высокоуровневая библиотека для асинхронной работы с базами данных на Scala и Java. Из вкусностей заявлена реализация настоящего асинхронного драйвера для PostgreSQL.
  • Circe-magnolia Владимир Павкин опубликовал свой альтернативный вариант вывода JSON codec для Circe, который, в отличие от оригинального, базируется не на Shapeless, а на модной и молодой библиотеке от John Pretty, Magnolia. Данный вариант вывода позволяет пользователю видеть вменяемые ошибки, указывает на конкретный класс, для которого не получилось вывести кодек и причину. В Shapeless же такие простые радости недоступны, и у пользователей нет других вариантов, кроме как итеративно проверять, для какого поля класса не получается вывести кодек.
  • Reminder Если вы из тех, кто переживает за навечно оставленные //TODO метки в исходниках, этот плагин к компилятору позволит ограничить время на их исправления. С помощью аннотации можно указать крайнюю дату, после который проект перестанет компилироваться. Также возможно использование в качестве передачи привета будущим поколениям.
  • Scala FP Speedrun — третья серия Краткое описание: Сats.Eval. Модели вычислений. Стэкобезопасность. Первая встреча с Foldable.

Статьи и блоги

  • Are there exceptions in Scala? Некий Árpád Tamási провел интересное исследование на тему сравнения качества кода в зависимости от языка (Scala/Java/Kotlin). В качестве меры измерения был введен параметр WTF/kStarts, где WTF — это количество найденный опубликованных стектрейсов в сети, где фигурирет конкретная библиотека, а kStarts — сколько тысяч звезд у нее на гитхабе. Статья очень короткая, так что, если хотите узнать результаты, не поленитесь самостоятельно с ней ознакомиться.
  • Reflections on using Typelevel Scala Typelevel Scala — это альтернативный компилятор Scala. У него есть небольшие отличия, но, в общем, на нем обкатываются всякие экспериментальные фичи перед тем, как их притащить в основной компилятор Scala 2. Несмотря на это есть такие люди, кто использует его в реальных проектах. Спасибо Mateusz Kubuszok, который поделился своим опытом использования Typelevel Scala!
  • Compiling Scala Faster with GraalVM Горячая тема — насколько быстрее будет компилироваться Scala, если бы компилятор был нативным?
  • Akka HTTP RESTful APIs Книга для вкатывания в экосистему Scala, через написание REST сервиса для книжного магазина. Akka, Flyway, JWT, Scalatags, TDD — в проекте используется все необходимое для покорения энтерпрайз-разработки.
  • Akka vs ZIO vs Monix, part 2: communication Продолжение сравнения на примере написания простого парсера для веба.
  • A simple way to write parsers: using the State monad Продолжая тему парсеров, предлагаем ознакомится с написанием парсера для простого тестового файла с использованием state monad.
  • Typedapi or how to derive your clients and servers from types Библиотека для описания REST на базе типов, вдохновленная Servant из Haskell. Помимо чистоты описания позволяет выводить реализацию клиента — такой чисто функциональный Swagger.

Дайджест готовили

  • Редакция JUG.ru Group:
    • Олег Чирухин – контент, верстка, проверка фактов
      (почта для связи: oleg@jugru.org, Telegram: @olegchir);
  •  Эксперты:
    • Вадим Челышов из подкаста Scalalaz
      (почта для связи: qtankle@gmail.com, Telegram: @dos65);
    • Александр Карпов — вольнонаемный рабочий из лучшей в мире компании SEMrush;