diff --git a/either/index.html b/either/index.html index 3843f173..77634eab 100644 --- a/either/index.html +++ b/either/index.html @@ -1,2 +1,2 @@ -index (either.index)

Package either

Package info

changes-files
license-files
readme-files
+index (either.index)

Package either 1.0.0

Package info

authors
  • Craig Ferguson <me@craigfe.io>
changes-files
depends
homepage
issues
license
  • MIT
license-files
maintainers
  • Craig Ferguson <me@craigfe.io>
online-doc
readme-files
repo
  • git+https://github.com/mirage/either.git
version
  • 1.0.0
diff --git a/hmap/index.html b/hmap/index.html index c91172d0..2b6042f4 100644 --- a/hmap/index.html +++ b/hmap/index.html @@ -1,2 +1,2 @@ -index (hmap.index)

Package hmap

Package info

changes-files
license-files
readme-files
+index (hmap.index)

Package hmap 0.8.1

Package info

authors
  • Daniel Bünzli <daniel.buenzl i@erratique.ch>
changes-files
depends
homepage
issues
license
  • ISC
license-files
maintainers
  • Daniel Bünzli <daniel.buenzl i@erratique.ch>
online-doc
readme-files
repo
  • git+http://erratique.ch/repos/hmap.git
tags
version
  • 0.8.1
diff --git a/index.html b/index.html index 87e7afa3..61e0247e 100644 --- a/index.html +++ b/index.html @@ -1,2 +1,2 @@ -_opam

OCaml package documentation

Browse by name, by tag, the standard library and the OCaml manual (online, latest version).

Generated for /home/runner/work/moonpool/moonpool/_opam/lib

Packages by name

e

  1. either

h

  1. hmap

l

  1. lwt

m

  1. moonpool
  2. moonpool-lwt

o

  1. ocaml

p

  1. picos

t

  1. thread-local-storage

Packages by tag

\ No newline at end of file +_opam

OCaml package documentation

Browse by name, by tag, the standard library and the OCaml manual (online, latest version).

Generated for /root/w/_opam/lib

Packages by name

e

  1. either 1.0.0 Compatibility Either module

h

  1. hmap 0.8.1

l

  1. lwt 5.9.2 Promises and event-driven I/O

m

  1. moonpool 1136191 Pools of threads supported by a pool of domains
  2. moonpool-lwt 1136191 Event loop for moonpool based on Lwt-engine (experimental)

o

  1. ocaml

p

  1. picos 0.6.0 Pico scheduler interface

t

  1. thread-local-storage da80e1a Efficient thread local storage for OCaml

Packages by tag

data-structure

  1. hmap 0.8.1

domain

  1. moonpool 1136191 Pools of threads supported by a pool of domains

fork-join

  1. moonpool 1136191 Pools of threads supported by a pool of domains

futures

  1. moonpool 1136191 Pools of threads supported by a pool of domains

org:erratique

  1. hmap 0.8.1

pool

  1. moonpool 1136191 Pools of threads supported by a pool of domains

thread

  1. moonpool 1136191 Pools of threads supported by a pool of domains

threads

  1. thread-local-storage da80e1a Efficient thread local storage for OCaml

tls

  1. thread-local-storage da80e1a Efficient thread local storage for OCaml

topics

  1. thread-local-storage da80e1a Efficient thread local storage for OCaml
\ No newline at end of file diff --git a/lwt/index.html b/lwt/index.html index a24f4575..c85c32e3 100644 --- a/lwt/index.html +++ b/lwt/index.html @@ -1,5 +1,5 @@ -index (lwt.index)

Package lwt

Introduction

Lwt is a concurrent programming library for OCaml. It provides a single data type: the promise, which is a value that will become determined in the future. Creating a promise spawns a computation. When that computation is I/O, Lwt runs it in parallel with your OCaml code.

OCaml code, including creating and waiting on promises, is run in a single thread by default, so you don't have to worry about locking or preemption. You can detach code to be run in separate threads on an opt-in basis.

Here is a simplistic Lwt program which requests the Google front page, and fails if the request is not completed in five seconds:

open Lwt.Syntax
+index (lwt.index)

Package lwt 5.9.2

Introduction

Lwt is a concurrent programming library for OCaml. It provides a single data type: the promise, which is a value that will become determined in the future. Creating a promise spawns a computation. When that computation is I/O, Lwt runs it in parallel with your OCaml code.

OCaml code, including creating and waiting on promises, is run in a single thread by default, so you don't have to worry about locking or preemption. You can detach code to be run in separate threads on an opt-in basis.

Here is a simplistic Lwt program which requests the Google front page, and fails if the request is not completed in five seconds:

open Lwt.Syntax
 
 let () =
   let request =
@@ -22,4 +22,4 @@ let () =
   | Some response -> print_string response
   | None -> prerr_endline "Request timed out"; exit 1
 
-(* ocamlfind opt -package lwt.unix -linkpkg example.ml && ./a.out *)

