https://github.com/tylerbloom/nexus
A writer-centric wrapper for left-right
https://github.com/tylerbloom/nexus
concurrency lock-free rust rust-lang
Last synced: 11 months ago
JSON representation
A writer-centric wrapper for left-right
- Host: GitHub
- URL: https://github.com/tylerbloom/nexus
- Owner: TylerBloom
- License: lgpl-3.0
- Created: 2022-01-26T16:07:54.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-02-09T18:00:33.000Z (over 4 years ago)
- Last Synced: 2025-07-14T07:13:47.155Z (12 months ago)
- Topics: concurrency, lock-free, rust, rust-lang
- Language: Rust
- Homepage:
- Size: 18.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Overview
**NOTE:** This project is just starting out. The information below is mostly conceptual and are my plans for this project that I have sketched out. These are subject to change and will likely change. The central idea, however, will stay the same.
Nexus is a wrapper for [left-right](https://github.com/jonhoo/left-right) that allows for multiple writers while maintaining the original reader-centric functionalities. As with any concurrency primitive that allows for many writers, nexus has to make some concessions around what a writer can do.
Nexus makes two primary concessions. Writers ought not read the values stored in the left-right primitive. Changes from different writers are not guaranteed to be ordered chronologically; however, the changes from any given writer will be chronologically ordered.
## How it Works
A nexus takes a left-right writer and dispatches "workers" which act as writers.
Each worker maintains a left-right-esque pair of operations logs to allow for lock-free reading and writing between the worker and the writer.
Each worker publishes its changes for the left-right writer to read and apply to the stored structure.