Scala Digest. Выпуск 7
Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на 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 ╰(͡° ͜ʖ ͡°)つ──☆*:*: ・゚»☆
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.
Статьи по 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-общества, и мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения, ждем вас в комментариях:
Предыдущие выпуски:
До встречи через месяц! ♡\( ̄▽ ̄)/♡