There is a new #Scala 3 optics library worth checking out: cats-eo. It unifies optic families under a single trait, features macro derivation backed by Hearth and delivers massive performance gains (such as traversals running up to 11x faster compared to Monocle).
Mateusz Kubuszok
@kubuszok.com
Hearth Core Macro Hacker Blog @ https://kubuszok.com JVM-Scala Book @ https://leanpub.com/jvm-scala-book Chimney @ https://chimney.scalaland.io
This migration was an opportunity to benchmark the compilation and improve a thing or 2 in Hearth, so we're dropping new releases of: Hearth: github.com/kubuszok/hea... Kindlings: github.com/kubuszok/kin...
Release 0.4.1 - Compile-Time Performance, 30+ Fixes, and copyMethod / Expr.annotated / Type.Lazy APIs · kubuszok/hearth
0.4.1 is a polish and quality-of-life release. Chimney is now Hearth-powered — and it got there on 0.4.0, without waiting for anything in this release; where it met a rough edge it simply worked ar...
github.com
New Chimney(s) dropped: 1.x line supporting 2.12/2.13/3.3: github.com/scalalandio/... and 2.0.0-M4 supporting 2.13/3.8 freshly migrated to Hearth: github.com/scalalandio/...
New Chimney(s) dropped: 1.x line supporting 2.12/2.13/3.3: github.com/scalalandio/... and 2.0.0-M4 supporting 2.13/3.8 freshly migrated to Hearth: github.com/scalalandio/...
Release v1.11.0 · scalalandio/chimney
NoteThis release was sponsored completely by users' contributions! It will also probably be the last release in 1.x line where I contributed anything, and where changes were ported into the 2.x lin...
github.com
Hearth 0.4.0 once again is pushing the limits of what you can do with macros (without going insane): - reworked method callers that could let you build every call - expression destructuring enabling quicklens-like patterns - creating anonymous instance of an arbitrary type
There was no e-mail, and I learned it by accident, but I feel all #Scala OSS devs should learn ASAP: Maven is introducing publishing limits. We most likely will have to apply for exemption: - www.sonatype.com/blog/open-pu... - central.sonatype.org/publish/mave...
Open Publishing, Commercial Scale
Open source registries are evolving for commercial-scale use. Learn why Maven Central publishing limits aim for open access and sustainable infrastructure.
sonatype.com
Today we managed to push out Hearth 0.3.1 with support for evaluating Expr values without an actual compilation (semiEval). github.com/kubuszok/hea...
Release 0.3.1 - Expr.semiEval, Type.CtorK1, JDK Futureproofing, and a New Logo · kubuszok/hearth
The 0.3.1 release adds a few things to the 0.3.x line, that I didn't waned to wait with, but also ones that should not break existing libraries based on 0.3.0. (More exciting things to come in 0.4....
github.com
The recording of my @scalar-conf.com presentation about civilising #macros in #Scala is online! youtu.be/Hbknc_dc4KQ
Can we have the Standard Library for Macros? by Mateusz Kubuszok | Scalar 2026
YouTube video by SoftwareMill
youtu.be
Hearth aka the Scala unified macro for 2.13 and 3 has a new version out! 🎉 I'm definitely no macro expert, so go read the changelog yourself to see all the magic. 🪄 It's huge! github.com/kubuszok/hea... #scala
Release 0.3.0 - Standard Extensions, Union Types, Rules, Flame Graphs, MIO Timeouts, hearth-munit, and Much More · kubuszok/hearth · GitHub
This is the biggest Hearth release so far: a major feature release that introduces Standard Extensions — a pluggable type-inspection framework — along with union types support, rule-based derivatio...
github.com
I wanted to release Hearth 0.3.0 after Scala 3.3.8 is out, and Kindlings 0.1.0 after that. But overwhelmingly positive reception (and a horse head in my bed) convinced my to release them much earlier, so...
Last year: - at @scalar-conf.com I introduced sanely-automatic derivation with macros - at @scaladays.org I showed that macros in #scala can be tamed Now: I wanted to repeat the latter prez but with recent developments I had to update it! Join me on @scalar-conf.com to see new GOTY edition!
Thanks to Guo Yubin Chimney now supports NamedTuples! Grab it at: - github.com/scalalandio/... - github.com/scalalandio/...
Release v1.9.0 · scalalandio/chimney
Changelog: Add supports for NamedTuple (#766). by @ETCHKILI in #852
github.com
One more proof by construction that we can improve derivation in #scala with #macros: github.com/nguyenyou implemented sanely automatic derivation for Circe, and got some really nice numbers. github.com/nguyenyou/ci...
GitHub - nguyenyou/circe-sanely-auto: Sanely-automatic Encoder/Decoder derivation for Circe on Scala 3
Sanely-automatic Encoder/Decoder derivation for Circe on Scala 3 - nguyenyou/circe-sanely-auto
github.com
I wish cross-compilable macros, with potential to provide UX that mops the floor with all these shapeless/mirrors based-libraries were not just a hypothetical possibility... Oh, wait. Scala 2.13: scastie.scala-lang.org/MateuszKubus... Scala 3: scastie.scala-lang.org/MateuszKubus...
Claude just finished writing me a sbt codegen, which generates >17 000 lines of code of macros and compiler plugins... which would be expanded in other macros to provide cross-compilable type constructor representation. When I started Hearth I didn't expect to go so meta
On this day ten years ago, I gave my first public presentation... Fast forward ten years, I still suck :) kubuszok.com/presentation...
My presentations
Personally, just a
kubuszok.com
🔍 A thoughtful, down-to-earth look at what a shared macro library could mean for Scala developers. Here’s "Can we have the Standard Library for Macros?" by Mateusz Kubuszok
Mateusz Kubuszok: Can we have the Standard Library for Macros? [Scala Days 2025]
Do you like it when compiler generates the boring code for you? Fast, mundane, boring-but-error-prone code? Do you need to implement such a code generator yourself? Have you found out that Shapeless/Mirrors bend your brain a bit too much? Congratulations! You might have a valid use case for writing
youtube.com
🔍 A thoughtful, down-to-earth look at what a shared macro library could mean for Scala developers. Here’s "Can we have the Standard Library for Macros?" by Mateusz Kubuszok
Mateusz Kubuszok: Can we have the Standard Library for Macros? [Scala Days 2025]
Do you like it when compiler generates the boring code for you? Fast, mundane, boring-but-error-prone code? Do you need to implement such a code generator yourself? Have you found out that Shapeless/Mirrors bend your brain a bit too much? Congratulations! You might have a valid use case for writing
youtube.com
New video, with Łukasz Biały from @scala_space! https://www.youtube.com/watch?v=K_omndY1ifI
@scaladays.org videos are online! If you wish #scala #macros were a bit easier, and wonder what "this Hearth library" is about, go see: youtu.be/VOdeXTpw3m0
Mateusz Kubuszok: Can we have the Standard Library for Macros? [Scala Days 2025]
YouTube video by Scala Days Conferences
youtu.be
Hearth 0.2.0 just dropped continuing the quest for user-friendly macros. #scala #macros github.com/MateuszKubus...
Release 0.2.0 - Overall improvements, ValDefs builders and cache, Better Printers, more robust Cross Quotes and More · MateuszKubuszok/hearth
This release delivers the full scope planned for the 0.2.x milestone: refining everything introduced in 0.1.0, strengthening stability, improving ergonomics, and expanding documentation and tooling...
github.com
Welcome Mateusz Kubuszok as the #Scalarconf 2026 speaker! 🎙️ Can we have the Standard Library for Macros? 🎟️ Grab your ticket here: scalar-conf.com/tickets #scala #scalarconf #functionalprogramming
This is probably the most complete tutorial on typeclasses in Scala 3, it's basically a short book. Bookmark it, as it has everything: givens, derivation, mirrors, inline defs, macros... you name it. #scala kubuszok.com//2025/sanely...
I haven't blogged in a while, but this needed to be written: kubuszok.com/2025/sanely-...
Sanely-automatic derivation - or how type class derivation works and why everyone else is doing it wrong
In Scala, we generate quite a lot of code. A lot of that involves the compiler generating so-called type class instances. This mechanism is quite widespread, yet, very few people actually understand i...
kubuszok.com
Chimney 2.0.0-M2 for 2.13.17+ and 3.7+ just landed! * sanely-automatic derivation backported to 2.13 * aligned with featues/bugfixes up till 1.8.2 Try out, if you had any issues with semiauto on Scala 3.7 or if you want to test sanely-auto on 2.13! github.com/scalalandio/...
Release v2.0.0-M2 · scalalandio/chimney
Important Since Chimney got affected by 3.7.0 change in givens resolution we had to analyze the possible ways of fixing the issue. While there is a temporary workaround the proper fix requires rele...
github.com
Great thanks to all organizers of @scalaio.bsky.social! It was a great experience I am happy I could be there.
The first release is done, better macros are possible github.com/MateuszKubus...
Release 0.1.0 - Inintial release · MateuszKubuszok/hearth
It took longer than I hoped but 0.1.0 is live and with some scaffolded documentation. There are some gaps in the documentation, e.g. no examples for utilities usage, no mention of sources and debug...
github.com