In this talk, we'll cover the essentials of macros, why they are useful, why you should care about them, and how to become as good as you need with them for practical purposes.
Scala 3 macros are some of the least understood parts of the language, and some of the most powerful. In this talk, we'll cover the essentials of macros, why they are useful, why you should care about them, and how to become as good as you need with them for practical purposes.
You will understand:
- why inlines are great but often not sufficient
- the mechanics of a macro
- how to manipulate programs as values
- how to surface custom errors in the compiler
- essential pieces you can work with, including terms, symbols, types, trees and expressions
- how to make useful libraries with macros
- practical examples of macros at work
I will demonstrate how Pillars can take you from zero to production in record time. By leveraging Pillars’ integration of well-known libraries, you can bypass the usual complexities of setting up observability (traces, metrics, and logs), database access, API calls, and feature flag management.
In this talk, I'll walk you through coding and design practices I've developed over the years, whilst onboarding new graduates into world of Scala (be it typelevel based API, Spark based ETL, or ML pre and post-processings), and how I made the process easier for people who didn't have much Scala experience beforehand.
During the talk, we’ll build a small effect system using solely Scala 3 context functions step-by-step.
In this talk, I'll go through a couple of these projects, and share some of what they've taught me, as well as how their legacy affected other projects in the ecosystem. And who knows, maybe you'll get inspired to try something crazy with Scala too?
Case study. Summary of over a year of experience building AWS lambdas using Scala 3, scala-cli, and GraalVM. Presentation of the open-sourced library providing custom lambda runtime developed for that purpose.
Scala 3.6 stabilises the Named Tuples proposal in the main language. It gives us new syntax for structural types and values, and tools for programmatic manipulation of structural types without macros. Can we, and should we, push it to the limit? Of course! let's explore DSL's for config, data, and scripting, for a more dynamic feel.