
Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.
Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Релизы
Собрали последние обновления популярных и полезных библиотек за пару месяцев:
IntelliJ Scala Plugin 2024.1 Is Out! — завезли целый ворох полезных изменений для работы со Scala 3 и его синтаксисом. Если ваш проект использует третью версию языка и IDE для разработки — IntelliJ IDEA, то настоятельно рекомендуем обновить версию используемого плагина и зайти почитать изменения;
IntelliJ IDEA 2024.1 Is Out! — в этой версии IDE обладатели Ultimate-версии найдут для себя много вкусных фич, причем больше всего подарков завезли джавистам и котлинистам. Не можем не отметить заметный акцент на AI Assistant и автодополнении кода. К данному релизу JetBrains даже выпустили отдельное видео: What’s New in IntelliJ IDEA 2024.1:
sbt 1.10.0-RC2 — в RC2 продолжается работа над внедрением SIP-51. Чтобы внезапно не обнаружить в sbt 1.10.0 этот сюрприз, стоит ознакомиться хотя бы с текущим чейнджлогом;
Статьи
В этом разделе — свежие статьи, репозитории и исследования, которые нам показались интересными. В отдельный блок вынесли ресурсы, где авторы используют Scala 3. Enjoy:
Scala 3 Data Transformation Library: ducktape 0.2.0. — недавно вышел релиз ducktape 0.2.0, аналог chimney, но только для Scala 3. В этом блог-посте разработчик библиотеки рассказывает о внутрянке проекта и о том, как с пришествием 0.2.0 новые фичи библиотеки позволяют пользоваться ею с кайфом. В общем, загляните, все как в chimney!
SIP-61 - Unroll Default Arguments for Binary Compatibility — интересный SIP от Li Haoyi, с бурным обсуждением нейминга от Одерски. Само по себе предложение выглядит вкусным для либ: в текущей реальности, когда в классе или функции добавляется параметр, имеющий дефолтное значение, новая версия либы является семантически совместимой для пользователя, но бинарно несовместимой с предыдущей версией. Предлагается создать специальную аннотацию, помечать ею такие поля и получать в итоге бинарную совместимость.
Capture Checking in Scala 3.4 — Mark Hammons рассказывает, как усиленно разрабатываемый capture checking поможет сделать менеджмент ресурсов еще более безопасным.
Alexandru Nedelcu’s comment — Alexandru Nedelcu очень
клевый мужиккруто, понятно и подробно пояснил за имплиситы новичку на Reddit-e, несмотря на то, что таких вопросов миллион в интернете, а документации еще больше.
Mocking Libraries can be your doom — небольшая статья о том, что такое мокирование в тестах и как мокировать правильно. Отметим пикантность, состояющую в том, что в тэгах статьи значится “Scala”, а весь код статьи на python (¬‿¬)
Folding Cheat Sheet #4 — слайды Philip Schwarz как отдельный вид искусства. Они в целом по делу, но иногда такие забавные.
А здесь могла быть ваша статья :) Присылайте новости, которые хотите увидеть в дайджесте, а мы скажем вам спасибо в следующем выпуске!
Benchmarking Tapir: Part 3 (Loom) — “We are going to compare the following backends: http4s-vanilla, pekko-vanilla, vertx-vanilla, tapir-http4s, tapir-pekko, tapir-vertx (Future-based Vert.X server), tapir-vertx-ce (Tapir Vert.X backend using Cats Effect), and finally, our fresh contenders: tapir-nima and tapir-netty-loom.”

