tooling

Saturday, February 13, 2021

- PST
Reproducible environments for Scala using coursier
Join Stream

The CLI of coursier, cs, offers a convenient way to install both JVMs and Scala applications. cs itself is a native binary with no dependencies, is available on all major platforms, and can get you started with installing and running Scala tools in minutes. It can be useful to setup your local development environment, but also from scripts, or on your CI.

Until now, the first concern of cs has been ease-of-use. But what about reproducibility? cs rests on the core of coursier, and reproducibility / “purity” has always been a central concern in the core modules of coursier. Could this help recovering reproducibility in the higher level features of the coursier CLI?

In this talk, we are going to first showcase what cs, the coursier CLI, can do, and how it can be useful on your local machine, from scripts, and on your CI. Then we’ll discuss how we can make invocations of cs reproducible and what newer options are available to help for that.

- PST
Who is testing your tests?
Join Stream

Curious to know how good your tests are? There’s an easy way to find out: use mutation testing!

Most of us use code coverage to measure how effective our tests are. But what does code coverage really mean? How many times have you seen a test with a missing assertion or even assertions in comments? This is where mutation testing will help you. A mutation testing framework inserts small bugs into your code, hoping that your tests can spot them.

In this talk, you will learn the basics of mutation testing, and how you can use it in your Scala projects with Stryker4s, the mutation testing framework for Scala.

- PST
A Deep Dive into Scala Native Internals
Join Stream

When Scala Native was first announced it opened many new possibilities for multiple different areas of computing. For serverless and tooling it promised instant startup and low memory usage. At the same time, for low-level programming it offers interoperability with a multitude of C libraries.

Last year the Scala Center committed to taking care of this project, adding support for the latest Scala releases and extending it with new features. Thanks to cooperation between VirtusLab, the Scala Center and community contributors, Scala Native is now back on track with high hopes for a small revolution in the Scala ecosystem. This talk covers my experience of working on the Scala Native team, and shares what I have learned about Scala and the native ecosystem, as these two worlds come together.

During the talk we will discuss: * working with compiler plugins * how Scala Native differs from alternative solutions * how native is different from the JVM * LLVM and how Scala Native uses it * how Scala Native’s design decisions influenced its advantages and limitations

Additionally I will discuss the current status of Scala Native as well as its roadmap in 2021.

- PST
Truly standalone Scala scripts
Join Stream

Let’s face it: if you want to quickly hack a script for use by somebody else, Scala is rarely the first choice. Unlike Bash and Python, the essential dependencies (Java Virtual Machine, Ammonite) are usually missing on the target operating systems. This leaves you with a dilemma: should you instruct your users to install the missing bits or should you ship something, that they’ll run instantly (Bash, Python)? I think this is one of the reasons, why most of the common helper scripts is not being written in Scala. That is a shame. TSK - The Scripting Kit (https://github.com/tsk-tsk/tsk-tsk) aims to change that. With TSK you can create a Scala script that is instantly self-installable-and-executable after you save it and set the executable bit. You achieve that by prepending your Scala code with a special preamble, which consists of shell commands disguised as a Scala comment. You end up with something that works on multiple systems from the get-go and is nicely editable with IDEs at the same time. A scripting nirvana!