A free, once-weekly Scala news flash. Easy to unsubscribe. Goes out every Thursday.
May 23rd, 2024, ISSUE 533

READING

Apache Pekko becomes a Top-Level Project

Leading framework for building applications that are concurrent, distributed, resilient and elastic graduates to TLP.
Apache Software Foundation
Scala Meetup at Evolution

A few weeks ago, Functional Software organized a Scala Meetup together with Evolution.
Functional Software Stockholm
Purify Your Tests: 2 Parametric, 2 Declarative

In the last part we learned how to purify our tests using type parameters. In this and following parts we'll see some further benefits of adding type parameters this way.
Daniel Beskin
Introducing TARP Stack – Tapir, React and PostgreSQL

I'm really excited to demonstrate how productive you can be with this tech stack. Let's start building, shall we!
James Jiang (@jamesjg_)
IO effect tracking using Ox

The broader goal of the IO capability feature is for method signatures to be truthful and specify the possible side effects, failure modes, and timing of methods in a reasonably precise and practical way.
Adam Warski (@adamwarski)
Announcing Business4s: a new value proposition for Scala

We have an incredible language and rich ecosystem. Now it’s time to build on top of that.
Voytek Pituła (@Krever01)

EVENTS

ScalaMatsuri, June 7th-9th, Tokyo, Japan

The largest international Scala conference in Asia.
ScalaMatsuri (@ScalaMatsuri)

VIDEOS

Uncovering the benefits and challenges of ZIO2 and Scala 3 at Wolt

Wolt has a vibrant Scala community where software engineers use a variety of patterns and frameworks to build services. One common pattern is using ZIO2 and Scala 3 to build small, simple, and could-native microservices quickly. In this talk, Thomas will go through the benefits and challenges of this approach as well as how the approach fits into Wolt's infrastructure and co-exists with other approaches.
Thomas Harper
Explore your Smithy models with the CLI

This video outlines the capabilities of the Smithy CLI, and goes in depth on using it to get information about your shapes with selectors and the model AST.
Jakub Kozłowski (@kubukoz)
Exploring build caching: a practical overview

Recording from Scalar Conference 2024. In this talk, we will start with the basics, understanding what build caching is and why it can be a bit tricky to handle in real projects. Looking at a quick history of build caching in Scala, we will see how it has evolved and how you can leverage existing build caching capabilities in sbt today. I’ll share some practical insights on making the most of build caching when using sbt. Finally, we’ll look at what the future holds for build caching with sbt 1 and 2 and see how you can prepare for it.
Martin Duhem (@mnduhem)
The debatably Free monad

The purpose of this talk is to re-invent `Free` from first principles. Along the way, we'll touch on a variety of useful topics: defunctionalisation, interpretation, and how to figure out how to implement thorny functions by merely looking at them as paths in a graph.
Nicolas Rinaudo (@NicolasRinaudo)

RELEASES

Akka 24.05

Key ares: Zero Trust, Security and Compliance; Performance through Database sharding, Java 21 is now certified, Akka Edge Rust and enhancements for Edge use cases.
Lightbend (@lightbend)
munit 1.0.0

This was long time coming and finally we are out of milestones and ready for a new chapter of munit. New features: async support for fixtures, introduce "strict equality" mode for asserts, make printers more easily configurable, diff module extracted to a separate module.
munit contributors
chimney 1.0.0

Release 1.0.0 is the culmination of 7 years of development. Congratulations!
chimney contributors
sttp-openai 0.2.0

New client version switches to the v2 OpenAI API.
SoftwareMill (@softwaremill)
Metals 1.3.1 - Thallium

Resolve classpath lazily in Bazel, replace slowTask with LSP progress, support for starting Metals for a single file without a workspace.
Metals contributors
Soundness: Wisteria

Wisteria is a generic macro for automatic materialization of typeclasses for datatypes composed from product types (e.g. case classes) and coproduct types (e.g. enums). It supports recursively-defined datatypes out-of-the-box, and incurs no significant time-penalty during compilation.
Jon Pretty (@propensive)
neotype 0.2.13

Now with support for Caliban and Chimney.
Pierre Ricadat (@ghostdogpr)
kyo 0.10.0

