oxedize_fe2o3

A Rust ecosystem built from first principles, providing foundational tools for building robust applications.


License
BSD-2-Clause

Documentation

Hematite (fe2o3)

Hematite is a collection of Rust crates that grew from an exploration into database design and key data structures. The project includes several innovative components:

  • O3db: A log-structured key-value database inspired by BitCask.
  • JDAT: A superset of JSON adding types, combining human-readable and binary formats.
  • Shield: A secure peer-to-peer protocol built on UDP.
  • Namex: A distributed universal name codex for schemes and specifications

Status

This project is currently in early development. While the source is public for transparency and learning, I'll remain the sole developer with a view to opening up for contributions at version 1.0.0 hopefully within 12 months. Until then, I'll adjust the minor version number to reflect roughly the degree of pre-1.0.0 completion, which at the moment is about 50% (hence 0.5.0).

Feel free to:

  • Star/watch the repository if interested,
  • Open issues for bugs or feature suggestions,
  • Fork and experiment with the code,
  • Provide feedback through discussions.

However, please note that pull requests are not being accepted at this time.

Project Philosophy

Hematite started as a Rust learning experience, and one of my objectives has been to minimise third party dependencies. However, despite trying to reinvent lots of wheels it's remarkable just how many crates the library depends upon directly and indirectly, and I am grateful to all their authors and contributors.

The code is mostly unsophisticated. I would rather it be readable and obvious than "clever". While I strive for code that is economical and efficient, the main focus in this phase is on correctness, reliability and maintainability. Optimisation will follow. It avoids the use of unsafe and unwrap.

Components

The crates can be organised by their level of cross-dependence, for example:

Foundational (no dependencies)

  • fe2o3_core: Core traits and utilities, including logging
  • fe2o3_stds: Standard data enumerations

Fundamental (1-3 cross-dependencies)

  • fe2o3_crypto_traits, fe2o3_hash_traits: Cryptographic and hashing interfaces
  • fe2o3_net: Network utilities
  • fe2o3_num: Numerical type utilities
  • fe2o3_text: String manipulation and formatting

Functional (4+ cross-dependencies)

  • fe2o3_jdat: JDAT format implementation
  • fe2o3_crypto: Post-quantum cryptography implementation
  • fe2o3_hash: Generic hashing utilities

Application Level

  • fe2o3_o3db: O3DB database implementation
  • fe2o3_steel: Secure web and email server.
  • fe2o3_shield: Shield protocol implementation

Getting Started

Documentation is currently under development. For now, you can:

  1. Clone the repository,
  2. Explore the individual crates,
  3. Check the tests for usage examples.
git clone https://github.com/Oxedize/fe2o3.git
cd fe2o3
cargo test --workspace

Features

O3DB Database

O3db offers:

  • Log-structured storage,
  • Memory-optimized design,
  • Automatic garbage collection, and
  • Simple key-value interface.

JDAT

JDAT extends JSON to support:

  • Type annotations,
  • Multiple number formats,
  • Binary representation,
  • Comment support, and
  • Any type as map keys.

Shield Protocol

Shield provides:

  • Secure peer-to-peer communication,
  • Post-quantum cryptography options,
  • DOS attack protection, and
  • UDP-based messaging.

License

See the LICENSE file for license rights and limitations.

Future Plans

  • Complete initial implementation of all components,
  • Stabilize APIs,
  • Expand documentation,
  • Open for community contributions,
  • Publish to crates.io.

Contact

hello@oxedize.com