Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на 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. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>

Комментарии (2)


  1. mike_aksarin
    02.05.2024 13:32
    +1

    Список от SwissBorg из 10 пунков того, за что они любят скалу, хоть сейчас на стенку вешай!


  1. mike_aksarin
    02.05.2024 13:32

    Кто-нибудь разбирался с Gears, который Одерски предпочитает эффектам?