Abscissa

Crate Docs Apache 2.0 Licensed Build Status Appveyor Status

Abscissa is a microframework for building Rust applications (either CLI tools or network/web services), aiming to provide a large number of features with a minimal number of dependencies, and with a strong focus on security.

Documentation

Features

Depencencies

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:

| # | Crate Name | Origin | License | unsafe? | Description | |----|------------------|-----------------|----------------|-----------|-------------------------| | 1 | [abscissa] | [iqlusion] | Apache-2.0 | yes | App microframework | | 2 | [backtrace] | [@alexcrichton] | MIT/Apache-2.0 | yes | Capture stack traces | | 3 | [backtrace-sys] | [@alexcrichton] | MIT/Apache-2.0 | yes | Capture stack traces | | 4 | [byteorder] | [@BurntSushi] | MIT/Unlicense | yes | Convert endianness | | 5 | [canonical-path] | [iqlusion] | Apache-2.0 | yes | Get canonical fs paths | | 6 | [chrono] | [chronotope] | MIT/Apache-2.0 | yes | Time/date library | | 7 | [failure] | [@withoutboats] | MIT/Apache-2.0 | yes | Error handling | | 8 | [isatty] | [@dtolnay] | MIT/Apache-2.0 | yes | Are stdout/stderr TTYs? | | 9 | [lazystatic] | [rust-lang] | MIT/Apache-2.0 | yes | Heap-allocated statics | | 10 | [libc] | [rust-lang] | MIT/Apache-2.0 | yes | C library wrapper | | 11 | [log] | [rust-lang] | MIT/Apache-2.0 | yes | Logging facade library | | 12 | [num-integer] | [rust-num] | MIT/Apache-2.0 | yes | Integer trait | | 13 | [num-traits] | [rust-num] | MIT/Apache-2.0 | yes | Numeric traits | | 14 | [redoxsyscall] | [redox-os] | MIT | yes | Redox OS syscall API | | 15 | [rustc_demangle] | [@alexcrichton] | MIT/Apache-2.0 | yes | Symbol demangling | | 16 | [semver] | [@steveklabnik] | MIT/Apache-2.0 | yes | Semantic versioning | | 17 | [semver-parser] | [@steveklabnik] | MIT/Apache-2.0 | no† | Parser for semver spec | | 18 | [serde] | [serde-rs] | MIT/Apache-2.0 | yes | Serialization framework | | 19 | [simplelog] | [@drakulix] | MIT/Apache-2.0 | yes | Simple logging facility | | 20 | [term] | [@Stebalien] | MIT/Apache-2.0 | yes‡ | Terminal color support | | 21 | [time] | [rust-lang] | MIT/Apache-2.0 | yes | Time/date library | | 22 | [toml] | [@alexcrichton] | MIT/Apache-2.0 | no | TOML parser library | | 23 | [winapi]§ | [@retep998] | MIT/Apache-2.0 | yes | Windows API bindings | | 24 | [zeroize] | [iqlusion] | Apache-2.0 | yes | Zero out sensitive data |

Build / Development Dependencies

| # | Crate Name | Origin | License | unsafe? | Description | |----|-------------------|------------------|----------------|-----------|-------------------------| | 1 | [abscissaderive] | [iqlusion] | Apache-2.0 | yes | Abscissa custom derive | | 2 | [cc] | [@alexcrichton] | MIT/Apache-2.0 | yes | C/C++ compiler wrapper | | 3 | [cfg-if] | [@alexcrichton] | MIT/Apache-2.0 | no | If-like #[cfg] macros | | 4 | [failurederive] | [@withoutboats] | MIT/Apache-2.0 | yes | failure custom derive | | 5 | [proc-macro2] | [@alexcrichton] | MIT/Apache-2.0 | yes | Shim for Macros 2.0 API | | 6 | [quote] | [@dtolnay] | MIT/Apache-2.0 | no | Rust AST to token macro | | 7 | [serdederive] | [serde-rs] | MIT/Apache-2.0 | no | serde custom derive | | 8 | [syn] | [@dtolnay] | MIT/Apache-2.0 | yes | Rust source code parser | | 9 | [synstructure] | [@mystor] | MIT/Apache-2.0 | no | syn structure macros | | 10 | [unicode-xid] | [unicode-rs] | MIT/Apache-2.0 | no | Identify valid Unicode | | 11 | [versioncheck] | [@SergioBenitez] | MIT/Apache-2.0 | no | rustc feature detection |

Dependency Relationships

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.

| Crate Name | [Cargo Features] | Platform | Required By | |-------------------|------------------|-----------|-------------| | [abscissa] | mandatory | - | - | | [abscissaderive] | mandatory | - | [abscissa] | | [backtrace] | mandatory | - | [failure] | | [backtrace-sys] | mandatory | - | [backtrace] | | [byteorder] | shell | - | [term] | | [canonical-path] | mandatory | - | [abscissa] | | [cc] | mandatory | - | [backtrace-sys], [zeroize] | | [cfg-if] | mandatory | - | [backtrace] | | [chrono] | logging | - | [simplelog] | | [failure] | mandatory | - | [abscissa] | | [failurederive] | mandatory | - | [failure] | | [isatty] | shell | - | [abscissa] | | [lazystatic] | mandatory | - | [abscissa] | | [libc] | shell | unix | [isatty] | | [log] | logging | - | [abscissa] | | [num-integer] | logging | - | [chrono] | | [num-traits] | logging | - | [chrono], [num-integer] | | [proc-macro2] | mandatory | - | [abscissaderive], [failurederive], [quote], [serdederive] | | [redoxsyscall] | shell | redox | [isatty] | | [rustcdemangle] | mandatory | - | [backtrace] | | [semver] | application | - | [abscissa] | | [semver-parser] | application | - | [abscissa] | | [serde] | config | - | [abscissa] | | [serdederive] | config | - | [serde] | | [simplelog] | logging | - | [abscissa] | | [term] | shell | - | [abscissa] | | [time] | logging | - | [chrono] | | [unicode-xid] | mandatory | - | [proc-macro2] | | [versioncheck] | mandatory | - | [lazy_static] | | [winapi]§ | shell | windows | [isatty] | | [zeroize] | mandatory | - | [abscissa] |

Frequently Asked Questions (FAQ)

Q1: Why is it called "abscissa"?

A1: An abscissa represents the elevation of a point above the y-axis. In that regard, "Abscissa" can be thought of as a pun about getting off the ground, or elevating your project.

The word "abscissa" is also the key to the [Kryptos K2] panel.

License

The abscissa crate is distributed under the terms of the Apache License (Version 2.0).

Copyright © 2018 iqlusion

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Parts of this code were taken from the following projects, which have agreed to license their code under the Apache License (Version 2.0):