Awesome Scala Native
A curated collection of resources and projects focused on Scala Native.
Contents
Tutorials and Examples
- Giter8 template for a minimal Scala Native project - Official Giter8 template for a minimal Scala Native project.
- Hands on Scala Native - Tutorial for implementing a bandwidth monitor with Ncurses.
- Starter for Scala Native - Scala Native project that links to a custom C library.
- Building C code using sbt-jni - Example for compiling C code in a Scala Native project using sbt-jni.
- Example project with external dependencies - Example project that uses external dependencies to generate HTML and run a test suite.
- Starter for Gtk+ Projects - Giter8 template for Scala Native GUI projects using Gtk+.
- Modern systems programming with scala native book.
- Write a simple CLI application in Scala Native
Build Tools
- sbt - Scala’s standard build tool.
- Mill - Build tool striving for simplicity, inspired by Bazel.
- Bloop - Scala build server and command-line tool for fast developer workflows.
- Seed - Build tool based on Bloop. Focuses on user experience and cross-platform builds, inspired by Cargo.
Functional Programming
- Shapeless - Library for generic programming.
- Squants - DSL for quantities, units of measure and dimensional analysis.
- scalaz - Type classes and instances for data structures.
- nobox - Immutable primitive array wrapper without boxing.
- PPrint - Pretty-print values and types.
- SourceCode - Implicits providing meta data similar to
__LINE__in C. - reactify - Functional Reactive Programming framework for Scala.
- chimney - Boilerplate-free data transformations.
- Quicklens - Modify deeply nested case class fields.
- Cats - Abstractions for functional programming in Scala.
Unit Tests
- µTest - Library for unit tests.
- minitest - Lightweight testing library.
- scalaprops - Library for property-based testing.
- scalaprops-shapeless - Generation of arbitrary ADT instances.
- scalaprops-cross-example - Cross-platform example.
- ScalaCheck - Property-based testing for Scala.
- ScalaTest - Testing library.
- specs2 - Software Specifications for Scala.
- Makeshift - Library for unit tests.
- MUnit - Scala testing library with actionable errors and extensible APIs.
Bindings
- cmark - Bindings for the cmark CommonMark parser library.
- libuv - Bindings for libuv, a library for asynchronous I/O.
- SDL2 and OpenGL - Bindings for the graphical frameworks SDL2 and OpenGL.
- Cocoa - Bindings for the macOS graphical framework Cocoa.
- GNU Scientific Library - Bindings for GNU Scientific Library (GSL).
- BLAS - Bindings for BLAS, a library for Linear Algebra.
- Gtk+ - Bindings for the GTK+ graphical toolkit.
- libsoup - Bindings for the libsoup HTTP client/server library.
- libui - GUI framework based on libui.
- GStreamer - Bindings for the GStreamer multimedia framework.
- Qt - Bindings for Qt.
- ncurses - Bindings for the GNU Ncurses Library.
- readline - Bindings for the GNU Readline Library.
- libsndfile - Bindings for the Libsndfile C library for sampled sound manipulation.
- libpng - Bindings for the libpng C reference library for reading and writing PNGs.
- libcairo - Bindings for the Cairo 2D graphics C library.
- cairo-xlib - Bindings for the Cairo 2D graphics XLib Surfaces with bindings for XLib as well.
- libyaml - Bindings for the LibYAML C library for parsing YAML.
- iup - Bindings for the IUP multi-platform toolkit for building graphical user interfaces.
File Formats and Parsers
- msgpack4z - Implementation of MessagePack, a binary serialisation format.
- FastParse - Library for defining and running parsers.
- scalatags - HTML/XML construction and rendering.
- Pine - HTML/XML parsing, manipulation and rendering.
- scala-json - JSON parser.
- uPickle - uPickle: a simple, fast, dependency-free JSON & Binary (MessagePack) serialization library for Scala
- toml-scala - TOML parser with codec derivation.
- argonaut - Purely functional JSON parser and library.
- ScalaPB - Protocol Buffer compiler for Scala.
- scalapb-argonaut - JSON and Protocol Buffer converters for ScalaPB based on Argonaut.
- sconfig - HOCON parser.
- squiggly - Cross-platform template language for Scala, inspired by Liquid and Hugo templates.
Databases
- scala-native-jdbc - Port of the database access layer JDBC to Scala Native.
- SQLite4S - Port of the Java library Sqlite4java. Includes bindings for the SQLite native library.
- libpq4s - Scala wrapper around the async PostgreSQL C library libpq.
- skunk - A data access library for Scala + Postgres.
Web Development
- Trail - Routing library.
- sttp - HTTP Client library.
- snunit - Scala Native HTTP server based on NGINX Unit.
Concurrency
- scala-native-loop - Event loop and async-oriented IO for Scala Native
- castor - Lightweight, typed Actor library for Scala.
Logging
- scribe - Fast and simple logging library.
- slogging - Typesafe-logging and SLF4J-compatible logging library based on macros.
Console
- fansi - Library for creating ANSI-coloured strings.
- scopt - Command-line argument parser.
- scala-optparse-applicative - Port of Haskell’s CLI argument parsing library optparse-applicative.
- scallop - A simple Scala CLI parsing library.
- mainargs - Small, dependency-free library for command line argument parsing in Scala.
- decline - A composable command-line parser for Scala.
Robotics
- Potassium - Framework for writing robot software.
- WPILib - Reimplementation of the FIRST Robotics WPILib libraries.
Programs
- sglgears - Port of GL gears.c.
- k8s-cli - CLI tools to generate Kubernetes resources for Akka, Play Framework and Lagom-based applications.
- Coursier - Coursier’s
bootstrapcommand generates native launchers. - fractals - A self-similar fractal generator with basic animation support.
Infrastructure
- Seed Docker image - Docker image for cross-platform builds with Seed.
- scala-native-sbt-docker - Docker image for Scala Native and sbt.
Licence
This work is licenced under a Creative Commons Attribution 4.0 International Licence.