Overview

This project serves as the core library used in all official Ikarus projects. It provides all of the functionality the UIs use.

Currently only a rust interface is supported, but a C interface will follow soon.

On Dependencies

Keeping dependencies low is a primary concern for this project. This applies to both C and Rust dependencies. To avoid opening a can of worms here, we shall not go into the reasoning behind this.

Every new dependency must provide at least one of these benefits: - Adds a lot of convenience features that are otherwise cumbersome to implement (e.g. thiserror) - Is part of a "standard" ecosystem of rust crates (e.g. log) - Provides a mature piece of software which would be nonsensical to implement by oneself (e.g. sqlite)

In addition, all crates must pass cargo vet with the safe-to-run criteria. See supply-chain for our configuration.

C dependencies will be wrapped in separate *-sys crates, as recommended by the cargo book.