Freestyle 0.1.0 Released
by Raúl Raja Martínez
- •
- May 02, 2017
- •
- scala• open source• freestyle• functional programming
- |
- 3 minutes to read.

We are proud to announce Freestyle 0.1.0
the first non-snapshot version of Freestyle.
Freestyle, a 47 Degrees open source project, simplifies and promotes applications and libraries built atop a purely functional style.
Version 0.1.0 has been focused on the core features used when building applications around the interpreter pattern with Free monads and tagless final style algebras. 0.1.0 features a performant alternative to cats’ Inject and Coproduct using iota
InjK
and CopK
as Freestyle’s underlying Coproduct and Inject implementations optimized for evaluation in applications with large numbers of algebras.
This version includes several integrations and effect libraries that model some of the most common idioms and useful algebras when building applications.
The following modules are available as part of the 0.1.0
release:
-
freestyle - Core module including building blocks for boilerplate free FP programs and apps over Free monads and cats.
-
tagless - An alternative encoding to Free based on Tagless Final.
-
effects - MTL style effects such as reader, writer, state, error, and more modeled as free algebras.
-
fetch - Integration with the Fetch library for effitient data access from heterogenous datasources.
-
fs2 - Integration to run fs2 Streams in Freestyle programs.
-
monix - Instances and utilities to interpret to
monix.eval.Task
. -
logging - A purely functional logging algebra over Verizon’s Journal.
-
slick - Embedding of DBIO actions in Freestyle programs.
-
doobie - Embedding of Doobie ConnectionIO actions in Freestyle programs.
-
cache - A generic cache with an in memory and redis based implementations.
-
http - Adapters and marshalers to run the Freestyle program in endpoint return types for akka-http, finch, http4s, and play.
Among other features, Freestyle provides a boilerplate free implementation of the Interpreter pattern.
Building applications and libraries with Freestyle is as easy as describing actions and declaring implicit handlers that can convert those actions to any of the popular runtime representations frequently used in Scala applications such as scala.concurrent.Future
, monix.eval.Task
, fs2.Task
, and others.
Freestyle encourages a purely functional style where computation is treated as a chain of sequential actions with parallelizable fragments and execution of effects is pushed to the edge of the application.
Freestyle aims to be more than a boilerplate reduction framework and it’s scope is to bring a set of comprehensive libraries with purely functional user facing API’s that are cohesive and designed with the same principles in mind.
We would like to publicly acknowledge the great effort that all the Freestyle contributors have put into this first release. Without all of you, this would not have been possible:
- Adrián Ramírez Fornell
- Andy Scott
- Alejandro Gómez
- Ana Mª Marquez
- Colin-Passiv
- Diego Esteban Alonso Blas
- Domingo Valera
- Fede Fernández
- Francisco Diaz
- Giovanni Ruggiero
- Javi Pacheco
- Javier de Silóniz Sandino
- Jisoo Park
- Jorge Galindo
- Juan Pedro Moreno
- MaureenElsberry
- Peter Neyens
- Raúl Raja Martínez
- Sam Halliday
- Suhas Gaddam
To get started with Freestyle, take a look at the Quick Start Guide and join the discussion in our gitter channel.