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

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

Релизы

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

Tinkoff Scala meetup & open source

Рубрика для митапов и релизов библиотек и фреймворков, рожденных в недрах scala-комьюнити Тинькофф. Некоторые наши библиотеки форкнуло комьюнити и продолжает развивать своими силами, подобно перерождению pekko из akka :

Статьи

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

  • Limits of Loom’s performance — Adam Warski продолжает исследовать потенциал своей библиотечки абстракций над виртуальными потоками Ox. Разбирается, почему бенчмарки решения задачи на Loom сильно отстают от бенчмарков с корутинами из Kotlin.

  • Теория типов — огромная статья про теорию типов с кусочками кода на Scala. Плавное введение, изложение на приятном человеческом языке. Советуем почитать на досуге.

  • Getting started with ZIO, part 3 — заключительная часть серии, в которой написанный в предыдущих частях функционал покрывается тестами, используя фреймворк zio-test.

  • AI for programmers — перед вами письменная версия разговора в курилке с коллегами на тему AI. Кто что попробовал у себя в рабочих процессах и какие мысли на эту тему появились. Статья не про инструменты, а про субъективные выводы от их использования.

  • Web Scraping with Scala & ChatGPT — “Ask ChatGPT to explain web scraping…”, “Ask ChatGPT to suggest ways to improve your prompt…”. Интересно, а зарплату тоже ChatGPT будет получать? Мы стоим на пороге нового поколения статей, когда учат не основам предметной области, а тому, как задать вопрос AI-ассистенту. Эта — одна из первых по Scala.

  • Что такое класс типов? — мы поняли эту статью как попытку потрогать кусочек теории категорий и монаду через математические законы полугруппы объяснить, что тайпклассы — это не только интерфейсы с методом.

  • How to convert an Option to an Either in Scala — у этих ребят никогда не было проблем с объемом дипломной работы. На ScalaJobs вышла наилегчайшая статья о том, как превратить Option в Either.

  • How scala-cli Shines in Automation — ребята используют scala-cli для автоматизации рутины, интегрируясь с gitlab и slack, и радуются жизни.

  • In Scala 3, use 4 Spaces for Indentation — шалости кончились, говорим о ДЕЙСТВИТЕЛЬНО серьезных вещах или «спаси дерево — сожги книгу» зарабатывай больше — используй четыре пробела.

  • How to retry a Future in Scala — как запилить retry на Future. Если сами такое не писали, обязательно взгляните, как разбирается типовая ошибка с eagerness вычислениями. Вопрос открытый: насколько концептуально правильно в .fallbackTo передавать ту же Future. Тем не менее статья куда интереснее, чем о маппинге Option в Either.

  • Custom logic from Accept header with Tapir — небольшая статья с кусками кода, в которой показывается, как tapir умеет красиво работать с хидерами в запросах.

  • Rendezvous Benchmark Analysis: When Threads (Don’t) Meet — вдохновившись работой Adam Warski, автор статьи замерил свои бенчмарки работы потоков на нескольких системах эффектов. Итог — выиграла библиотека Kyo. Экспериментатор еще заметил, что медленная работа потоков может быть связана с постоянным и, возможно, излишним вызовом sleep и wake up операций.

Lightbend выпускают новый инструмент Akka Edge и подготовили серию статей, в которых:

  • What is Akka Edge? — рассказывают, какой класс задач он решает.

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

Новый год еще не настал, а нас уже любезно осыпали ворохом докладов с записями прошедших конференций. Возможно, в декабре вы будете не смотреть «Гарри Поттера», а любоваться магией вне Хогвартса в рамках scala-мира.

Делимся обещанным сторителлингом со Scala Days:

