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