package spawn
Build not checkedInstall
dune-project
Dependency
Authors
Maintainers
Sources
sha256=d6b7047fefab8a30025d250a606d7e215435ecbf372e60791a8ff5abe243fd54
md5=f9c770cbe3856e6ed5b92ba3ce7c691c
Description
Spawn is a small library exposing only one functionality: spawning sub-process.
It has three main goals:
-
provide missing features of Unix.create_process such as providing a working directory
-
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
-
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.
Added to opam-repository:
README
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.
Dev Dependencies
None
Optional Dependencies
None
Used by (7)
-
async_interactive
>= "v0.14.0" & < "v0.16.0" -
bun
= "0.3.2" -
core
< "v0.15.0" -
dune
>= "3.19.0" -
ocaml-lsp-server
>= "1.9.0" -
shell
< "v0.16.0" -
shexp
< "v0.16.0"
Conflicts
None
Build status
Results of building spawn with each compiler on check.ci.ocaml.org, run of against opam-repository 78c202b. All results for this package.
Each result links to its build log. To keep crawlers from overloading the site, build logs require a GitHub sign-in (see ocurrent/opam-health-check). On your first log, GitHub asks you to “Authorize opam-health-check”, the OCurrent app that runs these checks; it sees only your public profile, not your repositories. The sign-in lasts 30 days.
This version is not in the latest run; the versions below are.
- good Package successfully built
- partial One of the dependencies failed to build
- bad Package failed to build
- n/a Package is not available in this environment
- internal Internal failure