Branch: master
Clone or download
haf Merge pull request #186 from Szer/stream-pipeline-bottleneck
fixed bottleneck in Stream.mapPipelinedJob
Latest commit 6b4fe8e Oct 17, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.paket Move bootstrapper as magic mode paket Sep 21, 2018
.vscode [infra] compiles on .Net Core Sep 9, 2016
Benchmarks A few missing ServerGC elements and new FsiRefGen Sep 19, 2018
Docs Add escape for pipe characters Jun 22, 2017
Examples Use FAKE to build Sep 21, 2018
FsiRefGen @ f88f9b2 Latest FsiRefGen Sep 20, 2018
Libs checking closing before reading from inCh Oct 15, 2018
Tests/AdHocTests Update, remove xml header from two projects Sep 19, 2018
.env Upgrade to .Net 4.7.1, add .env file for quick compilation on non-Win… Sep 19, 2018
.gitattributes Set line endings for MS files Aug 15, 2016
.gitignore Use FAKE to build Sep 21, 2018
.gitmodules Workin on fuller automation Jul 24, 2016
.travis.yml Upgrade .travis.yml monos Sep 21, 2018
Hopac.fsx Correcting #r lines in Hopac.fsx Sep 19, 2018
Hopac.sln Try docs with updated token interpreter supporting access modifiers Sep 19, 2018
Hopac.snk [infra] adding snk file May 3, 2016 [infra] compiling succeeds, running fails May 4, 2016 Update years in Sep 19, 2018 Use FAKE to build Sep 21, 2018 Use FAKE to build Sep 21, 2018
Todo.sln Use FAKE to build Sep 21, 2018
appveyor.yml VS2017 image Mar 23, 2018
build.fsx fixing bash dependent directory removal Oct 12, 2018
build.fsx.lock Use FAKE to build Sep 21, 2018
fake.cmd Use FAKE to build Sep 21, 2018 Use FAKE to build Sep 21, 2018
global.json Pin .net sdk to 2.1.402 Sep 20, 2018
paket.dependencies Use FAKE to build Sep 21, 2018
paket.lock Use FAKE to build Sep 21, 2018
run.complete Added `watch` Aug 11, 2016


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 && source .env
./run tests

Note the use of --recursive option above. Or if you didn't, you can later do

git submodule update --init

This project is only used to build our docs. You can skip it if you're just testing Hopac.


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.


When you've followed the links at the top of this README, and you've read the programming guide, you can use ./run repl as well as the file Hopac.fsx to play around with.

Furthermore, you'll find a large number of examples in (./Examples)[./Examples].

Release / publish

USE=netcore ./run publish