package spawn

  1. Overview
  2. Docs
Spawning sub-processes

Install

Dune Dependency

Authors

Maintainers

Sources

spawn-v0.11.0.tar.gz
sha256=f814d9c75e6c67627d16f2cbcb502be06d81d9b93ade9725d40fac492956097b
md5=85aa8d09cb50f80a9603dac4af333032

Description

Spawn is a small library exposing only one functionality: spawning sub-process.

It has three main goals:

  1. provide missing features of Unix.create_process such as providing a working directory

  2. provide better errors when a system call fails in the sub-process. For instance if a command is not found, you get a proper [Unix.Unix_error] exception

  3. improve performances by using vfork when available. It is often claimed that nowadays fork is as fast as vfork, however in practice fork takes time proportional to the process memory while vfork is constant time. In application using a lot of memory, vfork can be thousands of times faster than fork.

Published: 22 Mar 2018

README

README.org

* SPAWN - spawning system process

Spawn is a small library exposing only one function:
=Spawn.spawn=. Its purpose is to start command in the
background. Spawn aims to provide a few missing features of
=Unix.create_process= such as providing a working directory as well as
improving error reporting and performance.

Errors such as directory or program not found are properly reported as
=Unix.Unix_error= exceptions, on both Unix and Windows.

On Unix, Spawn uses =vfork= by default as it is often a lot faster
than fork. There is a benchmark comparing =Spawn.spawn= to
=Unix.create_process= in =spawn-lib/bench=. If you don't trust
=vfork=, you can set the environment variable =SPAWN_USE_FORK= to make
Spawn use =fork= instead.

Dependencies (2)

  1. jbuilder >= "1.0+beta18.1"
  2. ocaml >= "4.04.1"

Dev Dependencies

None

Used by (4)

  1. bun < "0.3.2"
  2. core = "v0.11.0"
  3. ocaml-lsp-server >= "1.9.0"
  4. shexp = "v0.11.0"

Conflicts (1)

  1. jbuilder = "1.0+beta19"
OCaml

Innovation. Community. Security.