عن المشروع
Okay! هي مكتبة تأثيرات قابلة للتوسيع لـ Scala 3 مستوحاة من نظريات Rúnar Bjarnason و Oleg Kiselyov و Robert Atkey. وهي توفر إطار عمل شاملاً لإدارة التأثيرات الجانبية وتدفق التحكم دون أي تبعيات، مع دعم JVM (JDK 21+) و Scala.js و Scala Native من مصدر واحد.
البنية الأساسية والقدرات:
- التحكم المحدود (Delimited Control): تنفيذ monad استمرارية مُعلم (`Cont`) وواجهة final tagless للتحكم المحدود، مما يضمن سلامة المكدس لسلاسل flatMap.
- التأثيرات القابلة للتوسيع: تدعم ترميزات initial (Free) و final (Church/Eff). وتتضمن تأثيرات مدمجة لـ Reader و Writer (القائم على البث) و State (بما في ذلك typestate) و Throws (الأخطاء المحددة النوع) و Choice (عدم الحتمية/التراجع).
- العمليات غير المتزامنة عابرة للمنصات: توفر تأثير `Async` عالمي مع قدرات `spawn` و `par` و `race` و `timeout`. وتستفيد من الخيوط الافتراضية (Loom) على JVM وحلقة الأحداث (event loop) على JS.
- تدفقات عالية الأداء: تنفيذ التدفقات كـ codata مع أنماط استهلاك متعددة، بما في ذلك وضع "Staged" للدمج في وقت التجميع، والذي يتفوق بشكل كبير على المكتبات الأخرى في النظام البيئي وفقاً للاختبارات المرجعية.
- التزامن: تتميز بوجود fibers، وقنوات مع ضغط عكسي (backpressure)، وبيئة تشغيل موزعة (`okay-cluster`) لتوزيع المصادر المجزأة عبر العمال.
الوحدات في الطبقات العليا:
- Text: تحليل لغوي تدفقي، وتحليل تزايدي، ومخطط موحد لـ JSON/CBOR/Markdown.
- AI/Models: تكامل لنماذج LLMs و RAG (توليد معزز بالاسترجاع) والوكلاء، بما في ذلك تنفيذ كامل لبروتوكول Model Context Protocol (MCP).
- UI: نظام view-as-value يمكنه العرض في النهايات الطرفية (terminals) أو React أو مضيفات الاختبار.
- Security: تفويض بدون تبعيات، و JWT، وتدفقات عميل OAuth2.
- Wires: دعم REST و WebSocket عبر JDK أو Jetty أو Netty.
التوافق التشغيلي: توفر المكتبة جسوراً لـ cats و ZIO و kyo و fs2 و Kafka و Spark و Flink و JDBC.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.