See #649.
or: "Know Your Dependencies"
One of Abscissa's primary goals is to maximize functionality while minimizing the number of dependencies. Abscissa is used in a number of high-security contexts, and as such we view each additional dependency as additional attack surface and therefore a potential liability. We have therefore been very conscientious about the dependencies we use and will not add additional dependencies without due consideration.
Here are all of Abscissa's transitive dependencies when configured with the default set of features in the application:
# | Crate Name | Origin | License | Description |
---|---|---|---|---|
1 | abscissa_core | iqlusion | Apache-2.0 | Abscissa framework |
2 | aho-corasick | @BurntSushi | MIT/Unlicense | Pattern-matching alg |
3 | ansi_term | @ogham | MIT | Terminal color libray |
4 | arc-swap | @vorner | Apache-2.0/MIT | Atomic swap for Arc |
5 | atty | @softprops | MIT | Detect TTY presence |
6 | autocfg | @cuviper | Apache-2.0/MIT | Rust compiler configs |
7 | backtrace | @alexcrichton | Apache-2.0/MIT | Capture stack traces |
8 | backtrace-sys | @alexcrichton | Apache-2.0/MIT | Capture stack traces |
9 | byteorder | @BurntSushi | MIT/Unlicense | Byte order conversions |
10 | canonical-path | iqlusion | Apache-2.0 | Get canonical fs paths |
11 | chrono | chronotope | Apache-2.0/MIT | Time/date library |
12 | clap | @Kevin K | Apache-2.0/MIT | Command-line interface |
13 | color-backtrace | @athre0z | Apache-2.0/MIT | Rich colored backtraces |
14 | fs-err | @andrewhickman | Apache-2.0/MIT | Better filesystem errors |
15 | generational-arena | @fitzgen | MPL-2.0 | Component allocator |
16 | lazy_static | rust-lang | Apache-2.0/MIT | Heap-allocated statics |
17 | libc | rust-lang | Apache-2.0/MIT | C library wrapper |
18 | log | rust-lang | Apache-2.0/MIT | Logging facade library |
19 | matchers | @hawkw | MIT | Stream regex matching |
20 | maybe-uninit | @est31 | Apache-2.0/MIT | MaybeUninit compat |
21 | memchr | @BurntSushi | MIT/Unlicense | Optimized byte search |
22 | num-integer | rust-num | Apache-2.0/MIT | Integer trait |
23 | num-traits | rust-num | Apache-2.0/MIT | Numeric traits |
24 | once_cell | @matklad | Apache-2.0/MIT | Single assignment cells |
25 | redox_syscall | redox-os | MIT | Redox OS syscall API |
26 | regex | rust-lang | Apache-2.0/MIT | Regular expressions |
27 | regex-automata | @BurntSushi | MIT/Unlicense | Low-level regex DFAs |
28 | regex-syntax | rust-lang | Apache-2.0/MIT | Regex syntax impl |
29 | rustc-demangle | @alexcrichton | Apache-2.0/MIT | Symbol demangling |
30 | secrecy | iqlusion | Apache-2.0 | Secret-keeping types |
31 | semver | @steveklabnik | Apache-2.0/MIT | Semantic versioning |
32 | semver-parser | @steveklabnik | Apache-2.0/MIT | Parser for semver spec |
33 | serde | serde-rs | Apache-2.0/MIT | Serialization framework |
34 | sharded-slab | @hawkw | MIT | Concurrent slab allocator |
35 | signal-hook | @vorner | Apache-2.0/MIT | Unix signal handling |
36 | signal-hook-registry | @vorner | Apache-2.0/MIT | Unix signal registry |
37 | smallvec | servo | Apache-2.0/MIT | Optimized small vectors |
38 | termcolor | @BurntSushi | MIT/Unlicense | Terminal color support |
39 | thread_local | @Amanieu | Apache-2.0/MIT | Per-object thread local |
40 | time | rust-lang | Apache-2.0/MIT | Time/date library |
41 | toml | @alexcrichton | Apache-2.0/MIT | TOML parser library |
42 | tracing | tokio-rs | MIT | App tracing / logging |
43 | tracing-core | tokio-rs | MIT | App tracing / logging |
44 | tracing-log | tokio-rs | MIT | log compatibility |
45 | tracing-subscriber | tokio-rs | MIT | Tracing subscribers |
46 | utf8-ranges | @BurntSushi | MIT/Unlicense | UTF-8 codepoint ranges |
47 | winapi§ | @retep998 | Apache-2.0/MIT | Windows FFI bindings |
48 | winapi-util | @BurntSushi | MIT/Unlicense | Safe winapi wrappers |
49 | wincolor | @BurntSushi | MIT/Unlicense | Windows console color |
50 | zeroize | iqlusion | Apache-2.0/MIT | Zero out sensitive data |
# | Crate Name | Origin | License | Description |
---|---|---|---|---|
1 | abscissa_derive | iqlusion | Apache-2.0 | Abscissa custom derive |
2 | cc | @alexcrichton | Apache-2.0/MIT | C/C++ compiler wrapper |
3 | cfg-if | @alexcrichton | Apache-2.0/MIT | If-like #[cfg] macros |
4 | clap_derive | @Kevin K | Apache-2.0/MIT | Command-line interface |
5 | darling | @TedDriggs | MIT | Nifty attribute parser |
6 | darling_core | @TedDriggs | MIT | Attribute parser core |
7 | darling_macro | @TedDriggs | MIT | Attribute parser macros |
8 | fnv | @alexcrichton | Apache-2.0/MIT | Fast hash function |
9 | ident_case | @TedDriggs | Apache-2.0/MIT | Case conversion utils |
10 | proc-macro2 | @alexcrichton | Apache-2.0/MIT | Shim for Macros 2.0 API |
11 | quote | @dtolnay | Apache-2.0/MIT | Rust AST to token macro |
12 | serde_derive | serde-rs | Apache-2.0/MIT | serde custom derive |
13 | strsim | @dguo | MIT | String similarity utils |
14 | syn | @dtolnay | Apache-2.0/MIT | Rust source code parser |
15 | synstructure | @mystor | Apache-2.0/MIT | syn structure macros |
16 | thiserror | @dtolnay | Apache-2.0/MIT | Error custom derive |
17 | tracing-attributes | tokio-rs | MIT | App tracing / logging |
18 | unicode-xid | unicode-rs | Apache-2.0/MIT | Identify valid Unicode |
19 | wait-timeout | @alexcrichton | Apache-2.0/MIT | Timeouts for waitpid |
The table below should help answer questions as to why a particular crate is an Abscissa dependency and whether or not it is optional. Abscissa uses [cargo features] to allow parts of it you aren't using to be easily disabled, so you only compile the parts you need.
- §
winapi
is a facade for either winapi-i686-pc-windows-gnu or winapi-x86_64-pc-windows-gnu which aren't explicitly listed for brevity and are only required on Windows platforms.