From e3ac63251d4e95b3e59b2fbfb3427a0f90814489 Mon Sep 17 00:00:00 2001 From: Tejas Garrepally Date: Sat, 14 Sep 2024 20:01:06 -0400 Subject: [PATCH] docs: update readme --- README.md | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index e4240eb..43294fb 100644 --- a/README.md +++ b/README.md @@ -10,15 +10,6 @@ only notifies you of the readiness, and you would need to perform the `read` you This should be abstracted away. The user using this framework should not have to think about IO readiness events, and the underlying implementation of the asynchronous interface. -## Features - -- Cross platform: `kqueue`, `epoll` -- `glibc` system call hooks -- Fast context switches (powered by [Boost.Context](https://github.com/boostorg/context)) -- (Eventually) No runtime allocations- Intrusive pointers -- Supports unix domain sockets -- Support for CPU affinity and pinning threads to cores - ## Usage Loom requires that you hook your main method (e.g the same watch Catch2 does) in order to intercept system calls before @@ -38,24 +29,23 @@ $LOOM_MAIN(int argc, char* argv[]) { } ``` +## Features + +- Cross platform: `kqueue`, `epoll` +- `glibc` system call hooks +- Fast context switches (powered by [Boost.Context](https://github.com/boostorg/context)) +- (Eventually) No runtime allocations- Intrusive pointers +- Supports unix domain sockets +- Support for CPU affinity and pinning threads to cores + ## Resources - [Tiger Style](https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/TIGER_STYLE.md) - [⭐Fibers](https://graphitemaster.github.io/fibers/) -- [Old article about how to write high performance servers](https://web.archive.org/web/20060306033511/https://pl.atyp.us/content/tech/servers.html) - Talks about the four horsemen of poor performance. Read if necessary - - Context switches - - Data copies - - Lock contention - - Memoy allocation - -*`kqueue`*: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kqueue.2.html - -- *`epoll`*: Can add the edge triggered and level triggered stuff also. Since we are using `epoll` and `io_uring` - and `kqueue`, - we just make the edge triggered the default. - -## Ideas +- [Writing high-performance servers](https://web.archive.org/web/20060306033511/https://pl.atyp.us/content/tech/servers.html) +- [kqueue documentation](https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kqueue.2.html) +- [epoll documentation](https://man7.org/linux/man-pages/man7/epoll.7.html) +## Roadmap - [ ] Inject tracy profiling before functions during build step using AST transformations - [ ] Use `eventfd` for shared mem OB?