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

Релизы

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

Статьи

Делимся свежими статьями, репозиториями и исследованиями, которые показались нам интересными. В отдельный блок вынесли ресурсы, где авторы используют 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 ??. Счастливый Eugene Yokota рассказывает, как теперь в Github Actions можно — раз-раз — и сбилдить себе Native Image при помощи GraalVM под любую поддерживаемую OS.

  • Improving my Distributed System with Scala 3: Consistency Guarantees & Background Tasks (Part 2). Christian Hollinger написал вторую часть серии постов о том, как запилить собственную распределенную worker-leader-систему. В статье собраны сведения о том, какие изменения Четвертый мост, Каладин и спрены пережили со времен первой части. Написано человеческим языком с рефлексией о собственных действиях, красивыми диаграммками и мемами.

А сюда мы спрятали еще немного интересных статей:

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

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

  • Ziverge Youtube. Подоспели записи вкусных докладов с Functional Scala 2023.

  • ScalaIO FR — доклады с недавней конференции. Часть докладов на французском, но среди англоязычных спикеров мелькают знакомые в scala-коммьюнити имена.

  • Если IDEA не работает, можно ли писать на Kotlin в Vim? В scala-мире настолько штиль, что ребята обсуждали только Rust, Kotlin и многострадальные IDE.

  • Let’s build Snake! Dave Smith помимо статьи по Elm Architecture успел за март выпустить еще и видео о том, как с помощью Indigo написать свою змейку с функциональным подходом и яблочками.

  • Free Scala FP course. «It took me around 2,5 years to produced this course including 9 months full time». Хорошие открытые курсы по введению в Scala можно пересчитать по пальцам одной руки, так что всегда приятно увидеть пополнение.

  • Project Leyden: Capturing Lightning in a Bottle. О проекте Leyden, ускоряющем время прогрева JVM-программ. Очень понравилась картинка.

Яндекс Вертикали организовали митап по Scala в Москве, за что им большое спасибо!

А сюда мы спрятали еще интересные видео и подкаст:

Tooling

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

  • Secret — библиотека с реализацией переменных с lifetime для различных секретов во избежание утечки информации.

И еще парочка любопытных ресурсов:

Highligts

  • Byte Pack — совсем небольшая либа для сериализации-десериализации case class в IArray[Byte]. Буквально 150 строк пользы.

  • Jar Jar Abrams — плагин sbt, который облегчает жизнь библиотекописарям и позволяет скрывать транзитивные зависимости путем их переупаковки и включения как части текущей библиотеки. Сам же Eugene Yokota рекомендует использовать с осторожностью.

Еще парочка интересных хайлайтов:

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

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

  • Scala 3 Roadmap for 2024. Зацените Roadmap для Scala 3. Приятно видеть фокус на стабильность, тулинг и UX.

  • New SIP: Improve the Syntax of Context Bounds and Givens. Нашумевшее предложение по улучшению синтаксиса работы с typeclass от самого Martin Odersky теперь демократически оформлено в виде SIP.

  • Zainab Ali joins the Advisory Board of the Scala Center as Community Representative. Консультативный совет Scala Center приветствует нового вождя Дренора представителя коммьюнити Zainab Ali. Помимо продвижения Scala в массы, описанного в посте, беглый поиск в YouTube выдал несколько докладов по Recursion Schemes и участие в конференциях по Haskel.

  • The Functional Programming in Scala Course Is Out! Jetbrains добавили курс по Scala. В статье есть подробная инструкция, как получить доступ из Intellij IDEA. Крутая тема для новичков — курсы, интегрированные в среду разработки.

  • Beware of fake online Scala courses. Можем ли мы считать, что если появились мошенники с фейковым курсами и обещанием трудоустройства, то это свидетельство некой зрелости языка? (。•̀ᴗ-)✧

  • СУБД Redis переходит на проприетарную лицензию. Не только Akka может в подобные новости.

Если что-то пропустили или у вас есть предложения — ждем вас в комментариях.

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

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

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