A free, once-weekly Scala news flash. Easy to unsubscribe. Goes out every Thursday.
June 13th, 2024, ISSUE 536


Scala 3 improvements in Metals (and hopefully, IntelliJ IDEA)

Until recently, with Metals, your code had to be saved after each change for the type checking to take place. And for non-compiling code, there were issues with imports, completion and navigation. The great effort done by the Scala team at VirtusLab is working on solving this problem by creating BTASTy — "best-effort TASTy", a format that can support non-compiling projects!
Igal Tabachnik (@hmemcpy)
Purify Your Tests III: Lean, Mean Testing Machine

In the last part we saw how to make our code more declarative, and the tests more functional by introducing type parameters for the inner data flowing through our code. In this part we are going to make our test inputs leaner.
Daniel Beskin
12 years of the com.lihaoyi Scala Platform

The com.lihaoyi platform is an ecosystem of Scala tools and libraries that allow you to write Scala in a way that is easy, rather than powerful. This post discusses the history of the com.lihaoyi platform, how it came about and evolved over the past decade, and what role I think it may play in the future of the Scala language.
Li Haoyi (@li_haoyi)
Scala Is Not Going Anywhere

As data engineering continues to evolve, Scala remains a key player in the field.
Nilesh Kowadkar
OpenTelemetry With Scala Futures

This is an example project in Play that shows how to manage OpenTelemetry together with Scala Futures, and some of the problems involved.
Will Sargent (@will_sargent)


Lambda World. Oct 2nd - 4th, Cadiz, Spain

Don't miss he largest Functional programming event in South Europe!
Lambda World (@lambda_world)


Growing Oxen: Channel operators and retries

In this session, Jacek will guide you through two recent additions to Ox that he helped implement: channel operators and retries.We will begin by exploring the principles of interacting with Ox channels, including how to send and receive elements, and how to signal completion or errors. Then, we will build an operator from scratch to understand the guidelines for creating your own operators. In the second part, he will delve into the design process of one of Ox's resiliency mechanisms: retries. We will discuss the goals, choices, and potential future improvements of this feature.
Jacek Kunicki (@rucek)
Gears: Asynchronous Programming in Direct Style Scala

Gears is an experimental asynchronous programming library for Scala 3.
Nguyen Pham
Implementing Multithreading in Scala Native

One of the core Scala domains is scalable, concurrent, or parallel data processing, which typically at some point is powered by JVM Threads. However, the Scala Native - an ahead-of-time compiler and runtime for Scala, was for a long time limited to only a single thread of execution. At first glance, it might have sounded like it a not a big deal. Starting system threads is easy...but then, suddenly, you need to deal with memory models, garbage collections, synchronization, data atomicity, and many more blockers, just to provide the same semantics as JVM ensures.
Wojciech Mazur (@Wojciech_Maz)
Tapir Tutorial - part 2: Generating OpenAPI docs

Welcome back! In this episode we'll add auto-generated OpenAPI docs, and browse them using the Swagger editor. We'll also start uncovering some details of how Tapir integrates with various Scala stacks.
Adam Warski (@adamwarski)
Comparing Approaches to Structured Concurrency

There are many approaches to concurrency all with different ways of handling cancellation and errors. Structured Concurrency is an approach that makes typical fan-out and fan-in use cases like races, easier to manage especially when sub-tasks need to be canceled or can produce errors. This talk will compare different approaches across a variety of languages and frameworks. The audience will pick from a long possible list of approaches, including: Scala (with ZIO, Ox, Kyo), Java with Loom, Kotlin (Arrow, Coroutines, Splitties), Python (various), Rust (Tokio or Futures).
Adam Hearn (@adamhearn_ @_JamesWard)


chimney 1.1.0

Updated Scala 2.13 to 2.13.14, replaced Scala Native 0.4 with Scala Native 0.5, made the order of pattern-matching in sealed trait/enum transformation deterministic, replaced hardcoded dependency on DSL's runtime overrides storage from macros internals.
chimney contributors
Soundness: Guillotine

Using Guillotine, we can define a new shell command, and run it, leveraging the power of Scala 3.
Jon Pretty (@propensive)
Soundness: Iridescence

Iridescence implements several algorithms for working with colors represented in different forms.
Jon Pretty (@propensive)

