Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.
Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Релизы
Собрали последние обновления популярных и полезных библиотек за пару месяцев:
scala-cli v0.1.20 — добавлен Scala Toolkit — набор жизненно важных библиотек;
sbt v1.8.2 — фиксы для M1/M2/Aarch64 Mac и glibc 2.31/Debian 11/Ubuntu;
slick v3.5.0-M1 — спустя долгое время вышла новая версия;
finagle v22.12.0 — первое обновление за последние полгода;
cats-effect v3.4.5 — откат изменений Deferred[IO, A], спровоцированный утечкой памяти;
Tinkoff Scala open-source
Рубрика для релизов библиотек и фреймворков, рожденных в недрах scala-комьюнити Тинькофф:
mockingbird v3.4.0 - v3.5.0 — сервис гибкой эмуляции REST и GRPC-сервисов, а еще сервисов с интерфейсами-очередями. Облегчает жизнь, позволяя мокать или проксировать ответы стороннего приложения. В последних релизах добавились возможности использовать сегменты пути для поиска стейтов и скипать проверку сертификата на определенных хостах. Из доработок — отображение источника падения в ошибке, замена async-http-client на Armeria. Кроме того, предлагаем вам посмотреть доклад про mockingbird со стороны QA:
phobos v0.19.2 — эффективная работа с XML в Scala, реализованная через потоковый парсинг. Позволяет задавать структуру XML-документа через аннотации в case-классах и sealed-трейтах. В последнем релизе исправлен баг с параметрами higher-kinded type.
Статьи
В этом разделе делимся свежими статьями, репозиториями и исследованиями, которые нам показались интересными. В отдельный блок вынесены ресурсы, где авторы используют Scala 3. Enjoy:
Scala Resurrection — с чего же начать первый выпуск на Хабре? Правильно! С разгромного обзора экосистемы Scala от John De Goes, CEO компании Ziverge. Каждый получил камень в свой огород. От пакетного менеджера (maven) с его заточенностью под JVM до IDE — Intellij Idea с ее проблемами со Scala 3 и выводом типов, дающим результат, отличающийся от scalac-a, и VSCode + Metals с его периодическими багами. От akka с эпопеей перехода на платную лицензию до typelevel с вызывающими гнев коммьюнити высказываниями и своего детища — zio с разношерстной экосистемой и местами отсутствующей документацией. От «Почему все плохо?» до «Как же сделать так, чтобы было хорошо?».
Материал получился критичным, отрезвляющим и даже злым, но злость эта исключительно та же, что и у фаната футбольного клуба, когда год за годом не получается выйти в высшую лигу. В комментариях проявляются ростки самоорганизации, которые могут принести свои плоды.
Но нельзя верить, чтобы такой язык не был дан великому коммьюнити! (
И. С. ТургеневДж. ДеГуз)
Implicit parameters when to use them? Part 1 и Implicit parameters when to use them? Part 2 — хорошие статьи про механизм имплиситов в Scala. Детально разобрано использование имплиситов для передачи аргументов, а еще паттерн тайп-классов с качественными примерами и обсуждением применимости. Но не затронули более сложные кейсы с конверсиями и имплисит-классами.
Early adventures in ZIO land — матерый scala-разработчик делится опытом и ощущениями от первых шагов в мире zio. Статья солидная, затронуты довольно «неновичковые» темы вроде дебаггинга и профилирования и множество отдельных модулей экосистемы zio. Но считать полноценным туториалом по созданию приложения с нуля нельзя.
Deploy http4s on your domain with fly.io — в самом начале своего пути разработчика у @Ivoya, одного из авторов этого дайджеста, был насущный вопрос: как написать доменное имя в строке браузера так, чтобы попасть на тобой же написанный код серверного приложения? Эта статья дает один из возможных ответов. Пишем cats-effect + http4s + decline-приложение, пакуем в docker и деплоим на fly.io, попутно разбираясь с сертификатами и кастомным доменом.
fs2-kafka introduction: deserialization with careful error handling — о том, как написать небольшое приложение с cats-effect и fs2-kafka. Из интересностей — фокус статьи на том, чтобы никакое poison-pill-сообщение не выбило из колеи запущенный консьюмер.
ULID — Sortable Unique Identifier — о ULID (альтернативе UUID) и его генерации с помощью airframe-ulid.
Functional error-handling with stack traces — осознанный подход к созданию доменной системы ошибок в проекте.
Статьи по Scala 3
Scala CLI Tutorial: Creating a CLI Sudoku Solver — больше чем туториал с использованием scala-cli. Пишем простой судоку-solver — с тестами, форматированием и упаковкой в Scala Native. Без регистрации и СМС.
Видео и доклады
Собрали ссылки как на уже известные и популярные, так и на ноунейм-каналы и видео про Scala:
Vivisecting the Veil of Variance — Kit Langton, один из основных контрибьюторов zio с отличным рассказом о том, зачем нужна инвариантность и ковариантность в Scala (да-да, контрвариантность ожидаем в следующей серии).
Is FP Really That Easy to Reason About? (For Beginners) — о том, как работают map, flatMap и traverse и почему их присутствие в функциональном программировании — это услада или как достигается читаемость кода в Scala.
Embedding Generic Monadic Transformer into Scala | Ruslan Shevchenko | Lambda Days 2022 — Ruslan Shevchenko о том, какая теория стоит за dotty-cps-async.
1 Problem, 24 Programming Languages — решение алгоритмической задачи на 24 языках программирования. Душа болит за Scala, запуск которой неоптимально настроен на самом leetcode.com. Для сравнения попробуйте вернуть единицу (просто константа!) в ответе: на java 0 ms, а на scala ~ 600 ms.
Rock the JVM — прекрасный авторский канал Daniel Ciocîrlan. Испытательный полигон, где автор кромсает алгоритмические задачи, обкатывает как новые, так и уже известные библиотеки, а еще пробует нестандартные техники программирования в Scala. Практически к каждому видео прилагается пост-компаньон с блога.
Ziverge — официальный канал компании Ziverge, мейнтейнеров zio. Записи вебинаров, конференций, дискуссий, интервью и докладов.
#94: Scala: language with academic background and huge industry adoption — 256 секунд рассказа о том, что такое Scala.
Highlights
В этом блоке не всегда свежие, но зацепившие наш взгляд ресурсы под флагом «очумелые ручки». Авторы творят что-то интересное, необычное, но не обязательно полезное:
scala-torch — scala-аналог PyTorch в виде оберток над LibTorch для работы с нейронными сетями. Документацию пока не завезли, однако синтаксис максимально приближен к оригиналу. Тут же для заинтересованных прикладываем ссылку на TensorFlow Scala.
Tour of Scala — редизайн сайта со сборниками материалов по Scala. Во всех темах есть теоретический материал и интерактивный пример, интегрированный в Scastie.
zio-ulid — либа для генерации ULID в экосистеме zio. В разделе «Статьи» есть материал о том, что это такое.
Veautiful — фронтенд-либа, написанная для Scala.js.
Tooling
Кусочек дайджеста, где мы рассказываем о появлении новых и улучшении уже существующих инструментов для разработки:
Nix Flake for Scala — a Nix Introduction, Overview and Demo — туториал по настройке окружения для разработки на Scala с помощью пакетного менеджера Nix. Репозиторий с окружением.
Комьюнити-движ
Раздел курьезных и любопытных событий в мире scala-общества, и мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения — ждем вас в комментариях:
Sttp client 4: improving the developer experience — Adam Warski, CTO softwaremill, собирает обратную связь по изучению и использованию sttp. В планах — перелопатить часть api для упрощения работы. Подробнее о предложенных изменениях можно прочитать на GitHub.
Eugene Yokota Joins the Scala Center’s Advisory Board as a new Community Representative — Eugene Yokota, главный мейнтейнер sbt, стал новым
членом студсоветакомьюнити-представителем Scala Center.
sbt 2.x — первый пулл-реквест от Eugene Yokota по новой мажорной версии sbt, написанной на Scala 3.
Thank you for taking part in Advent of Code 2022! — итоги прошедшего Advent of Code. Приветствуется желание поделиться своими scala-решениями.
2022 Year of Scala Recap — рассказ о том,
как я провел летокак питонист Daniel Tan провел год, изучая и используя Scala в работе и домашних проектах. В конце — впечатления, которые оставил язык.
A new, reworked ScalaDoc is here! — масштабные визуальные доработки документации для Scala 3.
До встречи через месяц! ♡\( ̄▽ ̄)/♡
Над дайджестом работали @Melkaya_150cm, @Ivoya, @tcarina. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>