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 AndroidAsynchronous
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 TaskAWS
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 filesConfiguration
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.isConverters
correct and stable conversions betweenTask
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.orgCassandra
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 driverDynamo
Simpler DynamoDB access for Scala https://www.scanamo.orgMongo
Compared to the ReactiveMongo’s macros, this project brings support for sealed traits ,recursive typesPostgres
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/scioData 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 ProbabilityNLP
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 + SparkMachine 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 ScalaData 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 libraryDatetime
Provides type classes for datetime values. Works both on JVM & ScalaJS. https://vpavkin.github.io/dtc/apiDependency Injection
a library to configure and wire Scala applicationsDiagrams
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 AnalysisEnums
A small library forsealed 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 scalafor
without implicit withFilter
s
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 foldsFree 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/dogsLenses - Optics
modify deeply nested case class fields Optics library for Scala http://julien-truffaut.github.io/Monocle/ Pleasant, yet principled Scala optics DSLTypeclasses
Defining typeclasses
first class syntax support for type classes in ScalaProviding 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 valuesPerformance typeclasses runtime (imp-machinist)
macro for summoning implicit values spire’s macros for zero-cost operator enrichmentCombining all the above
iintegration (or merge) simulacrum, machinist, imp, export-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 ScalaGeneric 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 ScalaJob 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 codecsJson Schema
JSON schema generation, validation and de-serialization for Scala classes JSON Schema Validation with Play JSON Scala JSON Schema Builds models from JSON SchemasPlay 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 playcheck 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-classesJWT
Scala support for JSON Web TokenHtml
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.ioHttp 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.orgHttp 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 routesInternationalization
simple gettext-like internationalization (aka i18n) library for ScalaI/O
Simple, safe and intuitive Scala I/O http://git.io/better-files-scaladocKubernetes
A Scala Kubernetes client libraryLogging
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 incomprehensibleMetaprogramming - 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.11/2 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.htmlPlotting - 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 KafkaRandom Generators
Random generator of test data in Scala based on Scalacheck and MagnoliaRecursion 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 protocSerialization
An implementation of MessagePack for Scala. Scala extensions for the Kryo serialization libraryServices ( 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 docSpark
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 analysisSbt 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 intut
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