
Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.
Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ
Релизы
Собрали последние обновления популярных и полезных библиотек — кажется, кто-то все-таки сделал все обещанные дела после майских. Много интересных релизов с новым функционалом и оптимизацией старого, а еще с поломками обратной совместимости. Вот они:
-
scala-cli v1.0.0 — первый мажорный релиз! Выполнили все требования, чтобы стать официальным scala-runner.
-
cats-effect v3.5.0, v3.4.11 — ломающие изменения относительно Async и переработка механизма Timer. Обещают около 15—25% выигрыша в производительности!
-
sbt 1.9.0-RC3 — release notes от Eugene Yokota. Несколько изменений, включая текстовое меню команды sbt new, позволяющей создать темплейт проекта с различными конфигурациями.
-
zio-kafka v2.3.0, v2.3.1 — оптимизация производительности Consumer.
Tinkoff Scala meetup & open-source
Рубрика для митапов и релизов библиотек и фреймворков, рожденных в недрах scala-комьюнити Тинькофф:
-
Особенности сред исполнения различных систем эффектов в Scala. Наш коллега Никита Калинский написал статью о том, что творится под капотом у современных фреймворков для написания конкурентного кода в web-приложениях. Рассматриваются модели исполнения, лежащие в основе Cats Effect и ZIO, а также их сильные стороны и недостатки. Если не довелось ни разу заглянуть во внутрянку систем эффектов, в том числе Future, скорее всего, откроете для себя много нового. Рекомендуем к прочтению!
-
phobos v0.21.0 — обновили версии third-party-зависимостей и добавили поддержку Enum из Scala 3.
Статьи
Собрали свежие статьи, репозитории и исследования, которые показались нам интересными. В отдельный блок вынесли ресурсы, где авторы используют Scala 3. Enjoy:
-
Scala.js lenses, frontends, and server side rendering with an AWS Lambda Scala backend — подробный рассказ о том, как написать небольшую браузерную игрушку. Фронтенд на Scala.js + serverless и деплой через AWS S3 static-deploy, а бэкенд на классической Scala с развертыванием на AWS Lambda.
-
Kotlin Coroutines to Cats-Effect — Alexandru Nedelcu написал простую обертку котлиновских корутин в монаду IO.
-
Beginner’s guide to derivations in Scala — easy-level: деривация как инструмент. Что это такое и зачем это нужно.
-
Intermediate’s guide to derivations in Scala: Magnolia — middle-level: деривация через magnolia. Препарируем классический тайпкласс Show и реализуем его автовывод.
-
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.
-
One and Done: Embrace single-file JVM apps for speedy development — как изящно запустить и собрать в JAR/Docker-образ приложение без build-тулов. Рассматриваются scala-cli для Scala и jbang для Java.
-
One and Done part 2: Industry’s adoption of self-contained JVM applications — продолжение туториала выше. Пара секретов-советов, как удобно и просто организовать процесс работы с приложением AWS Labmda через scala-cli и jbang.
-
Build your vocabulary with Scala affixes — bi-, co-, di-…, или как выучить FP-азбуку.
Статьи по Scala 3
-
Are you sure your Scala 3 opaque types don’t instantiate? Вдохновившись докладом Magda Stożek’s на конференции Scalar, автор рассматривает под микроскопом opaque-типы и исследует, что с ними происходит на уровне байт-кода, с целью проверить, искуплены ли грехи value-классов, описанные автором ранее.
Видео и доклады
Собрали ссылки как на уже известные и популярные, так и на ноунейм-каналы и видео про 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, соберите и протестируйте его. Выйдите из зоны комфорта!
-
Scala.js Interoperability with TypeScript/JavaScript | Let’s talk about Scala 3. Пошаговый туториал о том, как на Scala.js написать сайт, который отрисует милую спиральную анимацию со Scala-логотипом.
-
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 и генерировать на их основе клиентский и серверный код, что облегчает поддержку различных протоколов взаимодействия.
-
Jacek Kunicki HAVE WE FOUND THE HOLY ENUM? Enumeration Scala 2 => ADT Scala 2 => Enumeratum Scala 2 => Enum Scala 3 => Java Enum (´・_・`)
-
Kasper Kondzielski WRITING SCALA OUTSIDE IF INTELLIJ IDEA. Если мем I use Arch btw — это про вас, пополняйте коллекцию собранных с нуля инструментов сборной солянкой neovim + treesitter + metals. Получасовая демонстрация того, на что способен этот зверь.
-
Gabriel Volpe FUNCTIONAL EVENT-DRIVEN ARCHITECTURE. Автор FEDA кратко о event-driven-архитектуре в функциональном мире Scala.
-
Daniel Beskin FIXING-UP PRODUCTION WITH PROPERTY-BASED TESTING. Daniel Beskin о преимуществах property-based-тестирования и о том, как с помощью этой методики команда провела расследование и нашла причину бага, потрясшего весь продакшен!
-
Kamil Kloch CATS EFFECT — DISPATCHER, SUPERVISOR, IOLOCAL. Мейнтейнеры cats-effect прорабатывают секцию с рецептами по интересным сценариям применения библиотеки. В докладе разбор трех из них.
-
Paweł Marks THE FUTURE OF SCALA. Представитель SIP-комитета рассказывает о том, что из себя представляет релизный процесс Scala 3 и какой путь проходит новый функционал от предложения до слияния со стабильной версией компилятора. Здесь же любопытная демонстрация интеграции новых фич компилятора с IDE.
-
Tomas Mikula CUSTOM STREAM OPERATORS MADE SAFE AND SIMPLE WITH LIBRETTO. Непростая для восприятия презентация библиотеки libretto, позволяющая конструировать кастомные операторы для работы с потоками данных.
-
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, проливают слезы на тему тяжелой жизни разработчика и ведут жесточайшие холивары:
-
About current debates about shrinking the Scala user base and the slow adoption of Scala 3 и обсуждение на Reddit с участием Martin Odersky и Daniel Spiewak.
До встречи через месяц! ♡\( ̄▽ ̄)/♡
Над дайджестом работали @Melkaya_150cm, @Ivoya, @tcarina. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>
ссылка на оригинал статьи https://habr.com/ru/companies/tinkoff/articles/739162/
Добавить комментарий