|
1 | 1 | # zzz
|
2 | 2 | 
|
3 | 3 |
|
4 |
| -## Notice |
5 |
| -zzz is currently **alpha** software and while it is generally stable, there is still a lot changing at a fairly quick pace and certain places where things are less polished. |
| 4 | +Tracking Latest Zig Stable: `0.13.0` |
6 | 5 |
|
7 |
| -You should currently only use it if you are willing to work around the rough edges. |
| 6 | +`zig fetch --save https://github.com/mookums/zzz/archive/main.tar.gz` |
8 | 7 |
|
9 | 8 | ## zzz?
|
10 |
| -zzz is a framework for writing performant and reliable networked services in Zig. |
| 9 | +zzz is a framework for writing performant and reliable networked services in Zig. It currently only supports TCP as the underlying transport layer but allows for any arbitrary protocol to run on top. |
11 | 10 |
|
12 |
| -zzz provides a solid core with support for providing your own protocol handlers and your own Async implementation. |
| 11 | +*zzz is currently **alpha** software and while it is generally stable, there is still a lot changing at a fairly quick pace and certain places where things are less polished.* |
13 | 12 |
|
14 |
| -It focuses on modularity and portability, allowing you to swap in your own implementations for various things. This allows for use in standard servers as well as embedded/bare metal domains. |
| 13 | +It focuses on modularity and portability, allowing you to swap in your own implementations for various things. Consumers can provide both a protocol and an async implementation, allowing for maximum flexibility. This allows for use in standard servers as well as embedded/bare metal domains. |
15 | 14 |
|
16 | 15 | ## Optimization
|
17 | 16 | zzz is **very** fast. Through a combination of methods, such as allocation at start up and avoiding thread contention, we are able to extract tons of performance.
|
18 | 17 |
|
| 18 | +zzz currently out performs both [http.zig](https://github.com/karlseguin/http.zig) and [zap](https://github.com/zigzap/zap), while being almost entirely written in Zig. |
| 19 | + |
19 | 20 | zzz can be configured to utilize minimal memory while remaining performant. The provided `minram` example only uses 392 kB!
|
20 | 21 |
|
21 | 22 | ## Features
|
22 |
| -- Modular Asyncronous Implementation |
| 23 | +- [Modular Asyncronous Implementation](https://muki.gg/post/modular-async) |
23 | 24 | - Allows for passing in your own Async implementation.
|
24 | 25 | - Comes with:
|
25 | 26 | - io_uring for Linux.
|
26 | 27 | - IOCP for Windows (planned).
|
27 | 28 | - kqueue for BSD (planned).
|
28 |
| -- Modular Protocol Implementation |
| 29 | +- Modular Protocol Implementation [#](#supported-protocols) |
29 | 30 | - Allows for defining your own Protocol on top of TCP.
|
30 |
| - - Comes with: |
31 |
| - - HTTP/1.1 |
32 |
| - - MQTT (planned) |
33 |
| - - HTTP/2 (planned) |
| 31 | +- Single and Multi-threaded Support |
34 | 32 | - TLS using BearSSL
|
35 | 33 | - (Almost) all memory allocated at startup
|
36 | 34 | - Only allocations happen while storing received data for parsing.
|
37 | 35 |
|
| 36 | +## Supported Protocols |
| 37 | +- [HTTP/1.1](https://github.com/mookums/zzz/blob/main/src/http) |
| 38 | +- HTTP/2 (planned) |
| 39 | +- MQTT (planned) |
| 40 | +- Custom, you can write your own |
38 | 41 |
|
39 |
| -## Platform Support |
40 |
| -zzz currently focuses on Linux as the primary platform. |
41 | 42 |
|
42 |
| -Due to the modular nature, any platform (that works with Zig) can be supported as long as you define an Async backend. |
| 43 | +## Platform Support |
| 44 | +zzz currently focuses on Linux as the primary platform. Windows, MacOS, and BSD support is planned in the near future. |
43 | 45 |
|
| 46 | +Due to the modular nature, any platform (that works with Zig) can be supported as long as you define an Async backend. This includes embedded and bare metal! |
0 commit comments