Привет, Хабр! Мы — Рома, Настя, Карина — приветствуем свежую кровь в нашей небольшой, но уютной команде! Эвелина присоединилась к нам месяц назад с горящими глазами и желанием нести Scala в программистский народ. Естественно, в качестве первого испытания Эвелина ходила с томиком Одерски по офисам ИТ-компаний и спрашивала: «Верите ли вы в функциональную парадигму?»

Мы рады видеть новых бойцов в наших рядах и уверены, что сможем делать дайджест еще лучше. А вы можете поделиться собственными материалами — мы опубликуем их и скажем вам спасибо в следующем выпуске ?

Релизы

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

  • akka 24.05 — 22 мая Akka выпустила новую версию с номером 24.05, упустив прекрасную возможность создать магию чисел  (╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻

Эвелина

Могли бы и два дня подождать 。゜゜(´O`) ゜゜。

Статьи

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

  • Safe direct-style Scala: Ox 0.1.0 released — поздравляем Adam-a Warski с первой готовой к использованию версией библиотеки Ox!.

  • IO effect tracking using Ox — на небесах только и разговоров что о IO и о новой библиотеке Adam-a Warski.

  • Integrating callbacks with structured concurrency in Scala — а вот и первые ласточки, летящие в сторону прекрасной Ox.

  • Tuning ZIO for high performance — статья от текущего мейнтейнера zio о том, как тюнить performance zio-приложения. Минимум воды, максимум полезных и малоизвестных трюков с фреймворком. Отдельно хочется заметить, что Pierre Ricadat знает, о чем пишет: не каждый раз De Goes оставляет под pull request-ом первым комментарием слова “Fantastic work!”.

  • Make Invalid States Unrepresentable — ставшая классической тема, как эксплуатировать систему типов для валидаций данных. От наиболее нетипизированного представления любых данных в виде String до newtype и refined.

  • How to build AI apps with Scala 3 and Besom — “The AI app itself is obviously a very limited PoC built to impress readers”. Проект, демонстрирующий, казалось бы, все извращенные способы использования Scala 3, в том числе и развертывание самого приложения в облаке, с помощью Besom. А если хотите больше подобного контента, предлагаем к изучению статью на blog.indoorvivants.com.

  • Spec-first and code-first, hand in hand — один из авторов экосистемы Smithy4s славно накодякал, да так, что вам не надо разрываться между подходами spec-first или code-first, а радостно быть извращенцем использовать оба одновременно.

  • Direct-style Effects Explained — хайповоз Scala продолжает движение по маршруту «Better Java — Лучший язык бэкенд-разработки». Следующая станция — «Алгебраические эффекты». Солидная статья о том, как Scala 3 продолжает развиваться в сторону еще большей типобезопасности и local reasoning.

  • Purify Your Tests и Purify Your Tests: 2 Parametric, 2 Declarative. 

«Делаем тесты чистыми функциями и избегаем мутабельных моков» (с) Эвелина
«Я увидела var и убежала с визгом» (с) Настя

  • On Modern Error Handling (Not Just in Java) — дедушка Java услышал что-то о модных этих ваших тиктоках монадах в интернетах и хочет себе такую же красоту: «хотя бы в jdk 50». Ну или хотя бы Try в ближайших релизах ∠( ᐛ 」∠)_ В общем, в статье вы найдете много мемов о хаскеле, внезапные комментарии на польском и многое другое.

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

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

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

  • Zymposium - How to Build an OSS Library that Provides Golden Testing — запись прямого эфира в рамках Zymposium, в котором можно было предложить идею новой ZIO-библиотеки и начать имплементировать ее в режиме лайф-кодинга вместе с отцом-основателем самим Джоном де Гузом ?В этот раз писали новый модуль для снэпшот-тестирования (aka Golden Testing).

  • Making ZIO-Kafka Safer And Faster — презентация об улучшениях zio-kafka от самого мейнтейнера. Из интересного — пофиксили дублирование сообщений при ребалансе, добавив механизм отложенного выполнения, который дожидается, пока все сообщения в очереди не будут обработаны. Подробности можно почитать в этом changelog-е. Мы уверены, что многие даже не знают об этой проблеме! Расскажите маме и коту!

  • flatmappers 019. Оригинальные подходы в сборке Scala проектов и Yтка-DB — ребята продолжают экспериментировать с опенингами (b ᵔ▽ᵔ)b. Обсудили скам в Scala-сообществе, поделились прелюбопытнейшим тредом на Reddit-е с вопросами-ответами от Scala-адвоката, а также затронули тему sbt remote caching, которая особенно актуальна в последнее время в связи с возвращением тренда на монолиты. Упомянули DuckDB как средство самого комфортного просмотра Parquet-файлов.

Подъезжают записи конференции SCALAR. Плейлист содержит больше десяти часов отборного контента, чтобы вы в полной мере ощутили мощь языка, которому исполнилось 20 лет! Каждое видео по-особенному прекрасно и заслуживает внимания. Наше внимание привлекла следующая пара:

  • Tomasz Godzik SCALA TOOLING ECOSYSTEM Scalar Conference 2024 — неполный, но и далеко не скромный список тулов, используемых в экосистеме Scala. С каждым тулом идет в комплекте сводка о том, насколько этот инструмент жив, какие функции хотят добавить и как помочь развитию проекта.

  • Alexandru Nedelcu ELEMENTS OF JVM CONCURRENCY Scalar Conference 2024 — Alexander Nedelcu снова засветил лицо в прямом эфире и рассказал про концепцию конкурентного кода. Доклад полезный, не громоздкий, слушается на одном дыхании.

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

Tooling

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

  • New package scala-repl in MELPA for Scala developers — расширение Emacs для интерактивной работы с sbt/mill/scala-cli-проектами, или как это корректно называется? Надеюсь, кто-то из трех с половиной пользователей Emacs нас читает и поправит в комментах!

Highlights

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

  • sbt Android plugin — плагин с функциональностью sbt для разработки приложений под платформу Android. Нам, конечно, пока ничего не понятно, но очень интересно.

Martin Odersky и адепты его учений из EPFL продолжают экспансию в сторону безэффектного стиля программирования в Scala 3. Библиотека gears для асинхронного кода с поддержкой мультиплатформенности добралась до стабильного релиза и обзавелась шикарной документацией Gears Book. Не все намеченные главы уже написаны, но даже так она сопоставима по объему с документацией всего языка (¬ ‿ ¬).


Как можно узнать из главы Basic Concepts, в основе всего лежит введенный концепт Async-контекста, передаваемого в функцию в качестве имплицитного аргумента. Приводит ли это к той самой проблеме «раскрашенных функций»? Ответ: и да, и нет. 

С одной стороны, действительно все методы теперь можно разделить на async-методы и обычные, с другой же — проблема сглаживается тем фактом, что это имплицитный контекст, эргономику работы с которыми активно дорабатывают в новых версиях Scala 3. Вспомнить хотя бы недавний холиварный SIP от Мартина. Более того, обещают бесшовную интеграцию Async-а с интерфейсами коллекций стандартной библиотеки!


Чтобы не выкидывать на помойку уже интегрированную в куче мест концепцию Future / Promise — завезли аналогичные интерфейсы gears.async.Future и gears.async.Future.Promise. А еще целую гору мощных абстракций, построенных поверх Async и Future/Promise.


Так и хочется увидеть сравнительный обзор ox и gears от их авторов.

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

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

  • A Statement. Jon Pretty — внезапно в комьюнити-движе действительно комьюнити-движ. По названию можно подумать, что это поэма какого-то британского поэта, но нет — заявление автора magnolia, когда-то отмененного из-за старой драмы. Долго думали редакцией, стоит ли как-то комментировать, и в итоге сошлись на одном: странно видеть такие голливудские разборки в крайне небольшом и тесном профессиональном сообществе разработчиков.


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

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

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