
Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем новости и собственные комментарии. Свою мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Релизы
Собрали последние обновления популярных и полезных библиотек за пару месяцев:
scala-cli v1.2.0 — активно пилят фичи и поддерживают новые версии Scala;
slick v3.5.0 — через полтора года после последнего стабильного релиза выпустили новую версию с поддержкой Scala 3;
tree-sitter-scala 0.21.0 — «ни фига себе Василий обошел Йокоту по контрибутам»© Карина;
dotty v3.3.3 и v3.4.1 RC2;
scala v2.13.13 и v2.12.19;
sttp v3.9.5 и v4.0.0-M11;
tapir v1.10.0;
cats-effect v3.5.4;
fs2 v3.10.0;
kittens v3.3.0;
Intellij IDEA 2023.3.6 и 2024.1-beta;
sbt-assembly v2.2.0;
zio-http v3.0.0-RC5;
zio-kafka v2.7.4;
iron v2.5.0;
izumi v1.2.7.
Статьи
Делимся свежими статьями, репозиториями и исследованиями, которые показались нам интересными. В отдельный блок вынесли ресурсы, где авторы используют Scala 3. Enjoy:
Crossing those hills и A false end. Не зря Mark Hammons в конце каждой своей статьи оставляет фразу «Happy Scala hacking!», ибо некоторые этюды из его постов заставляют удивленно хлопать глазами. Эти части — продолжение приключений о поиске красивого выражения платформозависимых типов на Scala 3. Наивные подходы с типами-объединениями и path-dependent-типами к успеху не привели.
Benchmarking Tapir: Part 2. Продолжение исследования оверхеда, который приносит tapir для различных серверных бэкендов. Завезли анализ затрачиваемых CPU и RAM и флеймграфы. По найденным потенциальным узким местам завели ряд задачек на GitHub, большая часть из которых уже закрыта. Наше уважение за такой конструктивный подход!
SSE vs WebSockets: Comparing Real-Time Communication Protocols. Хорошая статья с обзором технологий Server Side Events и Websocket. Наверное, ветераны клиент-серверных архитектур ничего нового не найдут. Но если не доводилось работать с подобными решениями, это отличный шанс поверхностно посмотреть, как все устроено.
Зачем в Scala трамплины и как их использовать. «Вошли и вышли, приключение на 20 минут». О том, что такое trampolining, как написать свой аналог Eval и зачем все это нужно. Отдельно стоит глянуть комментарий в обсуждении от Seigert: там есть некоторый ответ на вопрос «Почему все так?».
Scala 3.3.2 post-mortem analysis. Разбор postmortem из компилятора Dotty с нарушением обратной совместимости, которое произошло из-за отсутствия тестов.
Deriving the Elm Architecture. Автор Tyrian и Indigo о том, как с помощью простых логических переходов и ряда первоначальных хотелок при проектировании GUI прийти к тому, что называется Elm Architecture.
Flavors of shared state in Cats Effect. Солидненькая статья с введением в Shared States. Начинается с простых изоляций на уровне Ref, а заканчивается более продвинутым реальным примером использования с Middleware и IOLocal.
Jox 0.1: virtual-thread friendly channels for Java. Первый релиз библиотеки для go-like-каналов на виртуальных тредах для Java. Да, это Java-библиотека. API, предоставляемый в Jox, используется уже для реализации scala-библиотеки ox, про которую есть целая серия статей Adam Warski.
Имплиситы и тайпклассы в Scala. Приятное для чтения, хорошо структурированное введение в implicit и паттерн typeclass. Код на Scala 2, впрочем, как и наши с вами проекты ┐(︶▽︶)┌
The holy graal of GitHub Actions. Совсем недавно в Github Actions добавили поддержку Brand New M1 MacOS runner
