इस प्रोजेक्ट के बारे में

Okay! Scala 3 के लिए एक extensible effects लाइब्रेरी है जो Rúnar Bjarnason, Oleg Kiselyov, और Robert Atkey के सिद्धांतों से प्रेरित है। यह शून्य निर्भरता (zero dependencies) के साथ साइड इफेक्ट्स और कंट्रोल फ्लो को प्रबंधित करने के लिए एक व्यापक ढांचा प्रदान करता है, जो एक ही स्रोत से JVM (JDK 21+), Scala.js, और Scala Native का समर्थन करता है। मुख्य आर्किटेक्चर और क्षमताएं: - Delimited Control: यह एक parameterized continuation monad (`Cont`) और delimited control के लिए एक final tagless इंटरफेस लागू करता है, जो flatMap चेन्स के लिए stack safety सुनिश्चित करता है। - Extensible Effects: यह initial (Free) और final (Church/Eff) दोनों encodings का समर्थन करता है। इसमें Reader, Writer (streaming-based), State (typestate सहित), Throws (typed errors), और Choice (nondeterminism/backtracking) के लिए इन-बिल्ट इफेक्ट्स शामिल हैं। - Cross-Platform Async: यह `spawn`, `par`, `race`, और `timeout` क्षमताओं के साथ एक यूनिवर्सल `Async` इफेक्ट प्रदान करता है। यह JVM पर वर्चुअल थ्रेड्स (Loom) और JS पर इवेंट लूप का लाभ उठाता है। - High-Performance Streams: यह कई खपत मोड के साथ codata के रूप में streams लागू करता है, जिसमें संकलन-समय फ्यूजन (compile-time fusion) के लिए एक "Staged" मोड शामिल है जो बेंचमार्क में अन्य इकोसिस्टम लाइब्रेरीज़ से काफी बेहतर प्रदर्शन करता है। - Concurrency: इसमें fibers, बैकप्रेशर के साथ channels, और वर्कर्स में चंक्ड सोर्स फैलाने के लिए एक वितरित रनटाइम (`okay-cluster`) शामिल है। अपर-लेयर मॉड्यूल: - Text: स्ट्रीमिंग लेक्सिंग, इंक्रीमेंटल पार्सिंग, और JSON/CBOR/Markdown के लिए एक एकीकृत स्कीमा। - AI/Models: LLMs, RAG (Retrieval-Augmented Generation), और एजेंटों के लिए एकीकरण, जिसमें Model Context Protocol (MCP) का पूर्ण कार्यान्वयन शामिल है। - UI: एक view-as-value सिस्टम जो टर्मिनल्स, React, या टेस्ट होस्ट पर रेंडर कर सकता है। - Security: शून्य-निर्भरता प्राधिकरण (authorization), JWT, और OAuth2 क्लाइंट फ्लो। - Wires: JDK, Jetty, या Netty के माध्यम से REST और WebSocket समर्थन। इंटरऑपरेबिलिटी: यह लाइब्रेरी cats, ZIO, kyo, fs2, Kafka, Spark, Flink, और JDBC के लिए ब्रिज प्रदान करती है।