Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.

Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Релизы

Собрали последние обновления популярных и полезных библиотек —  кажется, кто-то все-таки сделал все обещанные дела после майских. Много интересных релизов с новым функционалом и оптимизацией старого, а еще с поломками обратной совместимости. Вот они:

Tinkoff Scala meetup & open-source

Рубрика для митапов и релизов библиотек и фреймворков, рожденных в недрах scala-комьюнити Тинькофф:

  • Особенности сред исполнения различных систем эффектов в Scala. Наш коллега Никита Калинский написал статью о том, что творится под капотом у современных фреймворков для написания конкурентного кода в web-приложениях. Рассматриваются модели исполнения, лежащие в основе Cats Effect и ZIO, а также их сильные стороны и недостатки. Если не довелось ни разу заглянуть во внутрянку систем эффектов, в том числе Future, скорее всего, откроете для себя много нового. Рекомендуем к прочтению!

  • mockingbird v3.8.0 и v3.9.0 — небольшие доработки и обновленный UI.

  • phobos v0.21.0 — обновили версии third-party-зависимостей и добавили поддержку Enum из Scala 3.

Статьи

Собрали свежие статьи, репозитории и исследования, которые показались нам интересными. В отдельный блок вынесли ресурсы, где авторы используют Scala 3. Enjoy:

  • More than just HelloWorld.json in sttp & uPickle — взгляд на upickle с высоты птичьего полета. Рассказали про пару интересных фич: десереализацию sealed trait и перегоны моделек из snake_case в camelCase и обратно.

  • Accumulate errors in Scala with typelevel cats — как валидировать данные через parMapN и коллекции. Если вам кажется, что вы уже все встречали где-то статью про Validated, cats-core, валидацию данных и обработку ошибок, то вам не кажется: тык № 1, тык № 2.

Статьи по Scala 3

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

Собрали ссылки как на уже известные и популярные, так и на ноунейм-каналы и видео про Scala:

  • Scala 3.3 LTS - The Big Deal Release? Пара слов о некоторых фичах, которые собираются завести в Scala 3.3. А также размышления DevInsideYou о стабильных (LTS) версиях.

  • Introduction to Scala Development using VSCode - Dick Wall. Устали писать код в Intellij IDEA? Появилось желание освоить новые горизонты? Вот вам базовый туториал по VS Code + Metals. Напишите свой первый HelloWorld.scala не в IDEA, соберите и протестируйте его. Выйдите из зоны комфорта!

  • Proper and Basic Property-Based Testing. Рассказ про property-based-тестирование. Если никогда о таком не слышали, то неплохое вступление.

  • Rock the JVM. На канале вышло два новых видео, включая туториал по CORS policy на примере http4s. Советуем глянуть, если никогда не приходилось настраивать CORS у себя в проекте, ведь на эти грабли вам еще предстоит когда-нибудь наступить.

  • Ziverge. Появились первые доклады с прошедшей конференции ZIO World 2023. А еще пара выпусков Zymposium о том, как разрабатывают новые фичи для ZIO-экосистемы и что из себя представляет RC1 zio-http.