In the program, functions such as Lwt_io.write create promises. The let%lwt ... in construct is used to wait for a promise to become determined; the code after in is scheduled to run in a "callback." Lwt.pick races promises against each other, and behaves as the first one to complete. Lwt_main.run forces the whole promise-computation network to be executed. All the visible OCaml code is run in a single thread, but Lwt internally uses a combination of worker threads and non-blocking file descriptors to resolve in parallel the promises that do I/O.

Tour

Lwt compiles to native code on Linux, macOS, Windows, and other systems. It's also routinely compiled to JavaScript for the front end and Node by js_of_ocaml.

In Lwt,

Installing

  1. Use your system package manager to install a development libev package. It is often called libev-dev or libev-devel.
  2. opam install conf-libev lwt

Additional Docs

API: Library lwt

This is the system-independent, pure-OCaml core of Lwt. To link with it, use (libraries lwt) in your dune file.

API: Library lwt.unix

This is the system call and I/O library. Despite its name, it is implemented on both Unix-like systems and Windows, although not all functions are available on Windows. To link with this library, use (libraries lwt.unix) in your dune file.

Package info

changes-files
license-files
readme-files
+(* ocamlfind opt -package lwt.unix -linkpkg example.ml && ./a.out *)

In the program, functions such as Lwt_io.write create promises. The let%lwt ... in construct is used to wait for a promise to become determined; the code after in is scheduled to run in a "callback." Lwt.pick races promises against each other, and behaves as the first one to complete. Lwt_main.run forces the whole promise-computation network to be executed. All the visible OCaml code is run in a single thread, but Lwt internally uses a combination of worker threads and non-blocking file descriptors to resolve in parallel the promises that do I/O.

Tour

Lwt compiles to native code on Linux, macOS, Windows, and other systems. It's also routinely compiled to JavaScript for the front end and Node by js_of_ocaml.

In Lwt,

Installing

  1. Use your system package manager to install a development libev package. It is often called libev-dev or libev-devel.
  2. opam install conf-libev lwt

Additional Docs

API: Library lwt

This is the system-independent, pure-OCaml core of Lwt. To link with it, use (libraries lwt) in your dune file.

API: Library lwt.unix

This is the system call and I/O library. Despite its name, it is implemented on both Unix-like systems and Windows, although not all functions are available on Windows. To link with this library, use (libraries lwt.unix) in your dune file.

Package info

authors
  • Jérémie Dimino
  • Jérôme Vouillon
changes-files
depends
homepage
issues
license
  • MIT
license-files
maintainers
  • Anton Bachin <antonbachin@yahoo.com>
  • Raphaël Proust <code@bnwr.net>
online-doc
readme-files
repo
  • git+https://github.com/ocsigen/lwt.git
version
  • 5.9.2
diff --git a/moonpool-lwt/index.html b/moonpool-lwt/index.html index d69cb0ba..9c779d62 100644 --- a/moonpool-lwt/index.html +++ b/moonpool-lwt/index.html @@ -1,2 +1,2 @@ -index (moonpool-lwt.index)

Package moonpool-lwt

Package info

changes-files
readme-files
+index (moonpool-lwt.index)

Package moonpool-lwt 1136191

Package info

authors
  • Simon Cruanes
changes-files
depends
homepage
issues
license
  • MIT
maintainers
  • Simon Cruanes
readme-files
repo
  • git+https://github.com/c-cube/moonpool.git
version
  • 1136191
diff --git a/moonpool/index.html b/moonpool/index.html index 6ad06bb0..8f0dea44 100644 --- a/moonpool/index.html +++ b/moonpool/index.html @@ -1,2 +1,2 @@ -index (moonpool.index)

Package moonpool

Package info

changes-files
readme-files
+index (moonpool.index)

Package moonpool 1136191

Package info

authors
  • Simon Cruanes
changes-files
depends
homepage
issues
license
  • MIT
maintainers
  • Simon Cruanes
readme-files
repo
  • git+https://github.com/c-cube/moonpool.git
tags
version
  • 1136191
diff --git a/picos/index.html b/picos/index.html index aadd7547..d65e97cd 100644 --- a/picos/index.html +++ b/picos/index.html @@ -1,2 +1,2 @@ -index (picos.index)

Package picos

This packages contains the core Picos interface library and auxiliary libraries for dealing with the OCaml multithreading architecture.

Libraries

Introduction

Picos is a systems programming interface between effects based schedulers and concurrent abstractions. Picos is designed to enable an ecosystem of interoperable elements of effects based cooperative concurrent programming models such as

If you are the author of an application level concurrent programming library or framework, then Picos should not fundamentally be competing with your work. However, Picos and libraries built on top of Picos probably do have overlap with your work and making your work Picos compatible may offer benefits:

Of course, interoperability does have some costs. It takes time to understand Picos and it takes time to implement Picos compatibility. Implementing your programming model elements in terms of the Picos interface may not always give ideal results. To address concerns such as those, a conscious effort has been made to keep Picos as minimal and unopinionated as possible.

Interoperability

Picos is essentially an interface between schedulers and concurrent abstractions. Two phrases, Picos compatible and Implemented in Picos, are used to describe the opposing sides of this contract.

Picos compatible

The idea is that schedulers provide their own handlers for the Picos effects. By handling the Picos effects a scheduler allows any libraries built on top of the Picos interface to be used with the scheduler. Such a scheduler is then said to be Picos compatible.

Implemented in Picos

A scheduler is just one element of a concurrent programming model. Separately from making a scheduler Picos compatible, one may choose to implement other elements of the programming model, e.g. a particular approach to structuring concurrency or a particular collection of communication and synchronization primitives, in terms of the Picos interface. Such scheduler agnostic elements can then be used on any Picos compatible scheduler and are said to be Implemented in Picos.

Design goals and principles

The core of Picos is designed and developed with various goals and principles in mind.

The documentation of the concepts includes design rationale for some of the specific ideas behind their detailed design.

Constraints Liberate, Liberties Constrain

Picos aims to be unopinionated and flexible enough to allow higher level libraries to provide many different kinds of concurrent programming models. While it is impossible to give a complete list of what Picos does not dictate, it is perhaps illuminating to explicitly mention some of those:

Let's build an incredible ecosystem of interoperable concurrent programming libraries and frameworks!

Conventions

Many operation in the Picos libraries use non-blocking algorithms. Unless explicitly specified otherwise,

Package info

changes-files
license-files
readme-files
+index (picos.index)

Package picos 0.6.0

This packages contains the core Picos interface library and auxiliary libraries for dealing with the OCaml multithreading architecture.

Libraries

Introduction

Picos is a systems programming interface between effects based schedulers and concurrent abstractions. Picos is designed to enable an ecosystem of interoperable elements of effects based cooperative concurrent programming models such as

If you are the author of an application level concurrent programming library or framework, then Picos should not fundamentally be competing with your work. However, Picos and libraries built on top of Picos probably do have overlap with your work and making your work Picos compatible may offer benefits:

Of course, interoperability does have some costs. It takes time to understand Picos and it takes time to implement Picos compatibility. Implementing your programming model elements in terms of the Picos interface may not always give ideal results. To address concerns such as those, a conscious effort has been made to keep Picos as minimal and unopinionated as possible.

Interoperability

Picos is essentially an interface between schedulers and concurrent abstractions. Two phrases, Picos compatible and Implemented in Picos, are used to describe the opposing sides of this contract.

Picos compatible

The idea is that schedulers provide their own handlers for the Picos effects. By handling the Picos effects a scheduler allows any libraries built on top of the Picos interface to be used with the scheduler. Such a scheduler is then said to be Picos compatible.

Implemented in Picos

A scheduler is just one element of a concurrent programming model. Separately from making a scheduler Picos compatible, one may choose to implement other elements of the programming model, e.g. a particular approach to structuring concurrency or a particular collection of communication and synchronization primitives, in terms of the Picos interface. Such scheduler agnostic elements can then be used on any Picos compatible scheduler and are said to be Implemented in Picos.

Design goals and principles

The core of Picos is designed and developed with various goals and principles in mind.

The documentation of the concepts includes design rationale for some of the specific ideas behind their detailed design.

Constraints Liberate, Liberties Constrain

Picos aims to be unopinionated and flexible enough to allow higher level libraries to provide many different kinds of concurrent programming models. While it is impossible to give a complete list of what Picos does not dictate, it is perhaps illuminating to explicitly mention some of those:

Let's build an incredible ecosystem of interoperable concurrent programming libraries and frameworks!

Conventions

Many operation in the Picos libraries use non-blocking algorithms. Unless explicitly specified otherwise,

Package info

authors
  • Vesa Karvonen <vesa.a.j.k@gmail.com>
changes-files
depends
homepage
issues
license
  • ISC
license-files
maintainers
  • Vesa Karvonen <vesa.a.j.k@gmail.com>
readme-files
repo
  • git+https://github.com/ocaml-multicore/picos.git
version
  • 0.6.0
diff --git a/thread-local-storage/index.html b/thread-local-storage/index.html index b5e621f5..ecf9ed41 100644 --- a/thread-local-storage/index.html +++ b/thread-local-storage/index.html @@ -1,2 +1,2 @@ -index (thread-local-storage.index)

Package thread-local-storage

Package info

changes-files
license-files
readme-files
+index (thread-local-storage.index)

Package thread-local-storage da80e1a

Package info

authors
  • Vesa Karvonen
changes-files
depends
homepage
issues
license
  • MIT
license-files
maintainers
  • Simon Cruanes
online-doc
readme-files
repo
  • git+https://github.com/c-cube/thread-local-storage.git
tags
version
  • da80e1a