
Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии.
Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Релизы
Собрали последние обновления популярных и полезных библиотек за пару месяцев:
Статьи
Делимся свежими статьями, репозиториями и исследованиями, которые нам показались интересными. А еще обозреваем ресурсы, где авторы используют Scala 3. Enjoy!
Scala 3.7.0 released! — стабильная версия named tuples, for-comprehension, начинающийся с map, --preview фича флаги, изменена логика резолва given-ов, @unroll для бинарной совместимости со старыми версиями либ при добавлении нового опционального поля в case class, расширение API метапрограммирования, presentation compiler, scala 3 на Android. Очень жирный релиз, который, мы надеемся, не оставит равнодушным никого.

Миша
Запустите компилятор с -rewrite -source:3.7-migration, чтобы автоматически вставить using и получить варнинги по новым правилам givens
Миграция проекта на Scala 3 — наконец-то в ру-комьюнити появился хороший и подробный гайд по миграции. Подробно, кропотливо, ища поддержку в сообществе, решая некоторые проблемы самостоятельно, ребята добились успеха с переездом проекта. Мотаем на ус и мигрируем по следам пилигримов ᕕ( ᐛ )ᕗ

Настя
Мое сердце начинает пылать от любви к Scala-СНГ-комьюнити, когда я вижу, как ребята откликаются в чатиках на зов о помощи Σ>―(〃°ω°〃)♡→
Business4s & GSoC 2025: 3 Exciting Projects and Not-So-Usual Approach — существует много инициатив для самосовершенствования. Зимой это Advent of Code, летом — Google Summer of Code. Business4s воспользовались случаем и организовали себе бесплатных рабов рабочие группы. Надеюсь, у них все получится ٩(。•́‿•̀。)۶.

Настя
Нагло организовали на чужих общественно-образовательных началах себе три полноценные рабочие команды, где в каждой и пять стажеров бесплатных, и именитый ментор-профессионал. Я в восхищении от такой предприимчивости

Миша
От всех моих знакомых я слышу только положительные отзывы касательно работы над проектами в рамках Google Summer of Code. Вписаться в крутую движуху с потрясным ментором и работать над проектом, который вызывает у тебя интерес. Ну разве не потрясно?
YAES: Thoughts on context-based capability passing style for state threading and integration into tagless-final application — автор подгоняет YAES под привычный tagless-final-код и на ходу «взращивает» недостающий State-эффект. Он показал, как обойтись без громоздкого стека ReaderT/EitherT/StateT, сохранив typeclass-API. Конечная логика выглядит почти императивно, но остается отложенно-чистой.

Миша
Из минусов отмечу, что порог входа возрастает, так как все привыкли жить на *T-трансформерах
Random Scala Tip #624: The Pitfalls of Option Blindness — приятная короткая заметка с мыслями о том, что не стоит бездумно оборачивать каждое потенциально отсутствующее поле в Option. Возможно, стоит задуматься и более подробно погрузиться в свою доменную область, чтобы проектировать понятные и расширяемые модели.

Настя
Размышления здравые, и на минутку я задумалась, а как в подобных случая поступаю я сама — не оборачиваю ли все подряд бездумно в Option?
А сюда мы спрятали еще парочку интересных статей
Видео и доклады
Собрали ссылки как на уже известные и популярные, так и на локальные каналы и видео про Scala.
flatmappers Scala MCP и потеря Ammonite-скриптов в Metals — ребята поговорили за особенности разработки с использованием LLM в разных рабочих сценариях и на разных языках. Провели минуту молчания по скриптам Аммонита. Обсудили Metals и сбор фидбэка о его работе. Поворчали, как же много мертворожденных оберток для работы с БД. А еще все желающие могут прислать опенсорс-либу ведущим на разбор (◣_◢)¤=[]:::::>

Миша
По моему мнению, сейчас вайб-кодинг — это парадигма-панацея, которая пока что не способна полноценно существовать без человека
IntelliJ IDEA x Scala: Named Tuples — если вам больше нравится смотреть видео, чем читать сухую документацию, то специально для вас ребята из JetBrains записали гайд о том, как работает новая фича — named tuples.
Tooling
Кусочек дайджеста, где мы рассказываем о появлении новых и улучшении уже существующих инструментов для разработки.
Announcing Scala.js 1.19.0 — обновление значительно ускоряет работу с WebAssembly и добавляет нативную поддержку async/await.
Highlights
В этом блоке не всегда свежие, но зацепившие наш взгляд ресурсы под флагом «очумелые ручки». Авторы творят что-то интересное, необычное, но не обязательно полезное.
Workflows4s Finally Released — You Might Hate Your Business Processes a Little Less — это как камунда, у которой отобрали стероиды и сказали «code-first».

Настя
Business4s на заре становления писали, что главная проблема Scala — высокий порог вхождения: с монадами, функторами, аппликативами и прочим. А что мы видим сейчас? В их коде собственные .pure и InMemorySyncRuntime
ldbc — еще один doobie способ работать с SQL для Scala 3.