Simple tools for working with data streams in LazyLists in Scala.
Jon Pretty (@propensive)

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. Scala Times Issue #528

    Lean Scala: Reddit discussion. Learn Functional Programming The Fast Way!. Caliban on Tailcalls's GraphQL benchmarks. LambdaConf, May 4th-10th, Estes Park, Colorado. LambdaConf - The Grand Hackathon Finale, May 10th.

  10. Scala Times Issue #527

    How implicits are useful . ScalaWAW #32, Apr 18th, Warsaw. LambdaConf, May 4th-10th, Estes Park, Colorado. LambdaConf - The Grand Hackathon Finale, May 10th. ScalaMatsuri, June 7th-9th, Tokyo, Japan.

  11. Scala Times Issue #526

    Announcing the Scala Ambassadors initiative. Supporting high-performance response streaming in Shardcake. IntelliJ Scala Plugin 2024.1 Is Out!. LambdaConf, May 4th-10th, Estes Park, Colorado. ScalaMatsuri, June 7th-9th, Tokyo, Japan.

  12. Scala Times Issue #525

    Scams in the Scala Community update. Why we bet on Scala at SwissBorg. Capture Checking in Scala 3.4. Why Effects libs? . Benchmarking Tapir: Part 3 (Loom).

  13. Scala Times Issue #524

    Tapir dropping Scala 2.12 support. Scala 3 Roadmap for 2024. Leveraging sbt remote caching on a big modular monolith. Krzysztof Ciesielski - My Scala Story. The Montréal Effect: Why Programming Languages Need a Style Czar.

  14. Scala Times Issue #523

    Zainab Ali - My Scala Story. Handling errors in direct-style Scala. Scala 3.3.2 post-mortem analysis. Distributed Context Propagation with otel4s. Pre-SIP: Improve Syntax for Context Bounds and Givens.

  15. Scala Times Issue #522

    The Functional Programming in Scala Course Is Out!. Shipping your code to cloud with Scala, Besom and Pulumi. Flavors of shared state in Cats Effect. Pekko Akka Compatibility. Benchmarking Tapir: Part 2.

  16. Scala Times Issue #521

    What to do with your End Of Life Akka?. Introducing Playwright-jsEnv for unit testing in scala-js environments. The holy graal of GitHub Actions. Gabriel Volpe - My Scala Story. Game development in Scala.js with David Smith.

  17. Scala Times Issue #520

    My team built and productionized a custom rate limiter in Scala. Benchmarking Tapir: Part 1. WebSockets in Http4s. Improving my Distributed System with Scala 3 (Part 2). Tomas Mikula - My Scala Story.

  18. Scala Times Issue #519

    Debugging session #1: zio-logging & quill. Scala Developer Advocate open hours - AMA . Better Shell Scripting with Scala-CLI. C-style for loops in Scala 3. Paweł Marks - My Scala Story.

  19. Scala Times Issue #518

    Scala Center Roadmap for 2024. Maciej Gorywoda - My Scala Story. Vladyslav Pekker - My Scala Story. Nicolas Rinaudo - My Scala Story. Adam Warski - My Scala Story.

  20. Scala Times Issue #517

    #1BRC in Scala & Scala-Native. Errors happen. Can we get rid of them using ZIO Test?. Scala IO, Feb 15th-16th, Nantes, France. Functional stream processing workshop before Scalar, Mar 20th, Warsaw, Poland. Scalar, March 21st - 22nd, Warsaw, Poland.

  21. Scala Times Issue #516

    GraphQL in Scala: Handling side effects. Type class constraints in object algebras. Migrating event sourced Akka application from CockroachDB to AlloyDB. Jakub Kozłowski - My Scala Story. Scala 3: My migration journey.

  22. Scala Times Issue #515

    Deriving Tail Recursive Fibonacci. Virtual Threads Looming with Adam Warski. Scala Meetup, Jan 31st, Hamburg, Germany. Scala Meetup @ MOIA feat. VirtusLab, Feb 1st, Berlin, Germany. Scala IO, Feb 15th-16th, Nantes, France.

  23. Scala Times Issue #514

    Kotlin from Scala perspective: Advent Of Code 2023. Partially applied functions and currying. GraphQL in Scala: Advanced Schema Generation. Async File IO. Update NextDNS with a Scala CLI script.

  24. Scala Times Issue #513

    Scala 2 Macro Tutorial. A Beginner's Guide to GraphQL in Scala. Writing modular application using the Kyo library. What Can Scala Learn from Rust?. Scala IO 2024, Feb 15th-16th, Nantes, France.

  25. Scala Times Issue #512

    Scala's great ecosystem. What Can Scala Learn from Rust?. Scala IO 2024, Feb 15th-16th, Nantes, France. Scalar 2024 CFP, March 21st-22nd, Warsaw, Poland. LambdaConf 2024, May 4th-10th, Estes Park, Colorado.

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