# 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](https://github.com/mozilla/cargo-vet) with the `safe-to-run` criteria. See [supply-chain](supply-chain) for our configuration. C dependencies will be wrapped in separate `*-sys` crates, as recommended by the [cargo book](https://doc.rust-lang.org/cargo/reference/build-scripts.html#-sys-packages).