Scala Digest. Выпуск 7

67dcf0b4d62496a6dacd0f4566cee469.png

Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.

Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕)づ

Релизы

Собрали последние обновления популярных и полезных библиотек за пару месяцев:

Tinkoff Scala Meetup & open source

Рубрика для митапов и релизов библиотек и фреймворков, рожденных в недрах Scala-комьюнити Тинькофф.

5 августа в Казани состоится Тинькофф ИТ-фест. В программе — доклады по направлениям QA, Java, Mobile и Scala, а также обсуждения, дискуссии и различные развлечения-активности. Например, наш ведущий разработчик Иван Лягаев расскажет, что такое Project Loom и какие проблемы он решает, а какие — нет. Чтобы принять участие, достаточно пожертвовать в указанный благотворительный фонд любую сумму свыше 1000 ₽.

Статьи

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

  • What is blocking in Loom? Шикарное исследование от Adam Warski, проливающее свет на то, до какой степени Project Loom готов вести нас в мир неблокирующих операций. Здесь же небольшой обзор принципа работы Loom, а также I/O в операционных системах.

  • SIP — Coroutines — неприличного размера SIP о внедрении Kotlin-like корутина в Scala. Стоит ознакомиться как минимум для осознания вектора развития современной Scala в контексте конкурентного программирования. Здесь же упомянуты и Project Loom, и IO-монады, и недавняя экспериментальная разработка от softwaremill, и новейшее исследование от EPFL во главе с самим Martin Odersky.

  • Chatbot Showdown: LLMs to write Scala applications with Typelevel stack. VirtusLab снова устраивает соревнование между нейронными сетями. В этот раз определяют лучшего разработчика REST-сервисов. Как сказал один наш коллега, «раньше три часа писали код и час его дебажили. Теперь код мгновенно генерирует нейронка, зато приходится дебажить его половину рабочего дня».

  • gRPC vs REST — сравнение REST- и gRPC-подходов к построению API. Сравниваются разные аспекты, начиная с версии используемого HTTP-протокола и заканчивая тулингом для тестирования.

  • Data serialization tools comparison: Avro vs Protobuf.  Это могла бы быть хорошая статья, если бы автор провел более фундаментальное исследование. Не хватило разнообразия параметров прогонов и используемых стеков.

  • An intro to Flow Fields in Scala. Chris Kipp рассказывает, как он реализовал код для генерации красивейших артов по мотивам статьи Tyler Hobbs. «Код — это палитра, а программист — художник, создающий шедевры из нулей и единиц». ChatGPT ╰(͡° ͜ʖ ͡°)つ──☆*:*: ・゚»☆

e808c550a2a3dbafa1805a47eae3a918.png

  • 6 Common Misconceptions Around Akka-HTTP / Pekko-HTTP — развеивание мифов об akka-http, которые ходят в Scala-коммьюнити. Или как сказать «нормально делай — нормально будет» шестью разными способами.

  • How to implement streaming microservices with ZIO 2 and Kafka — ныряем в мир экосистемы ZIO 2. Пошаговый, с подробными объяснениями туториал по тому, как написать тестовый проект с Apache Kafka и ZStream. Уберите детей от экранов: используется Bleep (см. рубрику Tooling из предыдущего выпуска).

  • Interesting patterns to consume ZIO Streams.  Автор не только потрогал за разные места ZStream и ZSink, но и оставил наглядные картинки, как именно он это делал.

  • No More Orphans in Practice — пробуем на практике подход из оригинальной статьи 7mind, а именно: как предотвратить dependency-hell у пользователей еще на этапе проектирования библиотеки.

  • How to write a (completely lock-free) concurrent LRU Cache with ZIO STM — на примере небольшой структуры данных изучаем ZIO Ref. Ищем его недостатки и решаем их с помощью ZIO STM.

  • Introduction to optics in Scala — не пристально (только Lens, без Prism) разглядываем Monocle.

  • Comprehensive Data Validation in Scala — и снова валидируем значения, навешивая ограничения на типы. На этот раз скрещиваем Validated с NonEmptyList.

  • Get Productive with Akka Streams — основы akka-streams с кратким введением в элементы экосистемы Akka: интеграция с акторами и alpakka-коннекторы.

  • Go-like channels in Scala: receive, send, and default clauses — продолжение статьи про Channel из основывающейся на Loom экспериментальной библиотеки для structured concurrency ox.

  • ZooKeeper-less Kafka — статья не о Scala, однако от этого не менее интересная! Softwaremill приоткрывают ширму того, зачем кластер Zookeeper был необходим в Kafka и как новые релизы функционируют без него.

  • What Is An Effect In Functional Programming.

    d880e560f729517c0452b2f78c62c949.png

Статьи по Scala 3

  • Scala 3 Macros: How to Read Annotations — небольшое и приятное погружение в API макросов и аннотаций в Scala 3. Учимся читать статические аннотации в теле макросов.

  • How to mine Scala 3 compiler metadata using TASTy files. Заголовок звучит довольно абстрактно. Сама же статья представляет собой ряд скриптов, в которых происходит получение названий артефактов, скачивание их содержимого через coursier, извлечение TAST файлов и их декомпиляция в source code Scala 3. Такие дела.

  • Signature polymorphic methods in Scala. Никогда не слышали про signature polymorphism? А он есть! Seth Tisue рассказывает о том, что это такое, какая была имплементация в Scala 2 и как переиначили реализацию в Scala 3.

Видео и доклады

Собрали ссылки как на уже известные и популярные, так и на ноунейм-каналы и видео про Scala:

  • YouTube Ziverge. На канале вышло несколько видео, среди них заключительный доклад с ZIO World от John De Goes об эволюции runtime. Однозначно рекомендуем к ознакомлению! Кроме того, Zymposium продолжает радовать новыми выпусками, в этот раз сфокусированными именно вокруг разрастающейся экосистемы ZIO.

  • Why I keep choosing ZIO! Как похорошел процесс обучения джунов при Scala 3 и ZIO 2.

  • What makes library docs great. Library review: Iron — призыв писать понятные документации к своим open-source-библиотекам. Разбор правильных решений и ошибок на примере iron.

  • Breaking framework chains with vanilla Scala.

Highlights

В этом блоке не всегда свежие, но зацепившие наш взгляд ресурсы под флагом «очумелые ручки». Авторы творят что-то интересное, необычное, но не обязательно полезное:

  • A Macro Almanac. Kit Langton держит обещание и продолжает писать свой путеводитель в мир макросов Scala 3. Можно подписаться на email-рассылку с новыми главами.

  • Healthful — небольшая библиотека, которая на отдельном HTTP-сервере запускает liveness/readiness-пробы для Kubernetes. Зависит только от core-модуля sttp.

Tooling

Кусочек дайджеста, где мы рассказываем о появлении новых и улучшении уже существующих инструментов для разработки:

Комьюнити-движ

Раздел курьезных и любопытных событий из мира Scala-общества, и мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения, ждем вас в комментариях:

Предыдущие выпуски:

До встречи через месяц! ♡\( ̄▽ ̄)/♡

Над дайджестом работали , , . Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>

© Habrahabr.ru