RepoMicrosoftMicrosoftpublished Apr 16, 2025seen 5d

microsoft/oxidizer

Rust

Open original ↗

Captured source

source ↗
published Apr 16, 2025seen 5dcaptured 8hhttp 200method plain

microsoft/oxidizer

Description: Oxidizer is a platform for Rust service development which bridges the gaps in the crate ecosystem to deliver a turn-key solution to enable the efficient creation of high-scale high-availability and high-performance services in Rust.

Language: Rust

License: MIT

Stars: 104

Forks: 18

Open issues: 13

Created: 2025-04-16T15:21:33Z

Pushed: 2026-06-10T20:02:50Z

Default branch: main

Fork: no

Archived: no

README:

This repository contains a set of crates that help you build robust highly scalable services in Rust.

  • [The Oxidizer Project](#the-oxidizer-project)
  • [Crates](#crates)
  • [About this Repo](#about-this-repo)
  • [Adding New Crates](#adding-new-crates)
  • [Publishing Crates](#publishing-crates)
  • [Documenting Crates](#documenting-crates)
  • [CI Workflows](#ci-workflows)
  • [Pull Request Gates](#pull-request-gates)
  • [Tool Versions](#tool-versions)
  • [Trademarks](#trademarks)

Crates

These are the primary crates built out of this repo:

  • [anyspawn](./crates/anyspawn/README.md) - A generic task spawner compatible with any async runtime.
  • [bytesbuf](./crates/bytesbuf/README.md) - Types for creating and manipulating byte sequences.
  • [bytesbuf_io](./crates/bytesbuf_io/README.md) - Asynchronous I/O abstractions expressed via bytesbuf types.
  • [cachet](./crates/cachet/README.md) - A composable, customizable multi-tier caching library with rich feature support.
  • [cachet_memory](./crates/cachet_memory/README.md) - In-memory cache tier backed by Moka for the cachet caching library.
  • [cachet_service](./crates/cachet_service/README.md) - Layered service integration for the cachet caching library.
  • [cachet_tier](./crates/cachet_tier/README.md) - Core cache tier trait and abstractions for building cache backends.
  • [data_privacy](./crates/data_privacy/README.md) - Mechanisms to classify, manipulate, and redact sensitive data.
  • [fetch](./crates/fetch/README.md) - "Universal, composable and resilient HTTP client."
  • [fetch_hyper](./crates/fetch_hyper/README.md) - Hyper-based HTTP transport utilities for fetch.
  • [fetch_options](./crates/fetch_options/README.md) - Options types for 'fetch' crate.
  • [fundle](./crates/fundle/README.md) - Compile-time safe dependency injection for Rust.
  • [http_extensions](./crates/http_extensions/README.md) - Shared HTTP types and extension traits for clients and servers.
  • [layered](./crates/layered/README.md) - A foundational service abstraction for building composable, middleware-driven systems.
  • [multitude](./crates/multitude/README.md) - Fast and flexible arena allocator.
  • [ohno](./crates/ohno/README.md) - High-quality Rust error handling.
  • [recoverable](./crates/recoverable/README.md) - Recovery information and classification for resilience patterns.
  • [seatbelt](./crates/seatbelt/README.md) - Resilience and recovery mechanisms for fallible operations.
  • [seatbelt_http](./crates/seatbelt_http/README.md) - HTTP-specific extensions for the seatbelt crate.
  • [templated_uri](./crates/templated_uri/README.md) - Standards-compliant URI handling with templating, safety validation, and data classification
  • [thread_aware](./crates/thread_aware/README.md) - Facilities to support thread-isolated state.
  • [tick](./crates/tick/README.md) - Provides primitives to interact with and manipulate machine time.
  • [uniflight](./crates/uniflight/README.md) - Coalesces duplicate async tasks into a single execution.

About this Repo

The following sections explain the overall engineering process we use in this repo.

To set up a local PC environment capable of exercising all the tooling used by this repo's development processes, you can follow the guide in [DEVELOPMENT.md](./DEVELOPMENT.md).

Adding New Crates

Adding a new crate to this repo is done by running the scripts\add-crate.ps1 script. It will prompt you for a few bits of state, and then will get everything wired up that needs to be.

The add-crate script does the following:

  • Adds an entry for the crate to the [Crates](#crates) section in this README file.
  • Adds an entry for the crate to the top-level [CHANGELOG.md](./CHANGELOG.md) file.
  • Prepares a README.md file for the crate, setup for use with [

cargo-doc2readme](https://crates.io/crates/cargo-doc2readme) with a set of appropriate CI badges.

  • Creates an empty CHANGELOG.md file for the crate, which will later get populated by the scripts\release-packages.ps1

script.

  • Creates placeholder logo.png and favicon.ico files for the crate, which you're expected to replace with legit

crab-themed logo and icon.

Publishing Crates

Releasing new versions of crates to crates.io is handled by an internal Microsoft automation process. To release a new version of any crate, follow this simple process:

1. Make sure the changes you want to release have all been committed to the repo.

2. Create a branch off of main.

3. Run ./scripts/release-packages.ps1 -Packages '@' to update versions and changelogs. The change type for each package is one of breaking, nonbreaking, patch, or an explicit version like 1.0.0. To release several crates together, list them all in the same -Packages argument (for example, 'foo@nonbreaking','bar@patch'); the script plans the entire release up-front.

4. Create a PR like normal to push changes out.

Once your PR is merged, automation will kick in. It will tag the commit and push the crate to crates.io.

Documenting Crates

We want our crates to have world-class documentation such that our customers can enjoy discovering and using our features. We expect our Rust code to be fully documented in the normal Rust way, and we introduce two doc-related automation processes:

  • The README.md file in each crate's directory is auto-generated from the crate-level documentation.

We use the `cargo-doc2readme` tool which reads the crate docs, resolves intra-doc links, and generates the README.md file using a shared template. A pull request gate ensures the README.md file always reflects the latest crate documentation.

  • The CHANGELOG.md file in each crate's directory is auto-generated from the commits to a crate's directory by the

scripts/release-packages.ps1 script.

To generate documentation locally with all features enabled (including feature-gated items), run:

just docs

This requires the Rust nightly toolchain to be…

Excerpt shown — open the source for the full document.

Notability

notability 5.0/10

New repo, moderate stars.