Привет, Хабр! Мы — Рома, Настя, Карина — приветствуем свежую кровь в нашей небольшой, но уютной команде! Эвелина присоединилась к нам месяц назад с горящими глазами и желанием нести Scala в программистский народ. Естественно, в качестве первого испытания Эвелина ходила с томиком Одерски по офисам ИТ-компаний и спрашивала: «Верите ли вы в функциональную парадигму?»
Мы рады видеть новых бойцов в наших рядах и уверены, что сможем делать дайджест еще лучше. А вы можете поделиться собственными материалами — мы опубликуем их и скажем вам спасибо в следующем выпуске ?
Релизы
Собрали последние обновления популярных и полезных библиотек за пару месяцев:
akka 24.05 — 22 мая Akka выпустила новую версию с номером 24.05, упустив прекрасную возможность создать магию чисел (╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻
Эвелина
Могли бы и два дня подождать 。゜゜(´O`) ゜゜。
zio 2.1.1 — выпустили первый серьезный релиз после 2.0.X-версий. Прокачали рантайм, сломали совместимость по части автоотслеживания blocking-операций. Подключайте аккуратно!
Статьи
В этом разделе собираем свежие статьи, репозитории и исследованиями, которые нам показались интересными. В отдельный блок вынесли ресурсы, где авторы используют Scala 3. Enjoy:
Safe direct-style Scala: Ox 0.1.0 released — поздравляем Adam-a Warski с первой готовой к использованию версией библиотеки Ox!.
IO effect tracking using Ox — на небесах только и разговоров что о IO и о новой библиотеке Adam-a Warski.
Integrating callbacks with structured concurrency in Scala — а вот и первые ласточки, летящие в сторону прекрасной Ox.
Tuning ZIO for high performance — статья от текущего мейнтейнера zio о том, как тюнить performance zio-приложения. Минимум воды, максимум полезных и малоизвестных трюков с фреймворком. Отдельно хочется заметить, что Pierre Ricadat знает, о чем пишет: не каждый раз De Goes оставляет под pull request-ом первым комментарием слова “Fantastic work!”.
Make Invalid States Unrepresentable — ставшая классической тема, как эксплуатировать систему типов для валидаций данных. От наиболее нетипизированного представления любых данных в виде String до newtype и refined.
How to build AI apps with Scala 3 and Besom — “The AI app itself is obviously a very limited PoC built to impress readers”. Проект, демонстрирующий, казалось бы, все извращенные способы использования Scala 3, в том числе и развертывание самого приложения в облаке, с помощью Besom. А если хотите больше подобного контента, предлагаем к изучению статью на blog.indoorvivants.com.
Spec-first and code-first, hand in hand — один из авторов экосистемы Smithy4s славно накодякал, да так, что вам не надо разрываться между подходами spec-first или code-first, а радостно
быть извращенцемиспользовать оба одновременно.Direct-style Effects Explained — хайповоз Scala продолжает движение по маршруту «Better Java — Лучший язык бэкенд-разработки». Следующая станция — «Алгебраические эффекты». Солидная статья о том, как Scala 3 продолжает развиваться в сторону еще большей типобезопасности и local reasoning.
Purify Your Tests и Purify Your Tests: 2 Parametric, 2 Declarative.
«Делаем тесты чистыми функциями и избегаем мутабельных моков» (с) Эвелина
«Я увидела var и убежала с визгом» (с) Настя
On Modern Error Handling (Not Just in Java) — дедушка Java услышал что-то о модных этих ваших
тиктокахмонадах в интернетах и хочет себе такую же красоту: «хотя бы в jdk 50». Ну или хотя бы Try в ближайших релизах ∠( ᐛ 」∠)_ В общем, в статье вы найдете много мемов о хаскеле, внезапные комментарии на польском и многое другое.
А сюда мы спрятали еще парочку интересных статей:
Видео и доклады
Собрали ссылки как на уже известные и популярные, так и на ноунейм-каналы и видео про Scala:
Zymposium - How to Build an OSS Library that Provides Golden Testing — запись прямого эфира в рамках Zymposium, в котором можно было предложить идею новой ZIO-библиотеки и начать имплементировать ее в режиме лайф-кодинга вместе с
отцом-основателемсамим Джоном де Гузом ?В этот раз писали новый модуль для снэпшот-тестирования (aka Golden Testing).
Making ZIO-Kafka Safer And Faster — презентация об улучшениях zio-kafka от самого мейнтейнера. Из интересного — пофиксили дублирование сообщений при ребалансе, добавив механизм отложенного выполнения, который дожидается, пока все сообщения в очереди не будут обработаны. Подробности можно почитать в этом changelog-е. Мы уверены, что многие даже не знают об этой проблеме! Расскажите маме и коту!
flatmappers 019. Оригинальные подходы в сборке Scala проектов и Yтка-DB — ребята продолжают экспериментировать с опенингами (b ᵔ▽ᵔ)b. Обсудили скам в Scala-сообществе, поделились прелюбопытнейшим тредом на Reddit-е с вопросами-ответами от Scala-адвоката, а также затронули тему sbt remote caching, которая особенно актуальна в последнее время в связи с возвращением тренда на монолиты. Упомянули DuckDB как средство самого комфортного просмотра Parquet-файлов.
Подъезжают записи конференции SCALAR. Плейлист содержит больше десяти часов отборного контента, чтобы вы в полной мере ощутили мощь языка, которому исполнилось 20 лет! Каждое видео по-особенному прекрасно и заслуживает внимания. Наше внимание привлекла следующая пара:
Tomasz Godzik SCALA TOOLING ECOSYSTEM Scalar Conference 2024 — неполный, но и далеко не скромный список тулов, используемых в экосистеме Scala. С каждым тулом идет в комплекте сводка о том, насколько этот инструмент жив, какие функции хотят добавить и как помочь развитию проекта.
Alexandru Nedelcu ELEMENTS OF JVM CONCURRENCY Scalar Conference 2024 — Alexander Nedelcu снова засветил лицо в прямом эфире и рассказал про концепцию конкурентного кода. Доклад полезный, не громоздкий, слушается на одном дыхании.
А сюда мы спрятали еще немного интересного:
Tooling
Кусочек дайджеста, где мы рассказываем о появлении новых и улучшении уже существующих инструментов для разработки:
What’s New in IntelliJ IDEA Ultimate 2024.1 — завезли кучу небольших апдейтов. Вроде бы маленькие, но такие приятные!
New package scala-repl in MELPA for Scala developers — расширение Emacs для интерактивной работы с sbt/mill/scala-cli-проектами, или как это корректно называется? Надеюсь, кто-то из трех с половиной пользователей Emacs нас читает и поправит в комментах!
Highlights
В этом блоке не всегда свежие, но зацепившие наш взгляд ресурсы под флагом «очумелые ручки». Авторы творят что-то интересное, необычное, но необязательно полезное:
sbt Android plugin — плагин с функциональностью sbt для разработки приложений под платформу Android. Нам, конечно, пока ничего не понятно, но очень интересно.
Martin Odersky и адепты его учений из EPFL продолжают экспансию в сторону безэффектного стиля программирования в Scala 3. Библиотека gears для асинхронного кода с поддержкой мультиплатформенности добралась до стабильного релиза и обзавелась шикарной документацией Gears Book. Не все намеченные главы уже написаны, но даже так она сопоставима по объему с документацией всего языка (¬ ‿ ¬).
Как можно узнать из главы Basic Concepts, в основе всего лежит введенный концепт Async-контекста, передаваемого в функцию в качестве имплицитного аргумента. Приводит ли это к той самой проблеме «раскрашенных функций»? Ответ: и да, и нет.
С одной стороны, действительно все методы теперь можно разделить на async-методы и обычные, с другой же — проблема сглаживается тем фактом, что это имплицитный контекст, эргономику работы с которыми активно дорабатывают в новых версиях Scala 3. Вспомнить хотя бы недавний холиварный SIP от Мартина. Более того, обещают бесшовную интеграцию Async-а с интерфейсами коллекций стандартной библиотеки!
Чтобы не выкидывать на помойку уже интегрированную в куче мест концепцию Future / Promise — завезли аналогичные интерфейсы gears.async.Future и gears.async.Future.Promise. А еще целую гору мощных абстракций, построенных поверх Async и Future/Promise.
Так и хочется увидеть сравнительный обзор ox и gears от их авторов.
Комьюнити-движ
Раздел курьезных и любопытных событий в мире Scala-общества, и мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения — ждем вас в комментариях:
A Statement. Jon Pretty — внезапно в комьюнити-движе действительно комьюнити-движ. По названию можно подумать, что это поэма какого-то британского поэта, но нет — заявление автора magnolia, когда-то отмененного из-за старой драмы. Долго думали редакцией, стоит ли как-то комментировать, и в итоге сошлись на одном: странно видеть такие голливудские разборки в крайне небольшом и тесном профессиональном сообществе разработчиков.
Developer Ecosystem Survey Insights: A Comparative Look at Students and Professionals — анализ различий в ответах на опрос 2023 между группами студентов и профессионалов. Краткий вывод: работяги работают, студентики учатся.
До встречи через месяц! ♡\( ̄▽ ̄)/♡
Предыдущие выпуски:
Над дайджестом работали @Melkaya_150cm, @Ivoya, @tcarina, @EvieLynn. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>
mike_aksarin
Будущее наступило!
Direct style на хайпе захватывает все