À propos du projet
Okay! est une bibliothèque d'effets extensibles pour Scala 3 inspirée par les théories de Rúnar Bjarnason, Oleg Kiselyov et Robert Atkey. Elle fournit un cadre complet pour la gestion des effets de bord et du flux de contrôle sans aucune dépendance, prenant en charge la JVM (JDK 21+), Scala.js et Scala Native à partir d'une source unique.
Architecture centrale et capacités :
- Contrôle délimité : Implémente une monade de continuation paramétrée (`Cont`) et une interface final tagless pour le contrôle délimité, garantissant la sécurité de la pile pour les chaînes flatMap.
- Effets extensibles : Prend en charge les encodages initiaux (Free) et finaux (Church/Eff). Elle inclut des effets intégrés pour Reader, Writer (basé sur le streaming), State (y compris le typestate), Throws (erreurs typées) et Choice (non-déterminisme/backtracking).
- Async multiplateforme : Fournit un effet `Async` universel avec des capacités de `spawn`, `par`, `race` et `timeout`. Il exploite les threads virtuels (Loom) sur la JVM et la boucle d'événements sur JS.
- Streams haute performance : Implémente les streams comme codata avec plusieurs modes de consommation, incluant un mode "Staged" pour la fusion au moment de la compilation, qui surpasse significativement les autres bibliothèques de l'écosystème dans les benchmarks.
- Concurrence : Propose des fibres, des canaux avec contre-pression (backpressure) et un runtime distribué (`okay-cluster`) pour répartir les sources fragmentées entre les workers.
Modules de couche supérieure :
- Text : Lexing en streaming, parsing incrémental et un schéma unifié pour JSON/CBOR/Markdown.
- AI/Models : Intégration pour les LLM, le RAG (Retrieval-Augmented Generation) et les agents, incluant une implémentation complète du Model Context Protocol (MCP).
- UI : Un système de vue-en-tant-que-valeur capable de rendre vers des terminaux, React ou des hôtes de test.
- Security : Autorisation sans dépendance, JWT et flux client OAuth2.
- Wires : Support REST et WebSocket via JDK, Jetty ou Netty.
Interopérabilité : La bibliothèque fournit des ponts pour cats, ZIO, kyo, fs2, Kafka, Spark, Flink et JDBC.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.