Доклады со Scalar 2023. Интересные идеи, инсайты о развитии языка и милые презентации с котами и аниме:

  • Łukasz Michniewicz BUILDING MULTIPLAYER GAME BACKEND WITH AKKA ON AWS LAMBDA. Сказ о том, как деплоить бэкенд игры, написанный на Scala, на AWS Lambda, не имея в команде ни одного devops-разработчика, но имея огромный энтузиазм и желание превозмогать трудности и обходить все лежащие грабли. Спойлер: добрались даже до GraalVM.

  • Valentin Kasas PRETTY LITTLE COMPILERS. Valentin Kasas о важности концепции Contract as a First и представления либы skeuomorph, которая генерирует Scala-код по контракту и работает по принципу компилятора, переводя все в байт-код.

  • Jakub Kozłowski PAIN-FREE APIS WITH SMITHY4S. Jakub Kozłowski c подробным рассказом о smithy-библиотеке, позволяющей описывать спецификации API в формате собственного IDL и генерировать на их основе клиентский и серверный код, что облегчает поддержку различных протоколов взаимодействия.

  • Kasper Kondzielski WRITING SCALA OUTSIDE IF INTELLIJ IDEA. Если мем I use Arch btw — это про вас, пополняйте коллекцию собранных с нуля инструментов сборной солянкой neovim + treesitter + metals. Получасовая демонстрация того, на что способен этот зверь.

  • Daniel Beskin FIXING-UP PRODUCTION WITH PROPERTY-BASED TESTING. Daniel Beskin о преимуществах property-based-тестирования и о том, как с помощью этой методики команда провела расследование и нашла причину бага, потрясшего весь продакшен!

  • Paweł Marks THE FUTURE OF SCALA. Представитель SIP-комитета рассказывает о том, что из себя представляет релизный процесс Scala 3 и какой путь проходит новый функционал от предложения до слияния со стабильной версией компилятора. Здесь же любопытная демонстрация интеграции новых фич компилятора с IDE.

  • Aleksandar Skrbic FUNCTIONAL PROGRAMMING AND KAFKA: DO THEY MIX? Если никогда не подключали себе Kafka в проект, это выступление будет крайне полезным: в нем объясняются общие термины и концепции работы Apache Kafka, перечисляются существующие библиотеки для интеграции на Scala, приводятся примеры реализации в коде нескольких простых пользовательских сценариев и дается несколько рекомендаций, как избежать подводных камней.

  • Szymon Rodziewicz MAKING SCALA BATTERIES-INCLUDED WITH SCALA TOOLKIT. Ребята из VirtusLab провели исследование о том, какие когнитивные процессы включаются во время чтения кода и как результаты этого исследования повлияли на формирование Scala Toolkit.

  • Michał Pawlik TYPESAFE TECHNIQUES FOR BETTER SLEEP AT NIGHT. Известно, что устойчивый к внештатным ситуациям код пишется в атмосфере паранойи и недоверия ко всем компонентам системы. Несколько советов, как сместить потенциальные баги из runtime в compile-time, чтобы спать по ночам спокойнее.

  • Filip Michalski SCALA FROM B TO F - BACKEND DEVELOPER ON FRONTEND. Как идеологично совместить в одном репозитории JVM-бекенд и JS-фронтенд-код на Scala. Здесь же ответы на вопросы, можно ли из JavaScript вызвать код Scala.js и обратно, а в Scala.js компоненты из React переиспользовать?

  • Łukasz Żuchowski SMART DATA PIPELINES FOR AI. Скрещиваем Free-монаду и пайплайны data science для обучения модели и предсказания результатов. На выходе получаем удобное в поддержке разделение логики исполнения шагов с их интерпретацией. В качестве бонуса небольшой пример интеграции такого подхода с Apache Spark.

Highlights

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

  • twiddles — небольшая библиотека, предоставляющая приятный синтаксис для работы с протоколами и case class как с коллекциями. Реализована на Scala 2 через гетерогенные списки (привет, HList!), на Scala 3 — через generic tuples.

  • CEffBanX — салат из большого количества ингредиентов-библиотек. Где вы еще увидите bio из Izumi, Eff-монаду и cats-effect в одном месте? Пример со-использования различных либ и экосистем. Автор честно предупреждает, что проект скорее исследовательский, чем реально готовая шпаргалка к применению в продакшене.

  • SynapseML v0.11.0 — в SynapseML, фреймворк для анализа данных на основе Apache Spark, добавили много новых фич, включая поддержку интеграции с ChatGPT.

  • ff4s — yet another library for Scala.js frontend. Используется typelevel-стек, особенно интересно, как cats-effect уживается с однопоточной средой.

  • sttp-openai — sttp добавили поддержку клиента к OpenAI. Теперь можно интегрировать chatGPT прямо в приложение! (b ᵔ▽ᵔ)b

  • sealed-monad — горстка синтаксиса в стиле cats-core для работы с эффектами. 

Tooling

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

  • Sbt Dependency Submission — расширение для Github Action. Позволяет построить граф зависимостей вашего приложения после сборки на sbt и выгрузить его в Dependency submission API. О том, что это такое и зачем нужно, можно почитать в официальной документации.

  • skan and building your own tools — Chris Kipp с милым постом о том, как он написал мини-kanban для души. А как давно вы писали что-то для себя?

Комьюнити-движ

Раздел курьезных и любопытных событий в мире scala-общества, и мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения, ждем вас в комментариях:

  • A Splendid Scala Journey — прощальное письмо John A De Goes народу! Главный идейный основатель zio-экосистемы уходит в Rust на покой.

  • В мае в Москве прошел Scala-митап Яндекс Вертикалей. 1-й доклад и 2-й доклад

  • flatmappers. Вышли второй и третий выпуски ૮˶ᵔᵕᵔ˶ა

  • Lately 03. Если вам, как и нам, нравится читать посты о жизни из блога Chris Kipp, возрадуйтесь! Вышел третий выпуск. О последних путешествиях, участии в Scala Tooling Summit, работе над dotty diagnostic и впечатлениях от советского фильма «Иди и смотри».

В интернете, как всегда, кто-то не прав ヾ(゜-゜)ノ” Хоронят Scala, проливают слезы на тему тяжелой жизни разработчика и ведут жесточайшие холивары:

29 июня в Екатеринбурге пройдет IT's Tinkoff Scala Meetup.
Посмотреть план мероприятия, прочитать краткое описание докладов и зарегистрироваться можно на странице митапа.

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

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

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