Эта статья является частью большого 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);
- Олег Чирухин – контент, верстка, проверка фактов
- Эксперты: