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

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

Релизы

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

Статьи

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

  • com.lihaoyi Scala: Executable Pseudocode that’s Easy, Boring, and Fast — обзор экосистемы com.lihaoyi от самого автора. Фундаментальная статья, призванная показать, какая идеология стоит за всем набором инструментов. Fun fact: coursier и scala-cli тоже собираются на mill.

  • Java Volatiles — несколько заметок о volatile-переменных в Java от Alexandru Nedelcu. Здесь же реализация single-producer-single-consumer очереди сообщений. 

If you can understand why this sample is correct, you understand volatile variables

Статьи по Scala 3

  • Building a functional, effectful Distributed System from scratch in Scala 3, just to avoid Leetcode (Part 1) — мощная, а точнее, МОЩНАЯ статья по созданию распределенного сервиса подсчета слов в файле. Расписано с этапов формирования требований и построения диаграмм до этапов выбора технического стека и имплементации интерфейсов. Очень приятно читается: повествование не техническое и сухое, а наполненное рефлексией и субъективным мнением относительно мира программной разработки. Отдельно плюс в карму за отсылки к «Архиву Буресвета» Брендона Сандерсона ٩꒰。•◡•。꒱۶

  • Scala 3 Significant Indentation Woes: Sample — Alexandru Nedelcu ругает Scala 3.3.0. Отступы вместо скобок становятся нормой, и не всем это нравится.

  • Scala 3 Enums — Alexandru Nedelcu хвалит Scala 3.3.0. Работай с enum-ами правильно! |ʘ‿ʘ)╯

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

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

  • Ziverge — пополняется ряд записей докладов с ZIO World 2023. А еще новые интересности из Zymposium: ZIO HTTP 1.0, фича для подмены сервисов в R-параметре ZIO в рантайме и многое другое.

  • Learning Smithy/Smithy4s - YouTube series — серия туториалов по smithy4s: от сетапа проекта и разработки smithy-спецификации до подключения сервера и клиента. Напомним, что smithy4s — библиотека, позволяющая описывать спецификации API в формате собственного IDL и генерировать на их основе клиентский и серверный код.

  • SBT will never be the same!!! — DevInsideYou про sbt 2.0, а конкретнее про новое кэширование. Если коротко: возможно, новый подход позволит избавиться от sbt-shell вообще! Возможно, больше не будет необходимости во вкладочке Intellij IDEA “sbt shell” и это приведет к отмиранию части sbt-плагинов и более нативной интеграции с unix-like командами.

  • Rock the JVM — Шок! 42 способа авторизации, пошаговый туториал. Делайте это каждый вечер и… Реализация различных видов HTTP-аутентификации и авторизации в http4s.

Highlights

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

  • matrix-practice — можно ли параметризировать вектор его размером и производить индексацию без исключений, Option или Either? Да! Scala 3, compiletime и tuple-конструкторы в небольшом фан-проекте (ᵔ◡ᵔ)

  • Magnum: A new Scala 3 Database Client — новоиспеченный клиент к базам данных на Scala 3.3.0. Заявлена поддержка большинства баз данных, для которых есть JDBC-драйвера, loom-ready API и многие другие фичи.

Like in Zoolander (the movie), Magnum represents a ‘new look’ for Database access in Scala

  • Fx Calculator: A calculator for Android written in Scala 3.3 (and JavaFX) — ребята попробовали свои силы в Scala 3 + JavaFX в рамках создания калькулятора на Android.

  • zio-maelstrom — если никогда не слышали про набор упражнений в разработке распределенных систем Gossip Glomers, то самое время перейти по ссылочке. Но при чем здесь zio? А при том, что платформа для тестирования решений построена поверх Maelstrom, чьим клиентом и является zio-maestrom.

  • scala-sbt-codespaces-template — шаблон для Github Codespaces. Из коробки содержит Scala 3, sbt, Metals, Scala Syntax.

  • new lib: fs2-kafka-mock — небольшая либа для мокирования consumer и producer из fs2-kafka.

Tooling

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

  • bleep — brand new build tool. Из обещаний — молниеносный старт работы благодаря тому, что bleep скомпилирован в native image. Основывается на bloop-файлах и coursier. В качестве модели описания build-ов выбран yaml в противовес build as a DSL в sbt и build as a Scala code в mill. Для поддержки кастомных задач вроде Task в sbt используется специальная секция scripts, в которой указываются классы с run-методом. Есть интересная фича автоматического портирования build-файлов из sbt и удобная миграция sbt-плагинов в Scala код в виде специальной структуры, который может быть запущен через scripts-секцию bleep.

  • The Scala Toolkit — первый релиз Scala Toolkit! В набор вошли upickle и os-lib от com-lihaoyi, sttp и munit. Серия мини-туториалов по использованию инструментов прилагается.

  • tree-sitter-scala 0.20.0 — небольшая сводка новостей о tree-sitter-scala. Из интересного: добавили smoke-тестирование и рассказали пару историй о том, как нужно учиться на своих ошибках.

  • tree-sitter-scala 0.20.1 — наш коллега, Василий Морковкин, стал новым мейнтенером. Поздравляем!

  • Writing a GitHub Action with Scala.js — история о том, как ребята хотели написать кастомные Githib Actions, но столкнулись с дилеммой: использовать можно было либо Docker Container Actions, либо Javascript Action. Однако хитрый разработческий ум вспомнил о существовании Scala.js и о том, насколько легкой становится разработка скриптов с помощью scala-cli.

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

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

  • A New GraalVM Release and New Free License! — JVM-комьюнити делает успехи в поисках своего Грааля! В бесплатную лицензию завезли G1GC, profile-based компиляцию и прочие крутые фичи \(⁀▽⁀ )/

  • SCALAR Conference 2023 summary — краткая выжимка каждого доклада с конференции. Быть может, даже дотягивает до уровня наших комментариев в последних двух выпусках (。•̀ᴗ-)✧

  • Two More Old Cents on Scala 3 Migration — сколько нужно программистов, чтобы переехать на Scala 3. Довольно личный рассказ про то, к чему может привести R&D-направленность языка и его развитие без оглядки на требования индустрии. Интересный пример сотрудничества с VirtusLab: амбассадоры, включая Wojciech Mazur, оценили миграцию и сделали вспомогательный пулл-реквест.

  • The Scala 3 compatibility story — VirtusLab успокаивает трепещущее комьюнити тем, что пока не собираются делать Scala 4 и ломать совместимость в Scala 3.

  • flatmappers — вышел четвертый выпуск, разбитый на две части. Enjoy! ૮˶ᵔᵕᵔ˶ა

  • Is language “instability” really a reason for the lack of Scala adoption in the industry? — тред с комментариями о том, почему Scala так и не захватила весь ИТ-бизнес.

  • JetBrains Developer Ecosystem Survey 2023 — заходите и заполняйте опрос об опыте использования продуктов. Ребята умеют заинтриговать с первого вопроса.

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

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

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


  1. RAtioNAn
    03.07.2023 21:24

    Годно, спасибо.