This version introduces new major features and important fixes!
kyo contributors
urlopt4s

Allows you to remove ad/tracking query params from a given URL in Scala.
Daniil Sivak
sttp-oauth2 0.19.0

The project is now under the wings of Polyvariant, congrats!
Polyvariant
virgil-kyo

Virgil is a functional Cassandra client built using Kyo, Magnolia and the Datastax 4.x Java drivers for Scala 3.
Calvin Lee Fernandes (@cal_fern)
sus4s

A Direct-Style Scala Wrapper Around the Structural Concurrency of Project Loom.
Riccardo Cardin (@riccardo_cardin)
Soundness: Quantitative

Quantitative represents physical quantities with a generic Quantity type, an opaque alias of Double, which statically encodes the value's units in its type parameter. This provides all the desirable homogeneity constraints when combining quantities, with the performance of Doubles, and without compromising on intuitive syntax for arithmetic operations. Quantities can be multiplied and divided arbitrarily, with new units computed by the compiler, and checked for consistency in additions and subtractions.
Jon Pretty (@propensive)





  1. Scala Times Issue #553

    Direct-style concurrent streaming. Open com-lihaoyi issue bounties. Scala Project Maintenance Survey. Scalar 2025 extends call for papers!. Scala.IO, Nov 7th-8th, Paris.


  2. Scala Times Issue #552

    Optimal Scalafmt configuration using Genetic Algorithms. Cancellable HTTP requests via Scala's Tapir. Game of Life with Scala.js and Webassembly. Scala without effect systems. The Martin Odersky way.. Scalar 2025 Early Birds!.


  3. Scala Times Issue #551

    Functional Programming in Scala - Edu Plugin. Inline your boilerplate - harnessing Scala 3 metaprogramming without macros. Scalar 2025 Early Birds!. Lambda World, Oct 2nd - 4th, Cadiz, Spain. Art of Scala, Oct 10th, Warsaw, Poland.


  4. Scala Times Issue #550

    Autowire: Zero-Cost Dependency Injection. Another bunch of com.lihaoyi Mill issue bounties. Comparison of Kyo and traditional effects. Scala & Akka: How to secure your code. Fun with Types: All Types of Physics Computations.


  5. Scala Times Issue #549

    Capabilities for Control. Scalar 2025 Call for Papers is open!. Unison Forall, Sept 20th, remote conference. Lambda World. Oct 2nd - 4th, Cadiz, Spain. Call for Speakers - Art of Scala, Oct 10th, Warsaw, Poland.


  6. Scala Times Issue #548

    Perfect Tab Completions. David's programming examples knowledge base. Writing an Android app with Scala.js. Unison Forall, Sept 20th, remote conference. Lambda World. Oct 2nd - 4th, Cadiz, Spain.


  7. Scala Times Issue #547

    Streaming Hash Computations. Launch Scala, faster than Native. Distributed locks in Kubernetes with Scala. The Future Software Engineer. Lambda World. Oct 2nd - 4th, Cadiz, Spain.


  8. Scala Times Issue #546

    Upcoming Changes to Givens in Scala 3.7. Unexpected Scala Functions: groupMap. Lambda World. Oct 2nd - 4th, Cadiz, Spain. Call for Speakers - Art of Scala, Oct 10th, Warsaw, Poland. Scala.IO, Nov 7th-8th, Paris.


  9. Scala Times Issue #545

    ZIO-like dependency injection using implicit resolution. The Mechanics of Mitigation. Publishing test traces to Grafana using otel4s and weaver. Announcing Decisions4s: When Ifs Are Not Enough. State of structural typing support in Scala 3.3.0.


  10. Scala Times Issue #544

    Direct-style Bootzooka: 2024 update | SoftwareMill. The Tri-Z Architecture: a Pattern for Layering ZIO Applications in Scala. The Error Management Manifesto. Migrating to Safety. Benchmarking database sharding in Akka | @lightbend.


  11. Scala Times Issue #543

    Lambda World. Oct 2nd - 4th, Cadiz, Spain. Metals v1.3.4 - Thallium | Metals.


  12. Scala Times Issue #542

    Effective Error Handling. Developer Ecosystem Survey 2024. Pseudorandom Acts of Kindness. Scala 3 Metaprogramming Learning Resources. Scala to WebAssembly: How and Why.


  13. Scala Times Issue #541

    Tapir documentation improvements. Checked exceptions: fixed!. Use cases for Scala. ScalaWAW #33 - beach party! Jul 25th. Lambda World. Oct 2nd - 4th, Cadiz, Spain.


  14. Scala Times Issue #540

    PureConfig with Scala 3 - Tutorial. Developer Experience in Open Source Software. "Learn Functional Programming The Fast Way!" PDF is free. ScalaBridge London @ SiriusXM!, Jul 18th. ScalaWAW #33 - beach party! Jul 25th.


  15. Scala Times Issue #539

    YAML as a valid Scala 3 code. ExecutionContext.parasitic and Friends. ScalaBridge London @ SiriusXM!, Jul 18th. Lambda World. Oct 2nd - 4th, Cadiz, Spain. Faster and less mysterious sbt builds with Develocity.


  16. Scala Times Issue #538

    Make Impossible States Unrepresentable: Network Edition!. Ten things I like about Scala 3. Compiling Bad Code. The ZIO 2 “mental model”. JetBrains course: Functional Programming in Scala.


  17. Scala Times Issue #537

    A Logic Circuit Simulator with Cats-Actors. Magda Stożek - My Scala Story. Lambda World. Oct 2nd - 4th, Cadiz, Spain. ScalaBridge London Jun 20th, 2024. Armored type safety with Iron.


  18. Scala Times Issue #536

    Scala 3 improvements in Metals (and hopefully, IntelliJ IDEA). Purify Your Tests III: Lean, Mean Testing Machine. 12 years of the com.lihaoyi Scala Platform. Scala Is Not Going Anywhere. OpenTelemetry With Scala Futures.


  19. Scala Times Issue #535

    GraphQL in Scala: Role-Based Access Control. WebSocket chat using structured concurrency, Ox & Tapir. Tapir tutorials, part 1. Scala 2.13 LTS planning. A Sighting of filterA in Typelevel Rite of Passage.


  20. Scala Times Issue #534

    Lagom is approaching end of life: possible migration paths. WebSockets in Scala, Part 2: Integrating Redis and PostgreSQL. Scala service combined with PostgreSQL, Flyway, Doobie, Ciris, IO(Cats Effects), Http4s…. Akka 24.05: More Security. More Performance. More Efficiency.. Forking and Interruption in ZIO.


  21. Scala Times Issue #533

    Apache Pekko becomes a Top-Level Project. Scala Meetup at Evolution. Purify Your Tests: 2 Parametric, 2 Declarative. Introducing TARP Stack – Tapir, React and PostgreSQL. IO effect tracking using Ox.


  22. Scala Times Issue #532

    Duchess at Scala.io. Purify Your Tests. Tuning ZIO for high performance. JetBrains Joins the Scala Center Advisory Board!. Introducing com-lihaoyi Issue Bounties.


  23. Scala Times Issue #531

    Que es un Higher-Kinded Type de Scala?. ScalaMatsuri, June 7th-9th, Tokyo, Japan. Custom-compile errors with a venegance. Data Engineering at Netflix using Apache Spark and Flink.


  24. Scala Times Issue #530

    Direct-style Effects Explained. How to build AI apps with Scala 3 & Besom. Spec-first and code-first, hand in hand. ScalaMatsuri, June 7th-9th, Tokyo, Japan. Direct Style Scala Stack - An Experiment.


  25. Scala Times Issue #529

    Jacek Kunicki - My Scala Story. Kalix tutorial: Building invoice application. Safe direct-style Scala: Ox 0.1.0 released. LambdaConf, May 4th-10th, Estes Park, Colorado. LambdaConf - The Grand Hackathon Finale, May 10th.


Organizing an event?
Promote it with
Scala Times.
The Scala Times reader?
Get a banner!
Got a tip?Send it in!
Follow us onTwitter.
Curated by SoftwareMill.
We are hiring.
And taking on projects.