OCapN implementation in Rust
Go to file
Ash Walker 00f53a19dd
publishing tests
2024-04-07 16:33:56 -04:00
lib publishing tests 2024-04-07 16:33:56 -04:00
src don't remember what this was 2024-04-06 14:48:18 -04:00
tests move netlayer impls to separate library, ... 2024-03-15 13:24:08 -04:00
.gitignore add unix socket netlayer, add mock netlayer, improve onion netlayer, run tests for existing netlayers 2024-03-04 21:04:28 -05:00
CHANGELOG.md initial commit 2023-12-10 15:45:12 -05:00
Cargo.lock feat: uri encoding/decoding for locators 2024-03-23 10:07:38 -04:00
Cargo.toml publishing tests 2024-04-07 16:30:40 -04:00
README.md docs(README): hide license badge (it was displaying the wrong license) 2024-03-07 18:48:02 -05:00
flake.lock ... 2024-01-16 16:59:16 -05:00
flake.nix ... 2024-01-16 16:59:16 -05:00
rust-analyzer.json add unix socket netlayer, add mock netlayer, improve onion netlayer, run tests for existing netlayers 2024-03-04 21:04:28 -05:00
rust-toolchain.toml ... 2024-02-12 15:06:50 -05:00

README.md

Rexa

crates.io commits since last release docs.rs

A library implementing OCapN.

Progress

  • Async runtime agnostic
  • Test with ocapn-test-suite (partially working; requires OnionNetlayer to work)
  • Syrup:
    • #[derive(Serialize, Deserialize)] (partial; missing enums, some other features)
    • Design better way of handling enums
  • CapTP:
    • Crossed Hellos mitigation
    • Figure out ideal way to prevent reader/writer generics from infecting everything else
      • Right now, it's difficult to write code that can use multiple netlayers at once
    • Should we store locally exported objects as Arc<dyn Object>, or should we use a message channel?
    • Figure out how to deal with promise pipelining
    • Third-party handoffs
    • Operations:
      • op:start-session
      • op:deliver-only
      • op:deliver
      • op:pick
      • op:abort
      • op:listen
      • op:gc-export
      • op:gc-answer
    • Bootstrap:
      • fetch
      • deposit-gift
      • withdraw-gift
    • Promises:
      • fulfill
      • break
  • Netlayers:
    • Onion Netlayer (arti's onion service support is shaky right now)
    • Manage multiple transport types using some sort of netlayer manager struct?
  • Locators:
    • Deserialize from URI

Examples

Etymology

  • "R" as in "Rust"
  • "Exa" as in:
    • "exo", a prefix meaning "outer" or "external"
    • "Exapunks", a puzzle game about distributed programming