Inspired by languages like Concurrent ML and Cilk, Hopac is a library for F# with the aim of making it easier to write efficient parallel, asynchronous, concurrent and reactive programs. Hopac is licensed under a MIT-style license. See project website for further information.

fsharp, concurrent, parallel, async, f#, reactive
Install-Package Hopac -Version 0.3.23


[ Reference ] [ Guide ] [ Docs ]

Hopac is a Concurrent ML style concurrent programming library for F#.

NuGet version AppVeyor Build status Travis Build Status


Here is a Bash script to get started:

git clone --recursive
cd Hopac
./run tests

Note the use of --recursive option above.


The Bash run script provides build automation. You invoke run like any other Bash command:

[VARIABLE=value] ./run [COMMAND]

Multiple commands can be specified. For example,

USE=netcore ./run clean build

performs a clean build using the .NET Core stack.

run variables

  • CONFIGS specifies the configuration(s) to operate on:

    • CONFIGS='Debug Release' is the default to build and run both Debug and Release configs.
    • CONFIGS=Debug to build and run only Debug config.
    • CONFIGS=Release to build and run only Release config.
  • USE specifies the stack, which is auto detected by default, to build and run with:

    • USE=mono to use Mono.
    • USE=net to use .NET Framework (only on Windows).
    • USE=netcore to use .NET Core.

run commands

  • benchmarks runs all benchmarks. This may take a very long time!
  • build builds all the subprojects.
  • clean removes generated files.
  • tests runs tests.
  • repl starts the F# interactive with Hopac libs opened. (Only works with Mono and .NET at the moment.)
  • restore restores dependencies required to build the project. To build from an IDE like Visual Studio or Xamarin, you need to ./run restore manually.
  • generate_docs generates the Reference manual under .gh-pages.

You can run source run.complete to get auto completion of run commands in Bash.