Scala Digest. Выпуск 7

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

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

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

Релизы

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

  • pekko v1.0.1 — первый релиз форка akka;

  • slick v3.5.0.-M4 — пререлиз для Scala 3;

  • endless v0.24.0 — добавили pekko-рантайм;

  • indigo v0.15.0-RC3 — завезли базовый физический движок;

  • sttp v3.8.16, 4.0.0-M2 — в v3.8.16 подняли cats-effect, в котором изменена семантика Async. Beware!

  • izumi v1.1.0-M24, v1.1.0-M25 — завезли поддержку ZIO 2;

  • Scala 3.3.1-RC1 — 3.3.1-RC4;

  • sbt 1.9.2 и sbt 1.9.3;

  • IntelliJ IDEA 2023.2 Is Out!;

  • scala-cli v1.0.2;

  • ducktape v.0.1.10;

  • smithy4s 0.17.x;

  • enumeratum macros-1.6.4;

  • scalatra v3.0.0-M5;

  • magnolia scala3-v1.3.3;

  • tapir v1.6.1—v1.6.3;

  • zio-json v0.6.0;

  • zio-kafka v2.4.1;

  • iron v2.2.0.

Tinkoff Scala Meetup & open source

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

5 августа в Казани состоится Тинькофф ИТ-фест. В программе — доклады по направлениям QA, Java, Mobile и Scala, а также обсуждения, дискуссии и различные развлечения-активности. Например, наш ведущий разработчик Иван Лягаев расскажет, что такое Project Loom и какие проблемы он решает, а какие — нет. Чтобы принять участие, достаточно пожертвовать в указанный благотворительный фонд любую сумму свыше 1000 ₽.

Статьи

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

  • What is blocking in Loom? Шикарное исследование от Adam Warski, проливающее свет на то, до какой степени Project Loom готов вести нас в мир неблокирующих операций. Здесь же небольшой обзор принципа работы Loom, а также I/O в операционных системах.

  • SIP - Coroutines — неприличного размера SIP о внедрении Kotlin-like корутина в Scala. Стоит ознакомиться как минимум для осознания вектора развития современной Scala в контексте конкурентного программирования. Здесь же упомянуты и Project Loom, и IO-монады, и недавняя экспериментальная разработка от softwaremill, и новейшее исследование от EPFL во главе с самим Martin Odersky.

  • Chatbot Showdown: LLMs to write Scala applications with Typelevel stack. VirtusLab снова устраивает соревнование между нейронными сетями. В этот раз определяют лучшего разработчика REST-сервисов. Как сказал один наш коллега, «раньше три часа писали код и час его дебажили. Теперь код мгновенно генерирует нейронка, зато приходится дебажить его половину рабочего дня».

  • gRPC vs REST — сравнение REST- и gRPC-подходов к построению API. Сравниваются разные аспекты, начиная с версии используемого HTTP-протокола и заканчивая тулингом для тестирования.

  • Data serialization tools comparison: Avro vs Protobuf.  Это могла бы быть хорошая статья, если бы автор провел более фундаментальное исследование. Не хватило разнообразия параметров прогонов и используемых стеков.

  • An intro to Flow Fields in Scala. Chris Kipp рассказывает, как он реализовал код для генерации красивейших артов по мотивам статьи Tyler Hobbs. «Код — это палитра, а программист — художник, создающий шедевры из нулей и единиц». ChatGPT ╰( ͡° ͜ʖ ͡° )つ──☆*:*:・゚’☆

  • 6 Common Misconceptions Around Akka-HTTP / Pekko-HTTP — развеивание мифов об akka-http, которые ходят в Scala-коммьюнити. Или как сказать «нормально делай — нормально будет» шестью разными способами.

  • How to implement streaming microservices with ZIO 2 and Kafka — ныряем в мир экосистемы ZIO 2. Пошаговый, с подробными объяснениями туториал по тому, как написать тестовый проект с Apache Kafka и ZStream. Уберите детей от экранов: используется Bleep (см. рубрику Tooling из предыдущего выпуска).

  • Interesting patterns to consume ZIO Streams.  Автор не только потрогал за разные места ZStream и ZSink, но и оставил наглядные картинки, как именно он это делал.

  • No More Orphans in Practice — пробуем на практике подход из оригинальной статьи 7mind, а именно: как предотвратить dependency-hell у пользователей еще на этапе проектирования библиотеки.

  • How to write a (completely lock-free) concurrent LRU Cache with ZIO STM — на примере небольшой структуры данных изучаем ZIO Ref. Ищем его недостатки и решаем их с помощью ZIO STM.

  • Introduction to optics in Scala — не пристально (только Lens, без Prism) разглядываем Monocle.

  • Comprehensive Data Validation in Scala — и снова валидируем значения, навешивая ограничения на типы. На этот раз скрещиваем Validated с NonEmptyList.

  • Get Productive with Akka Streams — основы akka-streams с кратким введением в элементы экосистемы Akka: интеграция с акторами и alpakka-коннекторы.

  • Go-like channels in Scala: receive, send, and default clauses — продолжение статьи про Channel из основывающейся на Loom экспериментальной библиотеки для structured concurrency ox.

  • ZooKeeper-less Kafka — статья не о Scala, однако от этого не менее интересная! Softwaremill приоткрывают ширму того, зачем кластер Zookeeper был необходим в Kafka и как новые релизы функционируют без него.

  • What Is An Effect In Functional Programming.