Дисклеймер: обзор не всех докладов, сделан при посильной помощи коллег:

  • Martin Odersky — Scala’s Role in the Programming Languages Ecosystem — Martin Odersky делится достижениями своего любимого детища — Scala. О том, что было. О том, что есть. О том, что будет.

  • Daniel Ciocirlan — Lessons from Teaching Scala to 80,000 People — наверное, многие знают Rock the JVM как платформу с качественным образовательным контентом. Имея за плечами большой опыт преподавания, Daniel Ciocirlan решил поделиться тем, как выстроить план обучения и структурировать информацию так, чтобы ее было легко и интересно воспринимать.

  • Maciej Gorywoda — The State of the IntelliJ Scala Plugin 2023 — нечасто встретишь выступления от разработчиков Scala Plugin в IntelliJ Idea, а ведь это ключевая разработка в экосистеме языка. Maciej Gorywoda показывает фишечки плагина, делится деталями внутреннего устройства и рассказывает о проделанной работе.

  • Haoyi Li — A Deep Dive into the Mill Scala Build Tool — широкий обзор билд-тула Mill от Haoyi Li! Стоит послушать, каким образом они совместили лучшее из sbt и bazel и получили простой и удобный инструмент для сборки.

  • Andrei Kucharavy — Universal Patterns of Evolution — интересный доклад про современный подход к теории эволюции и его применение к языкам программирования, с особым фокусом на ML и LLM.

  • Noel Welsh — Simple and Speedy UIs in Scala 3 — автор рассказывает о библиотеке на Scala 3, которая позволяет быстро и с минимальными усилиями создавать интерфейсы. Представлен комбинаторный подход к описанию и генерации пользовательского интерфейса, использование union types для решения expression problem и примеры реализации библиотеки с использованием особенностей Scala 3.

  • Jan-Pieter van den Heuvel — Saving Christmas Using Scala — о том, почему Scala — отличный выбор для решения Advent of Code. P.S: если не знакомы с активностью AoC, в комьюнити-движе есть анонс этого мероприятия.

  • Nicolas Stucki — Implementing a Macro — от кого, как не от создателя макросов, слушать о том, как правильно работать с метапрограммированием в Scala 3. Без соответствующей подготовки воспринимать на слух тяжело. Стоит относиться к докладу как к подробному комментарию к репозиторию и разбирать в первую очередь сам код.

  • Wojciech Mazur — Explaining Different Coroutine Flavours using Scala Native — о возможности добавить корутин в рантайм Scala Native с использованием трансформаций AST.

  • Chris Kipp — Closing Panel — дискуссия на самые горячие темы в мире Scala с Martin Odersky, Haoyi Li, Chris Kipp и другими участниками Scala Days.

Конференция F[Scala] прошла осенью на базе Вертикали.Яндекс — записи уже доступны: 

  • Позвольте уточнить — решаем задачу навешивания ограничений на значения полей в Scala 3. Сначала самописно, а затем сравниваем, как это можно решить с помощью библиотеки iron. 

  • R&D: Динамические SQL-запросы на Scala в рамках проблемы text-to-sql — под специфичные шутки коллеги из госсекора слушаем доклад, как они в команде написали NLP дляSQL-запросов, используя графовую базу данных TypeDB.

  • Alien: Typesafe DSL для доступа к Java foreign memory API — освещается использование примитивов памяти с гарантиями компилятора и представлена библиотека для удобного доступа к offheap-памяти из кода на Scala.

  • DDD Aggregate — идея DDD Aggregate, обнаружение границ транзакционной консистентности и практическое применение на PostgreSQL и MongoDB.

  • Шансы на мэйнстрим — считаете ли вы, что Scala умирает? Вадим, один из ведущих подкаста flatmappers, c докладом о будущем Scala. Доклад не технический, но очень рефлексивный, интересный, с позитивным мейнлайном, за вступление — отдельный лайк. Рекомендуется всем посмотреть и перестать ныть на Reddit-e.

  • Protobuf в движении — о внутрянке protobuf-дескрипторов и их применении в межсервисном взаимодействии.

Northeast Scala Symposium — one more conferenсe: 

  • Где будет Scala через 10 лет? — пожаловались на «Джаву», на сложность поиска и выбора библиотеки под парсер-комбинаторы, рассказали про починку макбука и горячо обсудили доклад Мартина Одерски со Scala Days (ノಠ益ಠ)ノ彡┻━┻

  • Full-Stack ZIO by Daniel Ciocirlan — 5 декабря планируется трансляция с лайв-кодингом от Daniel Ciocirlan.

  • Helix and Scala — смотрите! Это же Eugene Yokota в телевизоре!

  • Ziverge YouTube Channel — за месяц на канале вышло немало материалов про имплементацию акторов на ZIO, в главных ролях — zio-http.

  • Idiomaticsoft YouTube Channel — открыли для себя новый обучающий канал. Предназначен для новичков в ФП, только пробующих Scala. Сейчас на канале три видео по теме ADT.

  • DevInsideYou YouTube Channel

  • A Load Balancer in Scala with Cats Effect and Http4s

Highlights

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

Библиотеки, вызывающие желание их потрогать:

Тренировочные проекты и демо:

Tooling

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

  • The Best of IntelliJ IDEA’s HTTP Client — для ultimate edition завезли «свой постман» в intelij idea. А именно: добавили http-клиент, grpc, graphQl и webSocket, а также пре- и постскрипты и генерацию запроса из OpenAPI спецификации!

  • JDK 21 and 22-ea on GitHub Actions — код-сниппеты github action от Yokota по тестированию вашего приложения на jdk 21 и 22-ea.

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

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

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

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

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

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