Вышли три части мощнейшего введения в теорию типов от @Underskyer1 на Habr. В отличие от классических учебников и методичек по теории типов, здесь все написано человеческим языком и с реальными примерами современного Scala-код��, использующего подобные техники. Наш рекомендасьон.
А сюда мы спрятали еще парочку интересных статей:
Видео и доклады
Собрали ссылки как на уже известные и популярные, так и на ноунейм-каналы и видео про Scala:
flatmappers 018. Форматеры для Sql — обсуждали все и ничего, а наше внимание привлекла одна из тем — последствие One Billion Row Challenge в виде статьи Marko Topolnik о том, как …
Simple Scala with Li Haoyi — интервью с самим Li Haoyi. По его словам, он работает над своими open-source-библиотеками исключительно в нерабочее время. Похоже, у повелителей времени стащили Тардис, другого объяснения, как Li Haoyi все успевает, мы не видим. Впрочем, за час интервью успели пройтись по довольно широкому кругу вопросов, в том числе обсудили SIP и эволюцию Scala. Ставь лайк, если тоже постоянно ловишь неловкие моменты на созвонах как на 59:10 ≖‿≖
Algebraic Effects from Scratch by Kit Langton — не иначе как находка месяца. Загибайте пальцы: учимся писать с нуля (!) систему алгебраических эффектов по образу и подобию kyo (!!). Очень стильная «интерактивная» презенташка (!!!), по которой рассказ ведет Kit Langton (!!!!), который, на минуточку, совместно с Adam Fraser вели Zymposium и запилили прекрасный гайд в шести частях о том, как собрать свой игрушечный zio.
The Death of Monads? Direct Style Algebraic Effects — а если вы вообще проспали весь движ с алгебраическими эффектами, то в этом видео за 17 минут предпринимается попытка изложить их сущность и сравнить с функциональными эффектами и безэффектным кодом.
Why Effect is more important than ZIO by John A. De Goes — John A. De Goes на конференции по… Typescript-у. Рассказывает о том, как фреймворк Effect связан с ZIO. Кто бы что ни говорил, а в умении шикарно выступать De Goes-у не откажешь.
Developer Productivity With IntelliJ IDEA — туториал по возможностям Intelij IDEA. Каких-то секретов, которых бы не было в официальной документации, не представлено. Отлично подойдет для новичков.
10 flavors of Scala’s future — Scalar 2024 recap — милая склейка мини-интервью о будущем Scala с участниками конференции Scalar.
А сюда мы спрятали еще немного интересного:
Tooling
Кусочек дайджеста, где мы рассказываем о появлении новых и улучшении уже существующих инструментов для разработки:
sbt 2.x remote cache with Bazel compatibility — заметки Eugene Yokota о своей имплементации remote cache в sbt 2.x. Оказывается, у Bazel есть свой Remote Execution API. Статья о том, как он пытается интегрироваться с этим интерфейсом и использовать часть эндпоинтов для решения своей задачи, а также как пробует другие варианты.
sbt-buildinfo 0.12.0 — крошка-плагин для генерации объекта, описывающего текущий sbt-билд проекта, обзавелся поддержкой Scala 3. Справедливый вопрос: «А что вообще означает поддержка Scala 3 в sbt-плагине?». Ответ заключается в том, что сгенерированный объект содержит методы, которые можно вызывать из основного кода проекта. И вот эти методы и код объекта будут сгенерированы с учетом специфика Scala 3.
Iris — интерактивный конфигуратор темы для Linux-а, написанный на Scala 3. Жмякаете в терминале java -jar iris-java.jar и пред вами предстает TUI-меню с выбором темы.
Highlights
В этом блоке не всегда свежие, но зацепившие наш взгляд ресурсы под флагом «очумелые ручки». Авторы творят что-то интересное, необычное, но не обязательно полезное:
raise4s — небольшая библиотека для работы с ошибками. Из интересного: лаконичный синтаксис, позволяющий использовать инфиксное применение типа, что позволяет в сигнатуре функции указать, какие логические ошибки могут быть выброшены.
Scalatags — еще одна маленькая жемчужина от Li Haoyi. Позволяет быстро и удобно набросать веб-страницу, кодякая на любимом языке (^_^). А теперь еще и с поддержкой Scala-Native 0.5.0.
Комьюнити-движ
Раздел курьезных и любопытных событий в мире scala-общества, и мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения — ждем вас в комментариях:
Эффект Монреаля: почему языкам программирования нужен Царь стилей. Доброго времени суток, мои маленькие любители холиваров. Эта переведенная статья собрала немало развернутых комментариев под постом. Посыл статьи, что в каждом языке требуется вместе с релизом выпускать гайдлайн: как теперь обязан выглядеть стилистически правильный код и какая единственная библиотека должна использоваться для парсинга json-ов. В качестве примера стилистического хаоса приводится работающий код на Scala, написанный сразу в трех стилях.

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

Карина
А мне не понравилось
Lean Scala — вторая запись в блоге господина Odersky начинается невинно и приятно: о том, что язык программирования — это в том числе про людей, а не только про исполнение машинами команд, что все языки такие разные, каждый со своими особенностями… ♡\( ̄▽ ̄)/♡ А продолжается и заканчивается все мыслью, что надо бы самостоятельно отказаться от макросов, эффектов их экосистем и всем писать просто-единообразно, по одним правилам (╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻
За основу и как пример такого гайдлайна приводится манифест восьмилетней давности от Li Haoyi, которому тот старается следовать при написании своих библиотек. В дополнение господин Odersky предложил на реддите под постом обсудить свои идеи, и там на момент написания дайджеста уже набралось более 100 комментариев, причем зачастую объемные, на несколько абза��ев. Ломаются копья, пули свистят. Там слышны мнения разных сторон, есть возможность стравить пар, найти единомышленников, и это удивительно увлекательное чтиво.
Announcing the Scala Ambassadors initiative — в Scala-сообществе появляются официально признанные амбассадоры, которые принимают участие или организуют всякую общественно-полезную движуху и к которым можно прийти с различными вопросами. К сожалению, среди них вы не увидите никого из России, несмотря на весь масштаб нашего регионального комьюнити. Актуальный список амбассадоров можно посмотреть на scala-lang.org.
Scams in the Scala Community update. Мошенники вышли на новый уровень: теперь им нужно хоть немного разбираться в Scala, чтобы суметь провести интервью и предложить оффер. А после они скажут, что обязательным требованием для выхода на работу является сертификат курса на скаммерском сайте scala-lang. Во дают. За это время успели бы уже сами устроиться скалистами и зарабатывать 300к в наносекунду.
Why we bet on Scala at SwissBorg — пост, полный позитива. Компания, столкнувшись с кризисом в сфере своего бизнеса, пережившая переезд с akka на pekko, миграцию со Scala 2 на Scala 3 (а это, на минуточку… ну, вы поняли), все еще обладает огромным кредитом доверия к языку.
До встречи через месяц! ♡\( ̄▽ ̄)/♡
Предыдущие выпуски:
Над дайджестом работали @Melkaya_150cm, @Ivoya, @tcarina. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>