Статьи по Scala 3

  • Scala 3 Macros: How to Read Annotations — небольшое и приятное погружение в API макросов и аннотаций в Scala 3. Учимся читать статические аннотации в теле макросов.

  • How to mine Scala 3 compiler metadata using TASTy files. Заголовок звучит довольно абстрактно. Сама же статья представляет собой ряд скриптов, в которых происходит получение названий артефактов, скачивание их содержимого через coursier, извлечение TAST файлов и их декомпиляция в source code Scala 3. Такие дела.

  • Signature polymorphic methods in Scala. Никогда не слышали про signature polymorphism? А он есть! Seth Tisue рассказывает о том, что это такое, какая была имплементация в Scala 2 и как переиначили реализацию в Scala 3.

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

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

  • YouTube Ziverge. На канале вышло несколько видео, среди них заключительный доклад с ZIO World от John De Goes об эволюции runtime. Однозначно рекомендуем к ознакомлению! Кроме того, Zymposium продолжает радовать новыми выпусками, в этот раз сфокусированными именно вокруг разрастающейся экосистемы ZIO.

  • Why I keep choosing ZIO! Как похорошел процесс обучения джунов при Scala 3 и ZIO 2.

  • What makes library docs great. Library review: Iron — призыв писать понятные документации к своим open-source-библиотекам. Разбор правильных решений и ошибок на примере iron.

  • Breaking framework chains with vanilla Scala.

Highlights

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

  • A Macro Almanac. Kit Langton держит обещание и продолжает писать свой путеводитель в мир макросов Scala 3. Можно подписаться на email-рассылку с новыми главами.

  • Healthful — небольшая библиотека, которая на отдельном HTTP-сервере запускает liveness/readiness-пробы для Kubernetes. Зависит только от core-модуля sttp.

Tooling

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

  • Metals v1.0.0 - Silver. Искали медь, а нашли silver. Первый мажорный релиз Metals. Если пишете на VSCode — возрадуйтесь, если не пишете — задумайтесь почему и выпейте кружку пива или чая за развитие тулинга в комьюнити Scala.

  • How to set up a Bazel testing configuration: The comprehensive guide for Scala and Java — дружелюбный к новичкам гайд по настройке среды для тестирования с помощью Bazel. Опытные пользователи найдут для себя несколько интересных фишечек.

  • automate refactoring with Bazel + Scalafix. Eugene Yokota — о том, как подружить bazel с semantic rules из scalafix. Никаких поверхностных обзоров — только хардкор, скрипты на bash- и bazel-макросы.

  • Best Continuous Integration Tools for 2023 ‒ Survey Results. Как еще раз напомнить всем, что у тебя есть такой продукт, как TeamCity.

  • scala-cli-repl: a Scala REPL based on scala-cli.

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

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

  • gRPC benchmark results — бенчмарки gGRPC-библиотек из разных языков программирования. Порадуйтесь за scala-akka, начиная с 4 CPU, гордо красующейся на первом месте!

  • Simpla - replacing the concept of killer app driven adoption. Автор, возможно, приверженец фразы про хлеб и пирожные: предлагает во имя популяризации Scala выпилить из нее все сложное и непонятное.

  • Scala Center Roadmap for 2023 Q3 — заголовок говорит сам за себя.

  • flatmappers #5.1, #5.2, #6.

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

  • Scala Digest #1

  • Scala Digest #2

  • Scala Digest #3

  • Scala Digest #4

  • Scala Digest #5

  • Scala Digest #6

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

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

Источник: https://habr.com/ru/companies/tinkoff/articles/751728/


Интересные статьи

Интересные статьи

Частичная функция (в отличие от полной) — это функция, которая определена не для всех возможных входных данных. Частичная функция g: A => B — это функция, для которой существуют некоторые значения ...
В РФ вот уже несколько месяцев подряд анонсируют различную электронную продукцию, которая предназначена для работы с отечественными процессорами. Это, например, ноутбуки, серверы, а теперь — и миниа...
Новогодние праздники — отличный повод пересмотреть любимые кинофраншизы. И чаще всего это либо «Властелин колец», либо «Гарри Поттер». А тут пару дней назад компания HBO подогнала отличный подарок фан...
В Scala широко используется подход к наделению классов дополнительной функциональностью, называемый type classes. К сожалению в текущей версии scala автоматическая генерация type class з...
В последнее время я часто слышу о том, что Java стала устаревшим языком, на котором сложно строить большие поддерживаемые приложения. В целом, я не согласен с этой точкой зрения. На мой взгляд, я...