Freestyle 0.1.0 Released

Freestyle 0.1.0 Released

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:

To get started with Freestyle, take a look at the Quick Start Guide and join the discussion in our gitter channel.

blog comments powered by Disqus

Ensure the success of your project

47 Degrees can work with you to help manage the risks of technology evolution, develop a team of top-tier engaged developers, improve productivity, lower maintenance cost, increase hardware utilization, and improve product quality; all while using the best technologies.