প্রকল্প সম্পর্কে
Keel (Kernel Event Engine, Lightweight) হলো C-তে লেখা একটি পোর্টেবল অ্যাসিনক্রোনাস নেটওয়ার্কিং সাবস্ট্রেট। এর মূল ধারণা একটি মডেল-নিরপেক্ষ ট্রান্সপোর্ট লেয়ার: সেমান্টিক stream, listener এবং datagram অ্যাবস্ট্রাকশন, যা readiness বা completion execution মডেল দ্বারা চালিত হয় এবং এমন একটি socket seam-এর উপর বসে যা কোনো নির্দিষ্ট অপারেটিং সিস্টেম ধরে নেয় না।
আর্কিটেকচার তিনটি অর্থোগোনাল অক্ষ বরাবর সংগঠিত:
- Event অক্ষ: readiness ব্যাকএন্ড (epoll, kqueue, WSAPoll, poll) interest রেজিস্টার করে এবং EAGAIN-এ পুনরায় চেষ্টা করে; completion ব্যাকএন্ড (io_uring, IOCP) মালিকানাধীন অপারেশন সাবমিট করে এবং completion সংগ্রহ করে। উভয়ই একটি ছোট event-loop ইন্টারফেসের পিছনে থাকে, এবং প্রত্যেকে অন্যটিকে এমুলেট না করে নিজস্ব নেটিভ সেমান্টিক্স বজায় রাখে।
- Socket অক্ষ: একটি pluggable provider vtable (KlSocketProvider), যেখানে POSIX ও Winsock বিল্ট-ইন, সাথে lwIP-এর জন্য শিপ করা ইন্টিগ্রেশন (BSD socket লেয়ার এবং একটি raw NO_SYS callback স্ট্যাক) এবং একটি freestanding UEFI EFI_TCP4/UDP4 provider। capability ফ্ল্যাগ native fd, writev ও sendfile-এর মতো ফিচার নিয়ন্ত্রণ করে।
- Protocol অক্ষ: HTTP/1.1, HTTP/2, WebSocket, SSE এবং একটি async DNS resolver হলো সাবস্ট্রেটের ভোক্তা, এর উদ্দেশ্য নয়। প্রোটোকল কোড শুধুমাত্র connection/stream ও event অ্যাবস্ট্রাকশনের মধ্য দিয়ে যাওয়ার কথা, কখনো সরাসরি কোনো প্ল্যাটফর্ম নেটওয়ার্কিং হেডার বা event ইঞ্জিনে নয়; প্রকল্পটি default-deny structural build gate বর্ণনা করে যা এই বিচ্ছেদ লঙ্ঘিত হলে ব্যর্থ হয়।
প্রোটোকল ও সার্ভার ফিচারগুলোর মধ্যে রয়েছে একটি pluggable HTTP parser (llhttp vendored), vtable-এর মাধ্যমে pluggable TLS, pluggable body reader, short-circuiting সহ per-route middleware, বিল্ট-ইন CORS middleware, RFC 2046 multipart form-data, তিনটি response মোড (buffered writev, sendfile, chunked streaming), allocation ছাড়া route parameter capture, স্বয়ংক্রিয় 408 response সহ connection timeout, access logging, async server handler যা connection suspend ও resume করে, sync ও async HTTP client, pipe wakeup সহ একটি thread pool, generic fd watcher, SSE framing, response compression (miniz gzip) ও client decompression, একটি keep-alive connection pool, redirect অনুসরণ, HTTP proxy ও CONNECT tunneling, একটি backpressure write buffer, timer scheduling, এবং sqlite3-স্টাইলের error code।
নেটওয়ার্কিং অতিরিক্ত ফিচারগুলোর মধ্যে রয়েছে peer credential সহ UNIX domain socket সার্ভার, peer security label, mTLS client certificate inspection, trusted CIDR দ্বারা নিয়ন্ত্রিত PROXY protocol সাপোর্ট, উত্তরাধিকারসূত্রে পাওয়া fd-এর মাধ্যমে socket activation (systemd LISTEN_FDS), IOCP-এর উপর Windows named pipe, batching সহ একটি স্থিতিশীল fixed-slot UDP datagram API, multicast/broadcast, ECN/TOS marking ও offload সাপোর্ট, একটি pluggable async DNS resolver যাতে বিল্ট-ইন dual-family implementation আছে, এবং Happy Eyeballs client connection racing।
Build অপশনগুলোর মধ্যে রয়েছে epoll, kqueue, io_uring, poll ও IOCP ব্যাকএন্ড, Cosmopolitan C, native MSVC, এবং optimization flag-এর জন্য embedder hook। README-তে বলা হয়েছে একক থ্রেডে 111K req/s এবং উভয় execution মডেলে ASan/UBSan-এর অধীনে পরীক্ষা, সাথে একটি vendored নির্ভরতা (llhttp)।
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.