Skip to content

Commit

Permalink
Docs
Browse files Browse the repository at this point in the history
  • Loading branch information
vertexclique committed Jan 21, 2024
1 parent ae993e3 commit 282996d
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 7 deletions.
2 changes: 1 addition & 1 deletion docs/_coverpage.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
PROACTIVE IO & RUNTIME SYSTEM <small>est. 2019</small>

[![](assets/img/github.svg) GitHub](https://github.com/vertexclique/nuclei)
[![](assets/img/sitemap-solid.svg) What is Nuclei?](https://vertexclique.github.io/nuclei/)
[![](assets/img/atom-solid.svg) What is Nuclei?](https://vertexclique.github.io/nuclei/)
1 change: 1 addition & 0 deletions docs/assets/img/atom-solid.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/img/req_per_sec.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,12 @@
--theme-hue: 120;
--theme-color: rgb(106, 25, 205);
/* <a href="https://ibb.co/mhM4z6P"><img src="https://i.ibb.co/DwSQK5j/vibrant-obelisk.png" alt="vibrant-obelisk" border="0"></a> */
--cover-background-color: #00000000;
--cover-background-color: rgb(106, 25, 205);
--cover-background-image: url(https://s13.gifyu.com/images/S0ULN.gif);
--cover-background-mask-color: rgb(106, 25, 205);
--cover-background-blend-mode: multiply;
--cover-background-mask-opacity: 0.3;
--cover-background-mask-visibility: 0.1;
--cover-button-background: rgb(118, 198, 251);
--cover-button-border: rgb(118, 198, 251);
--cover-button-border: 1px solid var(--theme-color);
Expand Down
36 changes: 35 additions & 1 deletion docs/introduction.md
Original file line number Diff line number Diff line change
@@ -1 +1,35 @@
# Nuclei
# Nuclei

Nuclei is a [proactor-based](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.49.9183) IO system which is runtime agnostic and can work with any runtime.
The proactor system's design principles are matching [Boost Asio](https://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/overview/core/async.html).
Nuclei is not using a conventional reactor approach. It is completely asynchronous, and it's wrapping poll based IO in a proactive fashion.

Nuclei uses [io_uring](https://kernel.dk/io_uring.pdf) on Linux as the primary IO backend, secondarily you can use [epoll](https://en.wikipedia.org/wiki/Epoll). On MacOS, Nuclei is using [kqueue](https://en.wikipedia.org/wiki/Kqueue).
On Windows, the [IOCP](https://en.wikipedia.org/wiki/Input/output_completion_port) backend [will be used](https://github.com/vertexclique/nuclei/pull/3).

Current io_uring implementation needs Linux kernel 5.11+.

## Features

* Async TCP, UDP, Unix domain sockets and files…
* Proactor system don’t block.
* Scatter/Gather operations
* Minimal allocation as much as possible.
* More expressive than any other runtime.
* Completely asynchronous I/O system with lock free programming.

## What is the difference between this and other runtime X?

* Nuclei is the first project that **integrated io_uring and made available to others via proactive** approach.
* It works with **demuxing IO requests with Proactive IO** approach.
* It is the **only proactive IO system**, it doesn't bundle its own runtime.
* You can **use any executor** with Nuclei.
* You can also add features of executors to Nuclei if needed, but most probably it is supported out-of-the-box.
* Uses standardized [**non-sticky Async traits**](https://docs.rs/futures/latest/futures/io/index.html) that won't latch you to any executor.
* But if you have stockholm syndrome, you can still use them with Nuclei without any problems.
* Performance optimized for heavy workloads and running under these heavy workloads already in various tech companies.
* Example request distribution where nuclei runs: ![Req/sec](assets/img/req_per_sec.png)

## Donations
* Consider supporting Nuclei development via GitHub sponsors:
<iframe src="https://github.com/sponsors/vertexclique/card" title="Sponsor vertexclique" height="225" width="600" style="border: 0;"></iframe>
2 changes: 2 additions & 0 deletions docs/quickstart.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
# Quickstart Guide

Everything that interacts with I/O is `Handle` in Nuclei.
3 changes: 2 additions & 1 deletion docs/sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
- [Quickstart Guide](quickstart)
- **Internals**
- [Design Principles](designprinciples)
- [Recovery System](recosystem)
- **Knowledge Base**
-
4 changes: 1 addition & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@
//! ### Executor
//! Executor is using `async-global-executor`. Available features are:
//! * `async-exec`: Uses `async-io` feature of `async-global-executor`.
//! * `tokio`
//! * `tokio02`
//! * `tokio03`
//! * `tokio`: Uses tokio
// These need to go through time.
#![allow(dead_code, unused_variables)]
Expand Down

0 comments on commit 282996d

Please sign in to comment.