An open API service indexing awesome lists of open source software.

awesome-fsharp

A curated list of awesome F# frameworks, libraries, software and resources.
https://github.com/fsprojects/awesome-fsharp

Last synced: 3 days ago
JSON representation

  • Actor frameworks

  • Actor Frameworks

    • Akka.NET - Community-driven port of the popular Java/Scala framework Akka to .NET.
    • Akkling - F# typed API for Akka.NET.
    • Orleankka - Functional extension for Microsoft Orleans framework.
    • Orleans - Distributed virtual actor model.
    • Proto.actor - Cross-platform actor framework for .NET, Go, Java and Kotlin.
  • Build Tools

    • Xake - Another Make utility implementation on F#, fully declarative with no-brain parallelism, inspired by Shake.
    • FAKE - "F# Make" is a cross platform build automation system.
  • Cloud

    • FsFirestore - Functional F# library to access Firestore database hosted on Google Cloud Platform (GCP) or Firebase.
    • Chia - An F# library which contains HelperFunctions for reporting, logging and Azure cloud operations.
    • Farmer - Repeatable Azure deployments with ARM templates made easy.
    • Pulumi.FSharp.Extensions - F# computational expressions to reduce boilerplate in Pulumi code.
  • Code Analysis

  • Code Generation

    • Hawaii - A dotnet CLI tool to generate type-safe F# clients from OpenAPI/Swagger services.
    • Myriad - A pre-compilation code generator.
  • Compilers

  • Compilers for Other Platforms

    • Fable - F# to JavaScript compiler.
    • Fez - F# to Erlang compiler.
    • FunScript - F# to JavaScript compiler with JQuery etc. mappings through a TypeScript type provider.
    • Juniper - Functional Reactive Programming for the Arduino and other microcontrollers.
  • Concurrent, asynchronous and parallel programming

    • Giraffe.Tasks - Task computation expression to work natively with .NET's Tasks from an F# application.
    • Reaction.AsyncRx - An implementation of Async Observables in F# for .NET and Fable. [MIT]
  • Concurrent, Asynchronous, and Parallel Programming

    • FSharp.Control.AsyncSeq - Asynchronous sequence support, integration with `IAsyncEnumerable`.
    • FSharp.Control.FusionTasks - F# Async workflow <--> .NET Task/ValueTask easy seamless interoperability library.
    • FSharpx.Async - Collection of asynchronous programming utilities for F#.
    • Hopac - Concurrent ML style concurrent programming library for F#.
    • Ply - High performance System.Threading.(Value)Task computation expressions for F#.
    • TaskBuilder.fs - F# computation expression builder for System.Threading.Tasks.
    • IcedTasks - Cold tasks, cancellable tasks, and extensions for the `async` workflow.
    • FIO - A type-safe, highly concurrent and asynchronous library for F# based on pure functional programming.
    • FIO - A type-safe, highly concurrent and asynchronous library for F# based on pure functional programming.
  • Configuration

    • Argu - Declarative CLI argument/XML configuration parser for F# applications.
    • docopt.fs ★ 18 ⧗ 0 - command line arguments parser, F# port of [docopt](https://github.com/docopt/docopt). [MIT]
    • FsConfig - F# library for reading configuration data from environment variables and AppSettings with type safety.
    • Skid - Simple, single-file portable CLI utility for configuration templating.
  • Data Science

    • Deep.Net - Deep learning library for F#. Provides symbolic model differentiation, automatic differentiation and compilation to CUDA GPUs. [Apache 2.0]
    • Deep.Net - Deep learning library for F#. Provides symbolic model differentiation, automatic differentiation and compilation to CUDA GPUs. [Apache 2.0]
    • DiffSharp - Functional automatic differentiation (AD) library.
    • FsLab - A collection of libraries for data-science. It provides a rapid development environment that lets you write advanced analysis with few lines of production-quality code.
    • IfSharp - F# for Jupyter Notebooks.
    • m2cgen - A CLI tool to transpile trained classic ML models into a native F# code with zero dependencies.
    • Math.NET Numerics - Methods and algorithms for numerical computations in science, engineering and every day use. F# specific bindings available.
    • Math.NET Symbolics ★ 203 ⧗ 5 - Math.NET Symbolics is a basic open source computer algebra library for .NET, Silverlight and Mono written entirely in F#. [MIT]
    • SIMDArray ★ 42 ⧗ 11 - SIMD enhanced Array extensions for faster computation. [MIT]
    • Synapses - Neural network library in F#.
    • SIMDArray - SIMD enhanced Array extensions for faster computation.
  • Development Tools

    • Editor Plugins

      • Emacs F# mode - F# support in Emacs (including Intellisense and Interactive mode).
      • FSharpFar - F# support for Far Manager.
      • FSharpLint - F# code linter.
      • Fantomas - F# code formatter.
      • VimSpeak - A tool to control Vim with your voice using speech recognition.
      • fsharp-notebook - Data science notebook for F# Interactive.
      • neofsharp.vim - Basic F# support for (Neo)Vim.
      • Ionide - Atom Editor and Visual Studio Code package suite for cross platform F# development.
    • IDE

      • MonoDevelop - Cross-platform IDE mostly aimed at Mono/.NET developers. [LGPLv2 and X11/MIT]
      • F# Playground - Minimal playground for F#.
      • Visual Studio - IDE from Microsoft with first class F# support (Windows only, Proprietary).
      • JetBrains Rider - Cross-platform .NET IDE with F# support (Proprietary, free for non-commercial use).
  • Game Development

    • Performance Analysis

      • FsUnity - F# libraries, tools, and plugins for the Unity game engine.
      • Godot - Tutorial how to use F# with Godot.
      • Garnet - Lightweight game composition library for F# with entity-component-system (ECS) and actor-like messaging features.
      • Nu Game Engine - Cross-platform F# 2D game engine built in the functional style. Uses SDL2 and Farseer Physics.
  • General Purpose Libraries

    • Performance Analysis

      • Aether - Optics library for F#, similar to the Haskell Data.Lens package.
      • Chessie - Railway-oriented programming.
      • Donald - A simple F# interface for ADO.NET.
      • DustyTables - Thin F# API for SqlClient for easy data access to ms sql server with functional seasoning on top.
      • ExtCore - Extended core library for F#.
      • FSharp.CosmosDb - An F# wrapper around the CosmosDB SDK, making it more functional-friendly.
      • FSharpLu - Lightweight utilities for string manipulations, logging, collection data structures, file operations, text processing, security, async, parsing, diagnostics, configuration files and Json serialization.
      • FSharpx.Extras - A collection of libraries and tools for use with F#.
      • Fli - Computational expression to run system processes and manage their output.
      • Fling - Significantly reduces boilerplate needed to efficiently save/load complex domain entities to/from multiple tables.
      • FsToolkit.ErrorHandling - Clear, simple and powerful error handling with railway-oriented programming. Inspired by Chessie.
      • Fumble - Thin F# API for SQLite for easy data access to SQLite database with functional seasoning on top.
      • LiteDB.FSharp - F# Support for [LiteDB](https://github.com/mbdavid/LiteDB), an embedded single file database for .NET.
      • Npgsql.FSharp - Thin F# wrapper around [Npgsql](https://github.com/npgsql/npgsql), the PostgreSQL database driver.
      • TypeShape - Small, extensible F# library for practical generic programming.
      • Validus - A composable validation library for F#, with built-in validators for most primitive types and easily extended through custom validators.
      • Vp.FSharp.Sql - Generic F# ADO provider wrapper (SqlServer, PostgreSQL, SQLite).
      • SqlHydra - Suite of NuGet packages for working with databases in F# including query expressions and code generation tools (for generating strongly typed F# DTO record types based on your database tables). Supports MySQL, PostgreSQL, Oracle, SQL Server, and SQLite.
  • GUI

    • Performance Analysis

      • Avalonia.FuncUI - Develop cross-platform MVU GUI Applications using F# and Avalonia.
      • Elmish.WPF - Elmish (or MVU) approach to WPF programming.
      • Epoxy - An independent flexible XAML MVVM library for .NET.
      • Fabulous - F# functional app development, using declarative dynamic UI.
  • HTTP Clients

    • Performance Analysis

      • Http.fs - A simple, functional HTTP client library for F#.
      • Oryx - A high performance .NET cross-platform functional HTTP request handler library for writing HTTP clients and orchestrating web requests.
  • Logging

    • Performance Analysis

      • FsLibLog - A single file you can copy and paste or add through Paket GitHub dependencies to provide your F# library with a logging abstraction.
  • .Net Core Templates

    • Creating type providers

      • Freya - -install Freya.Template::*`
  • .NET Core Templates

  • Package Management

    • Performance Analysis

      • NuGet - The package manager for the Microsoft development platform including .NET.
      • Paket - Dependency manager for .NET with support for NuGet packages and Git repositories.
  • Parsing

    • Performance Analysis

      • FParsec - The parser combinator library for F#.
      • FsAttoparsec - Port of Bryan O'Sullivan's attoparsec from Haskell to F#.
      • XParsec - Extensible, type-and-source-polymorphic, non-linear applicative parser combinator library for F# 3.0 and 4.0.
  • Resources

  • Serialization

    • Performance Analysis

      • FSharp.SystemTextJson - System.Text.Json extensions for F# types.
      • Fleece - JSON mapper for F#. It simplifies mapping from a Json library's JsonValue onto your types, and mapping from your types onto JsonValue.
      • FsCodec - F# Event-Union Contract Encoding with versioning tolerant converters.
      • FsPickler - Fast, multi-format messaging serializer for .NET.
      • Legivel - F# Yaml 1.2 parser.
      • Thoth.Json - JSON encoder/decoder library inspired by Elm.
  • Simulation

  • Static Site Generators

    • Performance Analysis

      • SkunkHTML - Markdown blog with GitHub Pages.
  • Testing

    • Performance Analysis

      • Expecto - Smooth testing framework for F# with tests-as-values and parallelism by default.
      • Faqt - Fantastic fluent assertions for your F# tests and domain code.
      • FsCheck - Random testing for .NET.
      • FsUnit - Makes unit-testing with F# more enjoyable. It adds a special syntax to your favorite .NET testing framework.
      • NBomber - Simple load testing framework for Pull and Push scenarios.
      • Persimmon - Unit test framework for F# using computation expressions.
      • altcover - Cross-platform coverage gathering and processing tool set for .NET/.NET core and Mono.
      • canopy - F# web automation and testing framework.
      • fsharp-hedgehog - Property-based testing system for F#.
      • unquote - Write F# unit test assertions as quoted expressions.
      • xUnit.net - Free, open source, community-focused unit testing tool for the .NET Framework.
  • Type Providers

    • Creating Type Providers

    • Performance Analysis

      • AzureStorageTypeProvider - F# Azure type provider which can be used to explore Blob, Table and Queue Azure Storage assets and easily apply CRUD operations on them.
      • DynamicsCRMProvider - Type provider for Microsoft Dynamics CRM 2011.
      • EasyBuild.FileSystemProvider - Type provider to provide a typed representation of files and directories based on your project structure or a virtual file system.
      • ExcelProvider - Excel type provider.
      • FSharp.Configuration - The project contains type providers for the configuration of .NET projects. Handles AppSettings, ResX, Yaml and Ini files.
      • FSharp.Data.Npgsql - F# type providers library on a top of well-known Npgsql ADO.NET client library.
      • FSharp.Data.SqlClient - F# type provider for statically typed access to T-SQL command parameters and result set.
      • FSharp.Data.Tdms - TDMS support for F#.
      • FSharp.Data.Toolbox - Library for various data access APIs based on FSharp.Data. The library currently includes the Twitter type provider for access to Twitter users and feeds, and SAS type provider to read SAS dataset files.