# Karyos crates

The crates of the Karyos workspace, what each one is for and its status in 0.1.0-alpha.1.

The Karyos workspace is split into crates by responsibility. Only
`karyos-sys` and `karyos-io` may use `unsafe`.

| Crate             | Purpose                                                                                                                | Status in 0.1.0-alpha.1                                                 |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| `karyos-sys`      | Shared-memory mappings, atomic views, log buffers, rings, broadcast buffer, counters, conflation table, record journal | Implemented                                                             |
| `karyos-protocol` | Frame layouts, flyweights, CnC and admission messages                                                                  | Implemented for IPC                                                     |
| `karyos-client`   | Publications, subscriptions, client conductor                                                                          | Implemented for the embedded driver; remote attach for the control path |
| `karyos-driver`   | Driver conductor, embedded driver, admission server                                                                    | Embedded driver and admission server                                    |
| `karyos-trace`    | Trace records, sampling, clock calibration, histograms                                                                 | Library only, not yet on the data path                                  |
| `karyos-sim`      | Deterministic simulator                                                                                                | Implemented for phase 1 scenarios                                       |
| `karyos-bench`    | Benchmark harness                                                                                                      | Implemented                                                             |
| `karyos`          | Public facade                                                                                                          | Re-exports the client API only                                          |

`karyos-io`, `karyos-codec`, `karyos-archive`, `karyos-cluster`,
`karyos-feed` and `karyos-tools` are scaffolds for later phases: network
I/O backends, the codec, Archive, Cluster, feed arbitration, `karyosd` and
the tools.