Миша
Чуваки добавили пример, как подключаться к MCP-ldbc, плюс дали ссылку на фулл доку, чтобы скормить ее нейронке. Мое почтение!
Комьюнити-движ
Раздел курьезных и любопытных событий в мире Scala-общества. Мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения — ждем вас в комментариях.
Scala's Mocking Melody — благодаря новости о выпуске на виниле истории коммитов проекта mockito-scala мы узнали о такой компании и необычной бизнес-идее. Выглядит странно и дико, но в этом есть свое очарование безумия.

Миша
Я хочу такое, шат ап энд тейк май мани (╯✧▽✧)╯

Настя
Как ребята делают бизнес — мое почтение. Комменты крутятся — бабки мутятся

Эля
Ну это вообще декаданс
Scala Mock Web site — у нас в компании периодически проводятся месяцы Scala OSS. В мае один из коллег сделал сайт для scalamock. Просто, но со вкусом: с примерами, с проблемами и всем необходимым, чтобы вкатиться новичку.

Миша
У автора все в порядке с тайм-менеджментом, стоит взять с него пример
On vibe coding — вайб-кодеры среди нас: вот мы и дожили до того момента, когда появляются библиотеки, которые написаны в значительной степени с помощью AI.
Tips for migration from Scala 2 to 3 — Scala 3 почти четыре года. Если вы еще не начали миграцию своих проектов, то вот вам знак — тут и в статьях выше.

Миша
А также это тайный знак вместо shapeless использовать chimney
Scalac's Talent Pool — scalac теперь еще и рекрутинговое агентство ¯_(ツ)_/¯
Gradle, Inc. Joins Scala Center Advisory Board to Improve Scala Developer Experience — интересные веяния, конечно. Есть в этом тонкая нотка иронии, что за одной доской и Yokota, пилящий в одиночку open-source-инструмент sbt, и мастодонт Gradle с миллионными инвестициями.
До встречи через месяц! ♡\( ̄▽ ̄)/♡
Над дайджестом работали @Melkaya_150cm,@EvieLynn, @haskiindahouse Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>
Комментарии (9)
Dhwtj
02.06.2025 10:48Мне кажется, по функциональщине Rust скоро догонит Scala
Слышал, что у scala раскол сообщества - есть "простая Scala" (как better Java) и "типобезопасная Scala" (с Cats, Scalaz, ZIO). Команды часто конфликтуют по поводу стиля.
Так?
haskiindahouse
02.06.2025 10:48Привет, почему так считаешь? В целом многие языки догоняют Scala по ФП, хз что конкретно нового ФП-шного в Расте
Не, по поводу раскола, если ты откроешь книгу от Одерски (создатель языка), то там на первых страницах будет написано, что стараемся писать в ФП стиле.
Имхо, если чуваки пишут на Scala as a better Java, то почему бы им не перейти на Kotlin?Dhwtj
02.06.2025 10:48Например
Higher Kinded Types (HKT) — конструктор типов как реальный тип.
Rust - много лет в активной разработке,
В kotlin уже есть ограничения поддержка
В c#, go, java скорее всего не будет никогда
Python как бы есть, но в динамической типизации это фигня
haskiindahouse
02.06.2025 10:48может я неправильно нагуглил, но полноценных HKT как в скале нет. В Scala например мы можем сразу писать:
trait Functor[F[_]] { def map[A, B](fa: F[A])(f: A => B): F[B] }
В Раст есть GATs, которые писать что-то типа такого
trait Functor { type Wrapped<A>; fn fmap<A, B>(fa: Self::Wrapped<A>, f: impl FnOnce(A) -> B) -> Self::Wrapped<B>; }
сразу понятнее, что сложнее описать несколько параметров типа, например
F[_, _]
Потом я увидел crates, который пытается быть Cats, я не шарю, но как будто бы ему всего 2 года и непонятно насколько приживется
имхо, как бывший плюсовик я бы хотел увидеть на хайпе язык с ФП стилем, без GC и с генериками как в Rust
StasTukalo
Здравствуйте, Настя, Эвелина и Миша! Сможете объяснить выбор scala для ваших задач? Спасибо.
haskiindahouse
привет, Стас!
Почему мы выбираем строгую типизацию, масштабируемость и иммутабельность? За последние 8 месяцев у меня багов не было в написанном коде + гибкий код можно писать, если перейти за порог входа
StasTukalo
Жаль. Зря вы ёрничаете, Миша. Задавая свой вопрос, я (как человек не имевший в жизни вообще никакого опыта со scala и желающий примерить ваш опыт на себя) ожидал увидеть развёрнутый ответ, со сравнениями с решениями на других яп, с описаниями плюсов и минусов, а от вас пришла отписка. Расскажите пожалуйста, как вы используете "масштабируемость и иммутабельность" и в чём гибкость вашего кода вообще и по сравнению с реализацией на каком-то другом яп в частности? Спасибо.
haskiindahouse
Стас, мой комментарий достаточно емкий, чтобы уйти в конкретику хотелось бы понять: сравнение с какими языками бы хотелось тебе увидеть?