Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать. Собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Видимо, повышенная работоспособность авторов контента, вспыхнувшая после майских, подошла к концу. Люди разъехались по отпускам и конференциям, а потому в этом выпуске будет не так много материала. Но в этом плюс: есть возможность успеть прочитать-просмотреть все ⸜( ˊᵕˋ )⸝
Релизы
????Подобно тихому шелесту осенних листьев к нам падают свежие обновления библиотек ????
sttp v3.9.0 - v4.0.0-M4 — завезли поддержку pekko;
tapir v1.6.4 - v1.7.3 — завезли поддержку pekko;
cats v2.10.0 — первый релиз с ноября: оптимизации, фиксы и немного синтаксиса;
Tinkoff Scala meetup & open-source
???????????? Осень — пора увядания. В эту золотистую пору на неопределенное время увядает и эта наша рубрика — почтим уютным молчанием заблокированные github-учетки и ушедшие в public archive библиотеки и фреймворки, рожденные в недрах scala-комьюнити Тинькофф ????????????
Статьи
???????? Предлагаем разбудить в себе внутреннего студента и погрызть гранит науки вместе с авторами статей ????????
Slack Bot in Scala and 12 Ways to Run It — эксперименты с запуском slack-бота в разных средах исполнения и на разных платформах деплоймента. Стоит почитать хотя бы ради цитат вроде: I will spare you all the exhausting, painful, traumatic, agonizing, soul-crushing, morale-draining, and gut-wrenching details of setting up cross-compilation. If you want them, you can look into build.sbt, as long as you’re prepared for it to look back into you.
Native app development with sttp and Scala Toolkit — как же легко и просто стало собирать приложения на Scala Native с новым, модным и молодежным Scala Toolkit. И про старичка-sbt не забыли.
Getting started with ZIO, part 2 — продолжаем изучать ZIO. На этот раз строим потоковый сервис на вебсокетах, попутно затрагивая ZSTM в контексте structured concurrency и ZStreams.
Cats Effect vs ZIO — разбираются базовые особенности двух экосистем, читается на одном дыхании.
Principles of developing applications in Scala — обзор нескольких основных фич Scala, выросших из дизайна языка и культуры разработки на нем. Без приукрас, со ссылками на различные сопутствующие материалы.
Best Plugins For JetBrains IDEs — топ плагинов для Intelij IDEA по мнению softwaremill. Загляните! Скорее всего, найдете для себя парочку мемов. Ну и плагинов тоже (b ᵔ▽ᵔ)b
Cost of Boxing — в один прекрасный день John A De Goes написал твит о том, насколько высокая цена у абстракций в Scala и как прекрасен, безгрешен и безупречен в этом плане Rust. Но отважный jarekratajski нырнул в эту кроличью нору чуть дальше и бенчмарками показал, что выводы из твита справедливы лишь отчасти: современные дистрибутивы JDK и GraalVM умеют just-in-time выявлять подобные паттерны и устранять оверхед.
N-Queens Combinatorial Puzzle meets Cats — задача о восьми ферзях. На сайте представлены все возможные материалы выступления, кроме… самого выступления. Впрочем, код есть, слайды есть, коты и Scala 3 на месте.
Diving into ZIO Test ‘Aspects’: Streamlining Cross-Cutting Concerns in Testing — короткое введение в aspects из zio-test с перечислением основных возможностей. Помечаем тесты флакающими, замеряем время прохождения и выбираем среду исполнения.
Scala and the Future of Programming Languages: A Conversation with Lucas Kuczera — кликбейтный заголовок, но без конкретики в содержании.
Статьи по Scala 3
Exploring Scala 3 Macros: A Toy Quoted Domain Specific Language — отличная статья о том, как, уподобившись quill, написать свой compile-time транслятор из Scala в linux-утилиту awk. Основной фокус — введение в макросы Scala 3 и концепции Quoted DSL. Решают нетипичную и непростую задачу по сравнению с теми, которые обычно приводятся в документации и статьях с демонстрацией API-макросов. Напоминаем, что от самого автора quill есть подробный гайд, как сверстать такой проект с нуля. Но если по какой-то неизвестной редакции причине вы не хотите смотреть 10 двухчасовых эпизодов лайвкодинга, то можно начать как раз с этой работы!
Видео и доклады
????☕ Готовим плед, горячий шоколад и, уютно окопавшись в районе окон, смотрим подборку новых видео про Scala ????☕
Saint Scala-митап — наши коллеги из Яндекс Вертикали провели митап в славном городе Санкт-Петербурге и оперативно выложили запись происходившего. Три доклада:
В первом расскажут о реализации kafka + grpc CRM-сервиса с интересными деталями рабочих процессов и того, как принимались те или иные архитектурные и бизнес-решения.
Второй доклад вы могли видеть в июле, если посетили благотворительный Тинькофф ИТ-ФЕСТ в Казани. Но для пропустивших и адептов присказки «Повторенье — мать учения» — наш коллега Иван Лягаев с рассказом о Project Loom. Акцент на нетипичном подходе к работе с конкурентностью, принятом в экосистемах Scala, и сравнении их с тем, что дает Project Loom. Или, кратко, «Зачем нужна Scala, если есть Java 21».
Заключительный доклад — услада для любителей спойлеров и тех, кто любит трогать неизвестное и пробовать все новое. Автор на месяц погрузился в темные воды nightly-сборок и экспериментальных фич и принес нам выловленные жемчужины. Не упустите шанс узреть эволюцию языка на наших глазах и рождение возможных будущих киллер-фич!
OAuth Authentication in Scala with Http4s — Даниэль поясняет, что такое OAuth, как это работает и как это настроить в http4s. Не поленитесь заглянуть в блог RockTheJVM, где найдете целую серию статей об аутентификации/авторизации, включая сопроводительную к этому видео.
Ziverge — несколько рассказов о проекте Golem от «приглашенной» звезды John De Goes. Будьте аккуратны, Rust прилагается!
Недавно прошла конференция Scala Days 2023. В рамках эксперимента хотим предложить вам рубрику с индивидуальными рекомендациями редакции к просмотру. Не стоит воспринимать как топ докладов. Как минимум Daniel Spiwak и Haoyi Li стоит посмотреть из уважения! А остальных — из интереса ૮˶ᵔᵕᵔ˶ა
Рома посмотрел доклады, которые зацепили своим названием. Книги не принято судить по обложке, но кто в школьные годы делал по-другому?
Поэтому в честь приближающегося Дня знаний решил поступить аналогичным образом.
Mark Hammons — Slinc: A Library for Scala to C Interoperability — Mark Hammons рассказывает о своей библиотеке slinc для связи Scala и C. Это короткий обзорный доклад с перечислением проблем, которые пришлось преодолеть: маппинг структур данных, аллокации в JVM Heap и Native Memory и абстрагирование от платформы исполнения. На протяжении многих выпусков мы освещали некоторые статьи о разработке этого проекта, например про multi-stage programming или про паттерн containers. Если бы мы жили во вселенной Гарри Поттера, автора давно бы арестовали за использование темнейшей магии и чернейших хаков.
Ryan Peters — Writing a Database in Scala.js — о TinyDB, основанной на CSV браузерной базе данных. Ryan рефлексирует на тему трейдофов и концептов, лежащих в основе TinyDB. И, что еще интереснее, затрагивает принципы функционирования main loop из tyrian, а также проблемы, с которыми пришлось столкнуться при разработке на Scala.js.
-
Jack Viers — Testable Compiler Plugin Development in Scala 3 — плагины компилятора — нечастый гость среди докладов и статей. Еще реже можно встретить гайды о том, как надо писать такого рода код. И уж совсем редкая информация, передаваемая
от отца к сынуот разработчика к разработчику — тайна о том, что плагины можно и нужно тестировать. Разработчики из Xebia решили устранить эту ауру запретных знаний: рассказали о сущности плагинов компилятора и выложили в открытый доступ munit-compiler-toolkit — утилиту для тестирования с помощью munit, а также шаблон для g8 и утилиту для sbt.
Карина выбирала доклады покороче, чтобы вы точно успели все посмотреть!
Jamie Thompson — How does Incremental Compilation Work with Scala 3 — несмотря на то, что в Scala 3 уже встроена поддержка инкрементальной компиляции, есть куда расти! Создатели инкрементального компилятора для Scala 2 — Zinc — рассказали о принципах его работы, а также погрузили в мир экспериментального проекта Pipelined Building. Киллер-фича — возможность распараллелить компиляцию нескольких файлов, даже если один завязан на другой. Уже есть несколько радующих глаз бенчмарков.
August Nagro — Magnum: A “New Look” for Scala 3 Database Clients — презентация database-клиента, объединяющего в себе сразу три существующих паттерна, на которых построены существующие клиенты к базам данных: объектно-ориентированный подход, функциональный DSL и подход, основанный на описании запросов через строковую интерполяцию.
Настя старалась подобрать слабо связанные непосредственно с Scala доклады.
Выбирала те, которые будут интересны любому разработчику.
Maria Livia Chiorean — From Managing Scala to Managing People — профессия Scala-разработчика взрослеет
и идет в первый класс, и вот уже специалист с семилетним опытом работы рассказывает, как, зачем и почему важно становиться менеджером, тимлидом или ментором. Будет полезно послушать всем, чей уровень >= middle и кто чувствует в себе души прекрасные порывы по причинению добра окружающим.
Rafa Paradela — Monolith vs. Microservices — стрелочка поворачивается, и вот в 2023 году можно послушать о том, что не мазаны елеем эти ваши микросервисы и вообще, при монолите было лучше. Из доклада узнаете, какие компании вернулись с микросервиса на монолит, почему у них грустили разработчики и, возможно, HR тоже. А еще будет список признаков, по которым можно принять решение о не-переезде на другую архитектуру.
Integrating AI workflows into your project: Introducing Xef.ai — хайповоз Xebia останавливается на станции «Искусственный интеллект». Рассказывают про библиотеку, через которую можно взаимодействовать с существующими AI. Подробно демонстрируют каждую фичу и понятно объясняют на примерах с картинками. Сейчас доступно на языках Scala, Kotlin, Java.
Highlights
???????? Можно вечно любоваться милыми поделками школьников, сделанными из желудей и спичек. Но еще приятнее полюбоваться на opensource-проекты из аналогичных материалов ????????
inject — микробиблиотека (один файл!) для dependency injection. Работает лениво в runtime. Каких-то убийственных фич не обещают, что оправдано совсем минималистичной реализацией. Лайк за самое честное описание FAQ: that is, I have just asked them myself».
spark-setup — шаблон проекта на Spark для быстрого старта.
http4s-stir — небольшой мостик между Pekko HTTP и http4s для более плавной миграции на typelevel. Проект находится на стадии демо.
sbt-svelte — «Я честно не поняла, как Svelte связан с Play» © Карина.
ZIO Chat — теперь можно разгрузить ChatGPT и адресовать все вопросы, связанные с ZIO, в этот чат.
Tooling
???????????? «Мам, ты уже спишь? Я вспомнил, что завтра на урок труда нужно принести собранный проект» ????????????
AI Assistant Update — JetBrains в недавних релизах добавила AI-компаньона. Здесь же небольшой апдейт: новый файл .noai (aka .gitignore) для списка файлов, которые можно запретить смотреть вашему AI.
Комьюнити-движ
???????????? Мы обежали все цветочные лавки, чтобы собрать вам букетик из самых интересных новостей в мире Scala ????????????
Proper Specification for Match Types — «Что-то вумное с match types» © Рома.
Contribution Equals Impact: A Spotlight on Goldman Sachs - A Leader in Open Source Contributions — «Пока ваш аккаунт забанен на GitHub из-за санкций, есть времечко почитать эту статью о том, какой огромный вклад играют open-source библиотеки в Scala» © Настя.
flatmappers 7, 8.1, 8.2 — ребята продолжают обсуждать самые разные Scala и не-Scala вопросы. В седьмом выпуске разговор зашел про недавний релиз форка akka — pekko. Оказывается, это имя персонажа финского фильма в забавной шапке. По техническим причинам сложно во время подкастов показывать картинки, однако у нас такая власть есть:
До встречи через месяц! ♡\( ̄▽ ̄)/♡
Предыдущие выпуски:
Над дайджестом работали @Melkaya_150cm, @Ivoya, @tcarina. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>