Scala libraries

Scala libraries

Whenever I come I across a Scala library I take a note of it here. This collection is neither complete nor have I used all of these libraries. It is mainly used as a point of reference if I want to find some functionality implemented in a Scala library.

Akka

Server Sent Events for Akka HTTP

toy project implementing RAFT on top of Akka Cluster (not prod ready)

small library for building CQRS application using Scala in combination with Akka.

Akka/Spray for Large-Scale Production Deployments http://paypal.github.io/squbs

This library implements actor persistence for Akka Typed with event sourcing.

serialization toolkit written specifically for use with Akka Persistence.

A combinator library for integrating Functional Streams for Scala (FS), Akka Streams and Apache Camel

Android

modular functional UI language for Android

Asynchronous

Stack-safe asynchronous programming

Asynchronous, Reactive Programming for Scala and Scala.js. https://monix.io

Impromptu, a lightweight and typesafe async framework

Convert Task to Future, and Future to Task

AWS

Plugin to create enterprise-cloud applications leveraging SBT and the SAM component model (AWS Serverless Application Model (AWS SAM))

Better Errors

better implicit errors for scala

Friendly compile error messages for shapeless’s Generic, circe’s Encoder & Decoder and slick’s case class mapping.

Good advice for Scala compiler errors

sbt plugin to show a summary of compilation messages.

Blog - Documentation

tool for building multi-page HTML sites from Markdown sources

Programmable, Typesafe Document Generation

An sbt plugin to create awesome microsites for your project https://47deg.github.io/sbt-microsites/

Doctest for scala

