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)
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 |
cl-ppcre |
std |
uring |
xkb |
evdev |
btrfs |
sb-bsd-sockets |
zstd |
flexi-streams |
homer |
gui |
dsp |
packy |
pod |
net |
vc/tests |
cry |
dat |
io/tests |
log/tests |
log |
core/lib |
core |
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 |
DISK-BTRFS |
DISK-GENERIC |
XSUBSEQ |
SMART-BUFFER |
STATIC-VECTOR |
ZSTD-STREAM |
ZSTD-SIMPLE |
CHUNKY |
STREAMS |
SERVE-EVENT |
SANITY |
NULL-CONCATENATED-XSUBSEQS |
DECOMPRESSION-BUFFER-SIZE* |
PEEK-CHAR* |
HEADER-LENGTH |
WITH-ZSTD-INPUT |
*DEFAULT-DISK-LIMIT* |
UNREAD-CHAR* |
SOCKOPT-PEERCRED |
FLATE-ERROR |
FILL-BUFFER |
IO-SOCKET-ERROR |
BUFFER-ON-MEMORY-P |
WITH-ZSTD-STREAM |
INPUT-CHUNKING-P |
MAKE-STATIC-VECTOR |
ASSERT-CHAR |
WITH-STATIC-STREAMS |
XNCONC |
XLENGTH |
COMPRESSING-STREAM |
INPUT-SIZE |
COMPRESS-WITH |
OUTPUT-AVAILABLE-P |
MAKE-SMART-BUFFER |
ENSURE-FILE-POSITION |
OUTPUT-BUFFER |
FINISH-COMPRESSION |
XNCONCF |
SOCKOPT-RECEIVE-TIMEOUT |
COMPRESSION-LEVEL |
+DEFAULT-CHUNKED-OUTPUT-SIZE+ |
WITH-ZSTD-OUTPUT |
PEEKED-SIZE |
ASSERT-CRLF |
WITH-XSUBSEQS |
COMPRESS |
SIMPLE-CHUNKED-INPUT-STREAM |
OUTPUT |
SOCKOPT-REUSE-PORT |
INPUT-AVAILABLE-P |
DELETE-STREAM-FILE |
*DEFAULT-MEMORY-LIMIT* |
WRITE-TO-BUFFER |
SMART-BUFFER |
DECOMPRESSION-ERROR |
COERCE-TO-SEQUENCE |
*COMPRESSION-BUFFER-SIZE* |
FILL-FOREIGN-MEMORY |
SOCKOPT-PEER-CRED |
INPUT-POSITION |
DECOMPRESS |
STATIC-STREAM |
DECOMPRESS-OBJECT |
MAKE-CONCATENATED-XSUBSEQS |
*DECOMPRESSION-BUFFER-SIZE* |
WITH-SMART-BUFFER |
PEEKED-BYTES |
OCTET-XSUBSEQ |
CHUNKED-IO-STREAM |
REPLACE-FOREIGN-MEMORY |
DECOMPRESSOR |
COERCE-TO-STRING |
SNAPSHOT |
IO-STREAM |
COMPRESSOR |
SOCKOPT-LINGER |
DECOMPRESS-WITH |
BUFFER-LIMIT-EXCEEDED |
CHUNKED-INPUT-STREAM-TRAILERS |
IO-ERROR |
MAKE-BOUND-STREAM |
BLOCKED-INPUT-STREAM |
*DECOMPRESSOR* |
MAKE-COMPRESSING-STREAM |
FREE-STATIC-VECTOR |
CHUNKED-INPUT-STREAM |
ZSTD-DECOMPRESSOR |
CHUNKED-OUTPUT-STREAM |
ZSTD-ERROR |
*COMPRESSION-TYPES* |
OUTPUT-SIZE |
INPUT-BUFFER |
INPUT |
WITH-STATIC-VECTORS |
*COMPRESSION-LEVEL* |
OCTET-CONCATENATED-XSUBSEQS |
CONCATENATED-XSUBSEQS |
BLOCKED-STREAM |
PEEKED-COUNT |
PEEKING-INPUT-STREAM |
COMPRESSION-ERROR |
DECOMPRESSING-STREAM |
FINISH-DECOMPRESSION |
BLOCKED-OUTPUT-STREAM |
RESET-COMPRESSOR |
HEADER-TYPE |
OUTPUT-CHUNKING-P |
OFFSET |
SIGNAL-EOF |
CHUNKED-INPUT-STREAM-EXTENSIONS |
WITH-STATIC-VECTOR |
WITH-ZSTD-BUFFER |
COMPRESS-OBJECT |
WITH-STATIC-STREAM |
CHUNKED-STREAM |
SYNC |
DELETE-TEMPORARY-FILES |
BOUND-INPUT-STREAM |
STRING-XSUBSEQ |
STRING-CONCATENATED-XSUBSEQS |
*DEFAULT-STATIC-STREAM-SIZE* |
IO-SOCKET |
SOCKOPT-SEND-TIMEOUT |
ZSTD-COMPRESSOR |
*COMPRESSOR* |
*COMPRESSION-TYPE* |
FINALIZE-BUFFER |
HEADER |
MAKE-CHUNKED-STREAM |
XSUBSEQ |
MAKE-DECOMPRESSING-STREAM |
OUTPUT-POSITION |
STATIC-VECTOR |
RESET-DECOMPRESSOR |
BLOCKED-IO-STREAM |
IO-STREAM-ERROR |
STATIC-VECTOR-POINTER |
READ-CHAR* |
EXPECTING-CRLF-P |
WITH-CHARACTER-STREAM-SEMANTICS |