Scala Digest. Выпуск 41

от автора

Привет, Хабр! Мы Настя, Эвелина и Михаил — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные материалы и собственные комментарии. Мотивацию черпаем из желания развиваться и делиться полученными знаниями.

Поздравляем читателей с первым днем лета, желаем кайфовой разработки, интересных материалов и комфортных перерывов под летним солнцем!

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Статьи

Моки без боли — добротная статья от мейнтейнера scalamock, из которой видно, как боли приводят к улучшениям в инструментарии. Вы могли видеть статью Жени, а кто-то слушал доклад на конференции. Рады видеть пополнение в рядах русскоязычных авторов статей!

Homogeneous Tuples in Scala 3 — автор указывает на явные недостатки в API Tuples в Scala 3. Статья начинается с невинного вопроса: «А можно ли сделать tuple, в котором все элементы одного типа?» Через пять минут мы уже читаем про match types, рекурсию на уровне типов и tuples как замену HList’ам. Scala 3 умеет превращать любую бытовую задачу в экскурсию по внутренностям компилятора — именно за это мы ее любим.

Staged Parser Combinators in Scala: Have Your Cake and Eat It (Too). Staged parser combinators — классическая попытка Scala-сообщества усидеть на двух стульях: писать парсеры в удобном декларативном стиле и выжать из них производительность уровня hand-written-кода. 

Статья показывает, как через staging и генерацию кода можно «разогнать» parser combinators, убрав накладные расходы композиции. По сути это возвращение старой идеи из мира LMS и Odersky: сначала пишем красивую функциональную абстракцию, а потом компилятор (или его staged-версия) аккуратно выжигает все лишние слои. Интересно не только само решение, но и вечный вопрос «Где проходит граница между выразительностью DSL и ценой, которую за нее платит runtime?».

Introduction to Scala 3’s Capture Checking and Separation Checking — capture checking и separation checking в Scala 3 — попытка сделать в языке строгий контроль над тем, как значения «ссылаются друг на друга» и где может возникать алиасинг. По сути, компилятор начинает следить не только за типами, но и за тем, какие ресурсы и ссылки могут пересекаться или случайно разделяться. Идея похожа на облегченный borrow checker: можно писать привычный Scala-код, но компилятор постепенно учится запрещать опасные пересечения ссылок, которые могут приводить к гонкам данных или неожиданным побочным эффектам. Это шаг в сторону более «безопасного по умолчанию» языка, но без радикального отказа от GC и привычного стиля программирования.

In Scala, a value can override a function — в Scala val может переопределять def. На деле статья очень внятно объясняет один из фундаментальных принципов языка uniform access: вызывающему коду не должно быть важно, хранится значение или вычисляется.

Мы всегда очень радуемся новым материалам на русском языке от Scala-разработчиков. Вышла прекрасная серия из трех статей про модели конкурентности JVM-языков:

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

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

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

Собрали ссылки как на уже известные и популярные, так и на локальные каналы и видео о Scala.

Модель роста — ведущие разбирают статью из прошлого выпуска Scala’s Growth Model — Building Inward, Starving Outward о парадоксе Scala. Внутри сообщества язык любят почти все, Scala 3 получилась удачной, экосистема жива и технически сильна, но снаружи adoption растет куда медленнее, чем хотелось бы. 

Ведущие вспоминают, как Spark когда-то массово привел разработчиков в Scala, и рассуждают, почему сегодня языку не хватает новых «точек входа» для внешнего мира. Получился интересный разговор не столько про технологии, сколько про то, как языки вообще становятся популярными. Затем плавно переходят к AI-adoption, отмечая, что декларативность помогает получению хороших результатов при использовании агентов.

The GENPres project — к сожалению, человеческий фактор может приводить к ошибкам, но такой области, как медицина, требуется особая точность. Для безопасного и эффективного процесса лечения препаратами с помощью программного обеспечения Clinical Decision Support Software (CDSS) можно снизить процент нарушений клинических протоколов, дозировок, а также своевременно информировать медперсонал о новых данных.

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

Tooling

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

Incremental Highlighting for Scala — устали, что IDEA съедает всю вашу CPU? Ребята из JetBrains объясняют идею новой экспериментальной фичи. Какие рассуждения натолкнули их на это и какие бенефиты получим, если включим ее, — все это есть в статье.

Scala with Claude Code — куда же мы без ИИ. Инструкция, как дать агенту доступ к LSP/BSP, сборке и структуре проекта через Metals и Bloop.

scala-skill — библиотека скилов для ИИ-агентов от VirtusLab.

Highlights

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

Scala-oss-bug-hunt — результат большого труда автора нашего дайджеста Миши. Практическое применение его дипломной работы — 181 issues в библиотеке Scala-экосистемы, в которых приведены минимальные примеры синтаксически корректного кода, воспроизводящие тот или иной баг. 

scone-player — прикольный проект медиаплеера на Scala.js с использованием WebTorrent.

Релизы

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

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

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

Подписывайтесь на наш телеграм-канал, там мы анонсим все самое интересное и обсуждаем горячие новости.

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

ссылка на оригинал статьи https://habr.com/ru/articles/1042168/