Skip to content

Conversation

@bgamari
Copy link
Contributor

@bgamari bgamari commented Mar 13, 2023

vfork is something of a relic, originally introduced as a (rather unsafe) optimisation of fork in 3.0BSD, allowing the user to eliminate the cost of cloning the parent process's address space (as early BSDs would do) when forking with the intent of immediately execing.

However, its design has long been considered a mistake (being nigh impossible to use safely in a multithreaded environment), its benefits have largely vanished (since modern operating systems rely on virtual memory to remap the parent's address space as copy-on-write instead of copying), and nearly all platforms now consider it to be an alias of fork.

Remove process's support for vfork.

Fixes #261.

`vfork` is something of a relic, originally introduced as a (rather
unsafe) optimisation of `fork` in 3.0BSD, allowing the user to eliminate
the cost of cloning the parent process's address space (as early BSDs
would do) when `fork`ing with the intent of immediately `exec`ing.

However, its design has long been considered a mistake (being nigh
impossible to use safely in a multithreaded environment), its benefits
have largely vanished (since modern operating systems rely on virtual
memory to remap the parent's address space as copy-on-write instead of
copying), and nearly all platforms now consider it to be an alias of
`fork`.

Remove `process`'s support for `vfork`.

Fixes haskell#261.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deprecation errors compiling process on MacOS

2 participants