منصوبے کے بارے میں
Keel (Kernel Event Engine, Lightweight) ایک پورٹیبل غیر ہم وقت نیٹ ورکنگ سبسٹریٹ ہے جو C میں لکھا گیا ہے۔ اس کا بنیادی خیال ایک ماڈل غیر جانبدار ٹرانسپورٹ لیئر ہے: سیمنٹک stream، listener اور datagram تجریدات جو یا تو readiness یا completion execution model سے چلتی ہیں، اور ایک socket seam پر بیٹھی ہیں جو کسی آپریٹنگ سسٹم کو فرض نہیں کرتی۔
آرکیٹیکچر تین متعامد محوروں پر منظم ہے:
- ایونٹ محور: readiness بیک اینڈز (epoll، kqueue، WSAPoll، poll) دلچسپی رجسٹر کرتے ہیں اور EAGAIN پر دوبارہ کوشش کرتے ہیں؛ completion بیک اینڈز (io_uring، IOCP) ملکیت والے آپریشنز جمع کرتے ہیں اور تکمیلات حاصل کرتے ہیں۔ دونوں ایک چھوٹے ایونٹ لوپ انٹرفیس کے پیچھے بیٹھتے ہیں، اور ہر ایک اپنی مقامی سیمنٹکس رکھتا ہے بجائے دوسرے کی نقل کرنے کے۔
- ساکٹ محور: ایک pluggable provider vtable (KlSocketProvider) جس میں POSIX اور Winsock بلٹ ان ہیں، نیز lwIP (BSD socket layer اور ایک raw NO_SYS callback stack) اور ایک freestanding UEFI EFI_TCP4/UDP4 provider کے لیے شپ کی گئی انٹیگریشنز۔ capability flags native fd، writev اور sendfile جیسی خصوصیات کو محدود کرتے ہیں۔
- پروٹوکول محور: HTTP/1.1، HTTP/2، WebSocket، SSE اور ایک async DNS resolver سبسٹریٹ کے صارفین ہیں، اس کا مقصد نہیں۔ پروٹوکول کوڈ کا مقصد صرف connection/stream اور ایونٹ تجریدات کے ذریعے جانا ہے، کبھی براہ راست کسی پلیٹ فارم نیٹ ورکنگ ہیڈر یا ایونٹ انجن تک نہیں؛ پروجیکٹ default-deny ساختی بلڈ گیٹس بیان کرتا ہے جو اس علیحدگی کی خلاف ورزی پر ناکام ہو جاتے ہیں۔
پروٹوکول اور سرور خصوصیات میں شامل ہیں: ایک pluggable HTTP parser (llhttp vendored)، vtable کے ذریعے pluggable TLS، pluggable body readers، short-circuiting کے ساتھ per-route middleware، بلٹ ان CORS middleware، RFC 2046 multipart form-data، تین response modes (buffered writev، sendfile، chunked streaming)، بغیر allocation کے route parameter capture، خودکار 408 responses کے ساتھ connection timeouts، access logging، async server handlers جو connections کو suspend اور resume کرتے ہیں، sync اور async HTTP clients، pipe wakeup کے ساتھ ایک thread pool، generic fd watchers، SSE framing، response compression (miniz gzip) اور client decompression، ایک keep-alive connection pool، redirect following، HTTP proxy اور CONNECT tunneling، ایک backpressure write buffer، timer scheduling، اور sqlite3-style error codes۔
نیٹ ورکنگ اضافی خصوصیات میں شامل ہیں: peer credentials کے ساتھ UNIX domain socket servers، peer security labels، mTLS client certificate inspection، trusted CIDRs کے ذریعے محدود PROXY protocol support، inherited fds کے ذریعے socket activation (systemd LISTEN_FDS)، IOCP پر Windows named pipes، batching کے ساتھ ایک مستحکم fixed-slot UDP datagram API، multicast/broadcast، ECN/TOS marking اور offload support، ایک pluggable async DNS resolver جس میں بلٹ ان dual-family implementation ہے، اور Happy Eyeballs client connection racing۔
بلڈ آپشنز میں epoll، kqueue، io_uring، poll اور IOCP بیک اینڈز، Cosmopolitan C، native MSVC، اور optimization flags کے لیے embedder hooks شامل ہیں۔ README کے مطابق ایک single thread پر 111K req/s اور دونوں execution models پر ASan/UBSan کے تحت testing، ایک vendored dependency (llhttp) کے ساتھ۔
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.