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