Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на 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.”

Сотрудники softwaremill со своими бэкендами tapir-а такие:
Сотрудники softwaremill со своими бэкендами tapir-а такие:

Вышли три части мощнейшего введения в теорию типов от @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. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>