Привет, Хабр! Мы — Рома, Настя и Карина, и мы почти год выпускаем Scala Digest на этой площадке!
Со временем подготовка каждого выпуска стала походить на фабричное производство. У нас есть налаженный процесс: мы просматриваем материалы и оставляем комментарии. Но мы все еще горим идеей и продолжаем идти к цели, традиционно озвученной в шапке каждого выпуска: «Свою мотивацию мы черпаем из желания развиваться и делиться полученными знаниями».
Мы решили чаще делиться своим мнением, не пытаться успеть разобрать весь материал и добавить чуть больше нестандартных повествовательных приемов и мемов. Будем экспериментировать с форматом. Stay tuned!
Релизы
??А что это под елкой? Может, поездка на теплые курорты? Или долгожданный набор Lego? Присмотритесь внимательнее! Это Дед Мороз принес поддержку pekko в вашу любимую http-либу! ??
scala-cli v1.1.0 — breaking update;
All JetBrains Coding Tools 2023.3 — включая Scala Plugin. Обзор новых фич в сопутствующем видео;
endless v0.27.0 — добавлена поддержка Scala 3;
Статьи
❄️?️⛄Мы, подобно метели, засыпаем вас снегопадом из самых морозно-свежих статей! ❄️?️⛄
Scala Native and Swift: building Twotm8 MacOS app — «Building a MacOS app using Swift, delegating some logic to Scala Native». Шикарнейшая статья о том, как скрестить ежа с ужом, причем так, чтобы оно при этом ползало, шипело и запускалось на MacOS. Есть решения нетривиальных вопросов и рассуждения о
Священной Римской ИмперииC ABI, Protobuf и моделях памяти в комплекте. Как вишенка на торте, еще и сам проект частично билдится через mill. P. S. в блоге есть еще горстка очень крутых постов © Рома.Writing a Chat With Akka — после смены лицензии akka поток статей с использованием акторного подхода начал сокращаться, но для общего образования и утоления научного интереса стоит такой подход потыкать-потрогать. В статье пишется простой websocket-чат на typed-акторах и тестируется с помощью Postman-a и Simple Web Socket Client. Кроме того, у этого же автора нашли крутую статью про video streaming.
Collaborating on Docs: Best Practices and Strategies From JetBrains Writers — JetBrains о том, как использовать подход docs-as-code для работы с документацией средствами IDE Jetbrains и git-а. От члена нашей редакции, который внедрил смежным командам такой же подход: «Живем и наслаждаемся каждой задачкой».
Entry 1: fs2, gRPC, Triton Inference Server — вторая статья в серии. Очень круто смотреть на переплетение Machine Learning со Scala. Снова про AI, но не о том, как написать к очередной нейронке хороший промт, а о том, как развернуть свой собственный сервис по уже обученной модели и написать к ней клиент. С большим интересом следим за автором.
F-bounded polymorphism in Scala — редакция читала статью так: «Что? Что творится? Ничего себе! Ну и дела!» К сожалению, по этическим соображениям не можем прикрепить ссылку на оригинал мема про игрока в Counter Strike на YouTube.
ლ(¯ロ¯"ლ) , (・_・) и ヽ(°〇°)ノ на такое:
case class ListInfo[T](
infos: List[Info[T]]
) extends Info[List[T]] {…}
ChatGPT log - Monads Explained — некий Anonymous принимает экзамен у ChatGPT на знание монад.
Navigating Through the Storm — общими словами рассказывают неочевидную для новичков концепцию о том, как умирающий сервис добивается ретраями соседних приложений. Накидываются некоторые ключевые термины для предотвращения такого исхода. Но складывается впечатление, что статья сводится к «делойте хорошее а плохое не делойте спосибо».
Designing a (yet another) retry API — Jacek Kunicki (нет, не Adam Warski) взял библиотеку Ox и прикручивает к ней ретраи.
The compilation cost of implicits — отличная статья от автора typo. Во время анализа бенчмарков процесса компиляции для сгенерированного кода трех database-библиотек была обнаружена интересная аномалия. Скорость компиляции для doobie на Scala 2 и Scala 3 отличается в 2—3 раза. Потом исследуются причины и способы устранения таких расхождений. Всем библиотеководам на заметку!
gears. First experimental release — «я чет устал уже копаться в тыще библиотек для structured concurrency. Но лайк за кросс-платформенность и поддержку виртуальных тредов» © Рома.
Сложные русскоязычные статьи про вычисления на уровне типов в Scala 3? Дайте две!
Scala: структура данных в пространстве типов — множество — представьте ситуацию. На собеседовании в компанию интервьюер произносит заветные слова: «Реализуйте, пожалуйста, структуру множества и базовые операции в ней». Вот оно, наше время блистать! Пора продемонстрировать всю мощь type-level программирования!
P. S. Не рекомендуется использовать на собеседованиях, если вы все же хотите найти работу.
Scala 3 Metaprogramming: реализация списка с известным на этапе компиляции размером — мы начали новый виток спирали развития и вернулись к… массивам с известными на этапе компиляции размерами. Но не все так просто! В статье разбирается, как на уровне типов до разумного предела контролировать размер списка. Просто посмотрите, как красиво ложатся сюда literal types и техники метапрограммирования. К слову, концептуально очень схоже c matrix-practice.
А сюда мы спрятали все еще интересные статьи, которые могут заинтересовать.
Видео и доклады
??♂️ Для многих людей уже традиция пересматривать все части Гарри Поттера в предновогоднее время. Но мы принесли кое-что получше! ??♂️
flatmappers 13: Доклад и Космополитен — солидная часть подкаста была посвящена технологиям древних, вышедших из обихода фреймворков, а также различным инструментам сборки и запуска.
Хотим подсветить интересную технологию — Cosmopolitan Third Edition. Эта штука позволяет один раз скомпилированный код, написанный на любом GCC-языке, запускать на разных платформах без перекомпилирования. Выглядит как что-то, в чем хочется покопаться на выходных. В завершении подкаста ребята анонсируют появление у себя площадок для сбора донатов на хостинг и для осознания того, что вещают не в пустоту. Давайте поддержим ребят, они стараются.
Scala Wrapped — небольшое подведение итогов года от Вадима Челышова, Василия Морковкина и Евгения Веретенникова.
И еще несколько интересных видео:
Highlights
✨? Ведь, если звезды зажигают — значит — это кому-нибудь нужно? Вот и вам россыпь звездочек на необъятном небе github-а ✨?
otavia — «Я клоп и признаю со всем принижением, что ничего не могу понять, для чего все так устроено. Разработчики сами, значит, виноваты: им дана была акторная модель, они захотели наследование с полиморфизмом и похитили объектно-ориентированный подход с небеси, сами зная, что станут несчастны, значит, нечего их жалеть» ©
Ф. Достоевский «Братья Карамазовы»Рома.
Blazing Fast Native JVM Serialization: Putting Fury JIT and GraalVM Native Image AOT together — топ-3 аниме-кроссоверов за 2023 год.
Eval — встроенный в язык интерпретатор scala-кода, поданного в виде строки.
Kojo: A Scala based programming and learning environment for kids — прикольный проект, в который интересно потыкаться (просто запустите car rides!). Проект позиционируется как обучающая платформа для детей. Есть несколько подготовленных шаблонов простых игр, туториалы и методичка для преподавателей за 6 $. «Если бы я вела кружок Scala для самых маленьких и хотела обучить своего ребенка, то обязательно заглянула бы сюда. Жаль, нет своих детей, чтобы протестировать» © Настя.
Еще немного ресурсов под флагом «Очумелые ручки»:
Tooling
??️ Те, кто не попробовал за прошлый год ни одного инструмента из этой рубрики, рискует получить уголь вместо подарочков ??️
IntelliJ IDEA: Explore project structure with the Dependency Matrix — ребята из команды Intellij IDEA встроили морской бой прямо в IDE! Пожимаем руку за крутые фичи.
Комьюнити-движ
??? Каждый год хочется прожить ярко, с кучей положительных воспоминаний. Люди и заметки этой рубрики наполняют мир Scala эмоциями и впечатлениями. ???
December Adventure — видимо, Advent of Code уже прошлый век, теперь в центре внимания December Adventure.
December Adventure A. Nedelcu — нежно обожаемый мной Alex Nedelcu в качестве челленджа в рамках December Adventure решил учить Rust. Rust забирает лучших из нас © Настя.
Чуть позже A. Nedelcu опубликовал небольшие заметки о Rust.
December Adventure E. Yokota — смотрите, как выглядит типичный месяц мейнтенера билдтулов.
hyperparameter optimization (2023.12 mixtape) — плейлист
для жесткой… оптимизации гиперпараметровот Eugene Yokota с интересным названием. Для чего бы он ни был.student-projects from scalacenter — Scala Center периодически предлагает студентам темы для дипломных или семестровых работ. Разбираются, как горячие пирожки: на момент выпуска дайджеста свободной осталась одна тема. Отличная возможность связать выпускную работу со Scala, причем с ее низкоуровневой частью.
Today is one of those days that I am grateful and happy for using Scala — пост, полный любви и признательности Scala. Хочется видеть подобное чаще.
К концу года подвезли результаты опросиков и репорты с мероприятий:
The State of Developer Ecosystem 2023 — Настя с Кариной подобны бриллианту, ибо, согласно собранной JetBrains статистике, входят в 5% женщин-разработчиков. Впрочем, читатели тоже могут попробовать найти себя в цифрах. К примеру, 73% разработчиков испытали выгорание в своей карьере ┐( ̄ヮ ̄)┌
Scala - The State of Developer Ecosystem in 2023 Infographic — а здесь чистая инфографика по нашему любимому ЯП.
До встречи в следующем году! ♡\( ̄▽ ̄)/♡
Теперь вы можете поделиться собственными материалами!
Предыдущие выпуски:
Над дайджестом работали @Melkaya_150cm, @Ivoya, @tcarina. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>