Prerequisites
Before you begin, make sure you have the following installed:Java 21
Required and enforced at build time. Java 21 is needed for Kryo reflection used in binary serialization.
SBT
Scala Build Tool — the primary build system for the project.
Docker
Required for the Docker-based test environment (
just test, just up).Clone and set up
Clone your fork and add upstream
Clone your fork locally, then add the upstream remote so you can sync changes:
Verify Java 21
Confirm you are running Java 21:The output should report version 21. If not, install Java 21 and ensure it is on your
PATH.JVM options
The repository ships a.jvmopts file that SBT picks up automatically. It configures the JVM heap and compiler settings for the build:
These settings are applied automatically when you run
sbt. You do not need to set them manually.IDE setup
The recommended IDE is IntelliJ IDEA with the Scala plugin. To enable automatic scalafmt formatting on save within IntelliJ, follow the JetBrains scalafmt integration guide. This ensures your code is formatted consistently with the project’s.scalafmt.conf settings before you commit.
Nix flake (alternative)
For contributors who use Nix, the repository provides both aflake.nix and a shell.nix that set up the full development environment declaratively, including the correct Java version and tooling.
