Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.
Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Релизы
Собрали последние обновления популярных и полезных библиотек за пару месяцев:
pekko v1.0.1 — первый релиз форка akka;
slick v3.5.0.-M4 — пререлиз для Scala 3;
endless v0.24.0 — добавили pekko-рантайм;
indigo v0.15.0-RC3 — завезли базовый физический движок;
sttp v3.8.16, 4.0.0-M2 — в v3.8.16 подняли cats-effect, в котором изменена семантика Async. Beware!
izumi v1.1.0-M24, v1.1.0-M25 — завезли поддержку ZIO 2;
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 и как новые релизы функционируют без него.
Статьи по 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.
Highlights
В этом блоке не всегда свежие, но зацепившие наш взгляд ресурсы под флагом «очумелые ручки». Авторы творят что-то интересное, необычное, но не обязательно полезное:
A Macro Almanac. Kit Langton держит обещание и продолжает писать свой путеводитель в мир макросов Scala 3. Можно подписаться на email-рассылку с новыми главами.
Healthful — небольшая библиотека, которая на отдельном HTTP-сервере запускает liveness/readiness-пробы для Kubernetes. Зависит только от core-модуля sttp.
Tooling
Кусочек дайджеста, где мы рассказываем о появлении новых и улучшении уже существующих инструментов для разработки:
Metals v1.0.0 - Silver. Искали медь, а нашли silver. Первый мажорный релиз Metals. Если пишете на VSCode — возрадуйтесь, если не пишете — задумайтесь почему и выпейте кружку пива или чая за развитие тулинга в комьюнити Scala.
How to set up a Bazel testing configuration: The comprehensive guide for Scala and Java — дружелюбный к новичкам гайд по настройке среды для тестирования с помощью Bazel. Опытные пользователи найдут для себя несколько интересных фишечек.
automate refactoring with Bazel + Scalafix. Eugene Yokota — о том, как подружить bazel с semantic rules из scalafix. Никаких поверхностных обзоров — только хардкор, скрипты на bash- и bazel-макросы.
Best Continuous Integration Tools for 2023 ‒ Survey Results. Как еще раз напомнить всем, что у тебя есть такой продукт, как TeamCity.
Комьюнити-движ
Раздел курьезных и любопытных событий из мира Scala-общества, и мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения, ждем вас в комментариях:
gRPC benchmark results — бенчмарки gGRPC-библиотек из разных языков программирования. Порадуйтесь за scala-akka, начиная с 4 CPU, гордо красующейся на первом месте!
Simpla - replacing the concept of killer app driven adoption. Автор, возможно, приверженец фразы про хлеб и пирожные: предлагает во имя популяризации Scala выпилить из нее все сложное и непонятное.
Scala Center Roadmap for 2023 Q3 — заголовок говорит сам за себя.
Предыдущие выпуски:
До встречи через месяц! ♡\( ̄▽ ̄)/♡