io
IO library
first-class backend is IO_URING. everything else defers to whatever is most portable (on Windows and Mac). The URING system provides low level bindings to IO_URING.
We implement a high-level API for IO. The API is meant to be as simple as possible, while still providing a great deal of control over the primitive IO queues.
Speed is the priority.
- We will probably need a specialized vector class mapping/displaced directly to URING::IOVECs
- io-stream doesn't share or inherit structure from sb-sys:fd-stream
- io-socket doesn't share or inherit structure from sb-bsd-sockets:socket
- prioritizing UDP/datagram/framed sockets over TCP/streamed
- testing:
- use NET/CODEC/TLV:TLV for passing simple messages from SQ->CQ
- use IO-OP-NOP for estimating throughput and comparing implementations (rust/tokio)
- files
pkg.lisp |
socket.lisp |
stream.lisp |
static.lisp |
fast.lisp |
xsubseq.lisp |
smart-buffer.lisp |
uring.lisp |
proto.lisp |
chunky.lisp |
flate.lisp |
zstd.lisp |
disk/pkg.lisp |
disk/util.lisp |
disk/proto.lisp |
disk/btrfs.lisp |
kbd.lisp |
io.lisp |
- packages
IO/ZSTD |
IO/XSUBSEQ |
IO/CHUNKY |
IO/TESTS |
IO/SOCKET |
IO-USER |
IO/PROTO |
IO/FAST |
IO/STATIC |
IO/STREAM |
IO/DISK/BTRFS |
IO/SMART-BUFFER |
IO/DISK |
IO |
IO/URING |
IO/FLATE |
IO/KBD |
- symbols
(#<DOC:SYMBOL-DOCUMENTATION IO/XSUBSEQ:NULL-CONCATENATED-XSUBSEQS (CLASS TYPE)> |
- tests
DISK-BTRFS |
DISK-GENERIC |
XSUBSEQ |
SMART-BUFFER |
STATIC-VECTOR |
ZSTD-STREAM |
ZSTD-SIMPLE |
CHUNKY |
STREAMS |
SERVE-EVENT |
SANITY |