chore: fix nits

Signed-off-by: John Nunley <dev@notgull.net>
This commit is contained in:
John Nunley 2024-04-18 20:02:25 -07:00
parent b169fb5f11
commit 2e7d9b1128
No known key found for this signature in database
GPG Key ID: 2FE69973CFD64832
1 changed files with 15 additions and 10 deletions

View File

@ -12,29 +12,31 @@ be useful for evaluating [`smol`] in comparison with other runtimes.
[`smol`] is a small, safe and fast concurrent runtime built in pure Rust. Its
primary goal is to enable M:N concurrency in Rust programs; multiple coroutines
can be multiplexed onto a single thread, allowing a server to handle hundreds
of thousands (if not millions) of clients at a time. [`smol`] is intended to
work on any scale; [`smol`] should work for programs with two coroutines as well
as two million.
of thousands (if not millions) of clients at a time. However, [`smol`] can just
as easily multiplex tasks onto multiple threads to enable blazingy fast
concurrency. [`smol`] is intended to work on any scale; [`smol`] should work for
programs with two coroutines as well as two million.
On an architectural level, [`smol`] prioritizes maintainable code and clarity.
[`smol`] aims to provide the performance of a modern `async` runtime while still
remaining hackable. This philosophy informs much of the decisions in [`smol`]'s
codebase and differentiate it from other contemporary runtimes.
On a technical level, [`smol`] is a work-stealing executor built around a
one-shot asynchronous event loop. It also contains a thread pool for filesystem
operations and a reactor for waiting for child processes to finish. [`smol`]
itself is a meta-crate that combines the features of numerous subcrates into a
single `async` runtime-based package.
On a technical level, [`smol`] is a [work-stealing] executor built around a
[one-shot] asynchronous event loop. It also contains a thread pool for
filesystem operations and a reactor for waiting for child processes to finish.
[`smol`] itself is a meta-crate that combines the features of numerous subcrates
into a single `async` runtime-based package.
The division is as follows:
smol-rs consists of the following crates:
- [`async-io`] provides a one-shot reactor for polling asynchronous I/O. It is
used for registering sockets into `epoll` or another system, then polling them
simultaneously.
- [`blocking`] provides a managed thread-pool for polling blocking operations as
asynchronous tasks. It is used by many parts of [`smol`] for turning
operations that would normally be non-concurrent into concurrent operations.
operations that would normally be non-concurrent into concurrent operations,
and vice versa.
- [`async-executor`] provides a work-stealing executor that is used as the
scheduler for an `async` program. While the executor isn't as optimized as
other contemporary executors, it provides a performant executor implemented in
@ -350,3 +352,6 @@ TODO: Explain this!
[`Runnable`]: https://docs.rs/async-task/latest/async_task/struct.Runnable.html
[`Task`]: https://docs.rs/async-task/latest/async_task/struct.Task.html
[work-stealing]: https://en.wikipedia.org/wiki/Work_stealing
[one-shot]: https://github.com/smol-rs/polling