Skip to content

Commit

Permalink
docs: update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
g-tejas committed Sep 15, 2024
1 parent 2191095 commit e3ac632
Showing 1 changed file with 13 additions and 23 deletions.
36 changes: 13 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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?

0 comments on commit e3ac632

Please sign in to comment.