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

READING

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)

EVENTS

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

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

VIDEOS

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)

RELEASES

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)
Turbulence

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





  1. Scala Times Issue #557

    What is Functional Programming?. Announcing Akka 3. Idiomatic dependency injection for ZIO applications in Scala. ZIO in 2025. Upcoming Changes to Givens in Scala 3.7.


  2. Scala Times Issue #556

    Benchmark results: jsoniter-scala vs simdjson-java . Scalar 2025 extends call for papers!. Scala.IO, Nov 7th-8th, Paris. Functional Scala CFP, Dec 5th, online event. 10% discount for Scala Times readers for Functional Scala conference!.


  3. Scala Times Issue #555

    (In)Validating Library Design. Postmortem of Scala 3.6.0. How to implement LETS on ChainCash. Scalar 2025 extends call for papers!. Scala.IO, Nov 7th-8th, Paris.


  4. Scala Times Issue #554

    SoftwareMill Open Source Bounties. Scala: a mature open-source project. Folding Cheat Sheet #8 - Folding with Monoids . Simple Contract-First Applications. Scalar 2025 extends call for papers!.


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


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


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


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


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


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


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


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


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


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


  15. Scala Times Issue #543

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


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


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


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


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


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


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


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


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


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


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


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.