(https://github.com/wookietreiber/sbt-scaliterate) generates Scala source code from a *programming book* written in  Markdown.

Build tools

Your shiny new Java/Scala build tool! http://www.lihaoyi.com/mill/

Scala build server and command-line tool for fast developer workflows https://scalacenter.github.io/bloop/

Warn or ban particular dependencies in a build to prevent usage.

Cache

resilient caching of any configuration/resources from an unreliable source

high-performance Java 8 based caching library providing a near optimal hit rate.

facade for the most popular cache implementations, with a simple, idiomatic Scala API.

Code Generation

Principled code generation for Scala services (from swagger)

A Thrift parser/generator http://twitter.github.io/scrooge/

Collections

wrapper for fast concatenation/iteration.

Compiler plugins

Compiler plugin for making type lambdas (type projections) easier to write

Scala compiler plugin for mutual tail recursion

plugin to build your application using dotty with Sbt support

The ildl-plugin is a meta-programming technique aimed at allowing safe, custom transformations across library boundaries.

Scala compiler plugin for annotation-based warning suppression

compiler plugin for analyzing the dependency structure of Scala source code.

Acyclic is a Scala compiler plugin to let you prohibit circular dependencies between files

Configuration

Scala-friendly companion to Typesafe config

boilerplate-free library for loading configuration files

Simple pure-scala Typesafe HOCON implementation using FastParse http://akka-js.github.io/shocon/

Provides a safe API for parsing settings objects out of Typesafe Config.

Lightweight, extensible, and validated configuration loading in Scala https://cir.is

Converters

correct and stable conversions between Task and Future

Cryptography

Cryptographic primitives for Scala

A small Scala library for easily generating hashes (md5, sha1, sha256, sha512, crc32, bcrypt, hmacs, pbkdf2)

Databases

Flyway by Boxfuse • Database Migrations Made Easy. https://flywaydb.org

principled database access for scala

Performant database access in Scala http://lucidsoftware.github.io/relate/

A Persistence Framework for Scala and NoSQL http://longevityframework.org

Cassandra

a wrapper for the Java Cassandra driver that allows extraction from a Row with Scala types, or directly into a case class. Also has utility functions for the Session to read/write to Cassandra directly to/from a case class.

Type-safe and Schema-safe Scala wrapper for Cassandra driver

Dynamo

Simpler DynamoDB access for Scala https://www.scanamo.org

Mongo

Compared to the ReactiveMongo’s macros, this project brings support for sealed traits ,recursive types

Postgres

A Modern Finagle-Postgresql Client http://finagle.github.io/roc/docs/

Redis

Redisson - distributed Java objects and services (Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Executor service, Tomcat Session Manager, Scheduler service, JCache API) on top of Redis server. State of the Art Redis client https://redisson.org

A(nother) Redis Client

non-blocking, ultra-fast Scala Redis client built on top of Akka IO.

Slick

Slick extensions for PostgreSQL

Shapeless HList support for Slick.

android backend for Slick

Slick extensions for record lifecycle management http://www.strongtyped.io/active-slick/

small Slick library for type-safe id handling

Type-safe data migration tool for Slick, Git and beyond.

Data Processing

A Scala API for Apache Beam and Google Cloud Dataflow. https://spotify.github.io/scio

Data Science

an efficient bloom filter for Scala doc

lightweight library to construct, sketch, train and evaluate Artificial Neural Networks

A DSL for creating complex neural networks

Bayesian inference in Scala.

Data analysis and math

Powerful new number types and numeric abstractions for Scala.

Breeze is a numerical processing library for Scala. http://www.scalanlp.org

Scala Data Library http://saddle.github.com

ScalaLab: Efficient MATLAB like scientific computing for the Java platform

Fast, Lightweight library for Information and Probability

NLP

Epic is a high performance statistical parser written in Scala, along with a framework for building complex structured prediction models. http://scalanlp.org/

Visualization

Visualization library backed by Breeze and JFreeChart.

The missing MatPlotLib for Scala + Spark

Machine Learning

A machine learning package built for humans. http://airbnb.github.io/aerosolve/

open-source implementation of Markov Logic Networks.

a machine learning framework prototype

TensorFlow API for the Scala Programming Language http://platanios.org/tensorflow_scala

Statistical Machine Intelligence & Learning Engine http://haifengl.github.io/smile/

Spark is a fast and general cluster computing system for Big Data. It provides high-level APIs in Scala, Java, Python, and R, and an optimized engine that supports general computation graphs for data analysis. It also supports a rich set of higher-level tools including Spark SQL for SQL and DataFrames, MLlib for machine learning, GraphX for graph processing, and Spark Streaming for stream processing. http://spark.apache.org/

PredictionIO, a machine learning server for developers and ML engineers. Built on Apache Spark, HBase and Spray. https://predictionio.apache.org/

Streaming MapReduce with Scalding and Storm https://twitter.com/summingbird

A simple library for creating complex neural networks http://deeplearning.thoughtworks.school/

Experimental typesafe tensors & deep learning in Scala https://ctongfei.github.io/nexus/

Scala.js bindings for TensorFlow.js. Train and deploy ML models in your browser with Scala.

Data Structures

concurrent data structures currently missing from the JDK http://jctools.github.io/JCTools/

Multisets for Scala

Data Transformations

Scala library for boilerplate-free data transformations https://scalalandio.github.io/chimney/ (for case classes)

A small library for converting between case classes.

Patch data type for Scala and shapeless

bamboomigrate is a typelevel transformation and migration library

Datetime

Provides type classes for datetime values. Works both on JVM & ScalaJS. https://vpavkin.github.io/dtc/api

Dependency Injection

a library to configure and wire Scala applications

Diagrams

Automatically generated diagrams and animations for Scala data structures http://stanch.github.io/reftree/

Dimensions

A dimensional analysis library based on dependent types

the Scala API for Quantities, Units of Measure and Dimensional Analysis

Enums

A small library for sealed trait enums.

A type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations.

yet another enumeration toolbox for Scala, powered by shapeless.

Scalanum - is the Enum and Bounded type classes implemented in Scala.

Functional Programming

mini Scala utility library that supports Validation, OK/KO Monads, Monad transformers, HLists, Union types

Scala macro for reasonable lazy semantics (evaluation is delayed and memoized)

data structures for pure functional programming in scala. see the completely incomplete documentation website:https://stew.github.io/dogs

A macro library that converts native imperative syntax to scalaz’s monadic expressions

Desugaring scala for without implicit withFilters

Operations for primitive and String singleton types

Automatic code generation for Scala functions and expressions via the Curry-Howard isomorphism

Leibniz equivalence and Liskov substitutability library for Scala.

Scalaz and Cats compatibility

Usage examples and benchmarks between Scalaz and Cats (w/ Haskell ground-truth). (Not a library , but a comparison between the most popular libraries Cats and Scalaz)

Functional UUID’s for Scala https://christopherdavenport.github.io/fuuid/

Cats

Lightweight, modular, and extensible library for functional programming. http://typelevel.org/cats/

small companion to cats. Mouse includes enrichments for Boolean, Option, String

Birds and cats together http://catbird.io This project provides cats type class instances (and other useful cats-related stuff) for various Twitter Open Source Scala projects.

Hacky applicative-style for comprehensions for Scala.

Library of utilities for tagless final encoded algebras https://typelevel.github.io/cats-tagless/

Cats instances for ScalaCheck data types

Automatic type class derivation for Cats

The IO monad for Scala https://typelevel.org/cats-effect/

typeclass diagram for cats (not a library , but a useful diagram for cats)

Eff monad

Eff monad for cats - http://atnos-org.github.io/eff

Produce a stream of elements using the Eff monad for effects

Monadic folds

Free Monads

a freaky simple Free to combine your DSL seamlessly

The goal of this library is to generate everything you need to create programs using Free monad, without boilerplate.

A cohesive & pragmatic framework of FP centric Scala libraries http://frees.io/

Fast [co]product types with a clean syntax. For Cats & Scalaz.

Functional Data Structures

data structures for pure functional programming in scala. see the completely incomplete documentation website: https://stew.github.io/dogs

Lenses - Optics

modify deeply nested case class fields

Optics library for Scala http://julien-truffaut.github.io/Monocle/

Pleasant, yet principled Scala optics DSL

Typeclasses

Defining typeclasses

first class syntax support for type classes in Scala

Providing instances of typeclasses

minimal infrastructure for type class providers to support the inclusion of derived, subclass and other orphan instances in their implicit scope.

Using typeclasses

compiler plugin which provides syntax for working with locally declared implicit values

Performance typeclasses runtime (imp-machinist)

macro for summoning implicit values

spire’s macros for zero-cost operator enrichment

Combining all the above

iintegration (or merge) simulacrummachinistimpexport-hook, and possibly other projects.

In From Simulacrum to Typeclassic, Michael Pilquist explains all these libraries.

Scalaz

Principled Functional Programming in Scala https://scalaz.github.io/

deriving for scala data types

ZIO — A principled, powerful, standalone effect data type for any Scala project.

Types

library for refining types with type-level predicates which constrain the set of values described by the refined type. http://refined.timepit.eu

NewTypes for Scala with no runtime overhead

Library for counting and enumerating things.

Compile-time-checked string pattern matching for Scala

Generic Programming

Generic programming for Scala

running wild with shapeless

Interoperability libraries for Shapeless http://typelevel.org between Shapeless, and Spire.

Graph

simple big graph processing library for the JVM

A reasonable library for modeling multi-graphs in Scala http://verizon.github.io/quiver/

Tools for rewriting and optimizing DAGs (directed-acyclic graphs) in Scala

Job scheduler

An embedded job scheduler.

Json

json library is the ultimate Scala JSON library. It doesn’t really do anything with JSON itself, instead, it abstracts over the following JSON libraries (which it calls backends)

Compile-time JSON marshaling and abstraction for Scala and Scala.js

Builds models from JSON Schemas

A conflict-free replicated JSON datatype (CRDT) in Scala https://fthomas.github.io/crjdt/

Yet another JSON library for Scala https://circe.github.io/circe/

uPickle: a simple, fast, dependency-free JSON serialization library for Scala https://lihaoyi.github.io/upickle

Jawn is for parsing jay-sawn (JSON)

Scala macros for compile-time generation of ultra-fast JSON codecs

Json Schema

JSON schema generation, validation and de-serialization for Scala classes

JSON Schema Validation with Play JSON

Scala JSON Schema

Builds models from JSON Schemas

Play Json

Reads, OWrites and OFormat derivation for algebraic data types (sealed traits and case classes, possibly recursive), powered by shapeless.

+22 field case class formatter and more for play-json

convenient syntactic sugar to combine monoidal structures (e.g. Reads, OWrites, OFormat), powered by shapeless.

validation api extracted from play

check also A survey of Scala JSON ecosystem and A quick tour of JSON libraries in Scala | manuel.bernhardt.io

JVM Classpath

show conflict classes in classpath. fork from https://github.com/todesking/sbt-conflict-classes

JWT

Scala support for JSON Web Token

Html

ScalaTags is a small XML/HTML construction library for Scala. http://www.lihaoyi.com/scalatags/

Scalate is a Scala based template engine which supports HAML, Mustache and JSP, Erb and Velocity style syntaxes. http://scalate.github.io/scalate/

lightweight logicless templating engine, written in Scala and inspired by Mustache

A purely functional and reactive UI framework based on Monix and VirtualDom http://outwatch.github.io

Http Client

simple Scala wrapper for HttpURLConnection. OAuth included.

an HTTP client for Scala with Async Http Client undernieth.

The Scala HTTP client you always wanted! https://softwaremill.com/open-source

Purely functional HTTP client http://pepegar.com/hammock

Scala wrapper for the Java AsyncHttpClient. https://dispatchhttp.org

Http server- (or api server)

Scala library to define HTTP endpoints

Scala combinator library for building Finagle HTTP services https://gitter.im/finagle/finch

A Scala port of the popular Python Requests HTTP client: flexible, intuitive, and straightforward to use.

Build your web API on the type level.

An HTTP & HTTP/2 Server and Client library for Scala.

Wiro is a lightweight Scala library for writing HTTP routes

Internationalization

simple gettext-like internationalization (aka i18n) library for Scala

I/O

Simple, safe and intuitive Scala I/O http://git.io/better-files-scaladoc

Kubernetes

A Scala Kubernetes client library

Logging

fast, simple, Scala library for logging, based on SLF4J.

high performance replicated log service

Practical logging framework that doesn’t require any other logging framework and can be completely configured programmatically.

Allows logging in a tree structure so that comprehensive logging does not become incomprehensible

Metaprogramming - Macros

macro-compat is a small library which allows you to compile macros with Scala 2.10.x which are written to the Scala 2.112 macro API.

Squid – type-safe metaprogramming for Scala http://epfldata.github.io/squid/

A better generic macro for Scala

Library to read, analyze, transform and generate Scala programs http://scalameta.org/

Adversaria, a tiny library for working with annotations in Scala

Generalized recursion for Scalameta. And a Scala template tool.

Memory Optimization

Scala library for memory-efficient data structures

Don’t guess JVM object sizes. Get them on a silver platter.

Discover java object sizes through questionable sleuthing plus luck.

Parsing

simple scala command line options parsing

A composable command-line parser for Scala. http://monovore.com/decline/

friendly little parsers

Writing Fast Parsers Fast in Scala http://www.lihaoyi.com/post/FastParse10PastPresentFuture.html

Plotting - Printing

Wisp Is Scala Plotting https://github.com/quantifind/wisp/wiki

An HTML to PDF library for the JVM. Based on Flying Saucer and Apache PDF-BOX 2. With SVG image support.

Scala/Scala.js library for manipulating Fancy Ansi colored strings

simple terminal output colorizing for Scala

Pretty-printing value, types and type-signatures in Scala http://www.lihaoyi.com/PPrint/

Queues

Kafka

Kafka driver written in pure Scala.

thin Scala wrapper over the official Apache Kafka Java Driver

Kafka-based message queue https://softwaremill.com/open-source/

Monix integration with Kafka

Random Generators

Random generator of test data in Scala based on Scalacheck and Magnolia

Recursion Schemes

a recursion library for Scala.

Generalized recursion schemes and traversals for Scala.

Generalized folds, unfolds, and traversals for fixed point data structures in Scala, using Cats.

Forked from the Scalaz-based Matryoshka

Schemas (generation)

Scala library for free applicative schemas capable of parsing/rendering JSON data structures.

SBT plugin for generating code from Protocol Buffer using protoc

Serialization

An implementation of MessagePack for Scala.

Scala extensions for the Kryo serialization library

Services ( MicroServices)

A library for expressive and efficient service composition

Orchestrate (micro)service-based process flows

is especially useful when querying data that has a latency cost doc

Spark

Expressive types for Spark.

Static Analysis

FindBugs static analysis plugin for sbt.

flexible Scala code linting tool

Copy & Paste Detector plugin using PMD for sbt.

Scala compiler plugin for static code analysis

Sbt plugins

Sbt plugin that can check maven repositories for dependency updates

Sbt plugin to create a dependency graph for your project

Sbt plugin to aggregate tasks across subprojects and their crossScalaVersions

release plugin for Sbt (>= 0.11.0)

an Sbt plugin that enables straight-to-jar compilation of Scala files

Sbt plugin for extracting Swagger & JAX-RS (jsr311) annotations from compiled classes into Swagger API models, which are then serialized to JSON for consumption with swagger-ui.

the sbt-git plugin offers git command line features directly inside Sbt as well as allowing other plugins to make use of git.

Code formatter for Scala http://scalameta.org/scalafmt

very simple documentation tool for Scala that reads Markdown files and interprets Scala code in tut sheds

sbt plugin that aims to lower the latency between file system events and sbt tasks.

Common build and release steps for SBT projects

a Scala compiler plugin that resolves dependent types from implicit type classes, especially useful when working with shapeless or other type-level programming libraries.

Warn or ban particular dependencies in a build to prevent usage.

Refactoring and linting tool for Scala https://scalacenter.github.io/scalafix/

enforce the Scalazzi subset of Scala with scalafix

SBT Plugin for OWASP DependencyCheck. Monitor your dependencies and report if there are any publicly known vulnerabilities (e.g. CVEs).

An sbt plugin to dynamically set your version from git

Pure Scala Artifact Fetching http://get-coursier.io ( really fast)

sbt plugin to roll the Git history

Skeletons

This is a repository intended to serve as a starting point if you want to bootstrap a project in Scala. It could be useful if you want to start from scratch a kata or a little exercise or project. 

Compile-time DI Play template

Scala Bootstrap (base / project skeleton)

sbt-plugin to create an opinionated fresh sbt project

sbt plugin for use in all projects at Cake Solutions

Testing

A testing tool for Scala and Java developers

Microbenchmarking and performance regression testing framework for the JVM platform. http://scalameter.github.io

 Scala DSL for testing HTTP JSON API http://agourlay.github.io/cornichon

A library that provides an in-memory Kafka instance to run your tests against.

Docker integration testing kit with Scala

Scala Library for Unit-Testing Processing Topologies in Apache Kafka / Kafka Streams

The super light testing library for Scala and Scala.js

A testing tool for Scala and Java developers

JaCoCo Code Coverage plug-in for sbt. https://scala-sbt.org/sbt-jacocoai

Generation of arbitrary case classes / ADTs instances with scalacheck and shapeless

A Scala implementation of CDC using the Pact standard http://io.itv.com/scala-pact/index.html

A Scala implementation of hedgehog using the typelevel libraries

A utility harness for testing free programs (built on specs2)

A flexible and scalable container based Selenium Grid with video recording, live preview, basic auth & dashboard. https://opensource.zalando.com/zalenium/

other

CBT - fun, fast, intuitive, compositional, statically checked builds written in Scala

Useful extensions for the Scala standard library

More resources

community driven list of useful Scala libraries, frameworks and software.

A curated list of awesome Java frameworks, libraries and software.