# forcola v0.2.0 - Table of Contents

> Leak-free external process execution: process-group kill on timeout or BEAM death via a precompiled Rust shim

## Pages

- [Forcola](readme.md)

- Guides
  - [Getting started](getting_started.md)
  - [Process groups and cleanup](process_groups.md)
  - [Adopting Forcola in a wrapper library](adopting_forcola.md)
  - [Alternatives and tradeoffs](alternatives.md)

## Modules

- Execution modes
  - [Forcola](Forcola.md): Leak-free external process execution.
  - [Forcola.Daemon](Forcola.Daemon.md): A long-running external server process under a supervision tree.
  - [Forcola.Duplex](Forcola.Duplex.md): A bidirectional stdin/stdout session with an external process.
  - [Forcola.Stream](Forcola.Stream.md): Line-by-line output from a shim-supervised process as an `Enumerable`.

- Data structures
  - [Forcola.Result](Forcola.Result.md): What an OS process did: exit status plus captured output.
  - [Forcola.Stream.Error](Forcola.Stream.Error.md): Raised when a streamed run does not end with a clean zero exit.

- Internals
  - [Forcola.Precompiled](Forcola.Precompiled.md): Downloads and verifies precompiled `forcola_shim` binaries.
  - [Forcola.Shim](Forcola.Shim.md): Locates and speaks to the `forcola_shim` binary.

## Mix Tasks

- [mix compile.forcola_shim](Mix.Tasks.Compile.ForcolaShim.md): Puts a `forcola_shim` binary into `priv/`.
- [mix forcola.checksum](Mix.Tasks.Forcola.Checksum.md): Generates the checksum file the hex package ships.

