这个项目能做什么
Okay! 是一个受 Rúnar Bjarnason、Oleg Kiselyov 和 Robert Atkey 理论启发、为 Scala 3 设计的可扩展效果库。它提供了一个全面的框架用于管理副作用和控制流,具有零依赖特性,支持从单一源码运行于 JVM (JDK 21+)、Scala.js 和 Scala Native。
核心架构与能力:
- 定界控制 (Delimited Control):实现了参数化延续单子 (`Cont`) 和用于定界控制的 final tagless 接口,确保 flatMap 链的栈安全。
- 可扩展效果 (Extensible Effects):同时支持初始 (Free) 和最终 (Church/Eff) 编码。内置了 Reader、Writer(基于流)、State(包括 typestate)、Throws(类型化错误)和 Choice(非确定性/回溯)效果。
- 跨平台异步:提供通用的 `Async` 效果,具备 `spawn`、`par`、`race` 和 `timeout` 能力。在 JVM 上利用虚拟线程 (Loom),在 JS 上利用事件循环。
- 高性能流:将流实现为共数据 (codata),具有多种消费模式,包括用于编译时融合的 "Staged" 模式,在基准测试中显著优于生态系统中的其他库。
- 并发:具备 fiber、带背压的 channel 以及用于在 worker 之间分发分块源的分布式运行时 (`okay-cluster`)。
上层模块:
- Text:流式词法分析、增量解析以及统一的 JSON/CBOR/Markdown 模式。
- AI/Models:LLM、RAG(检索增强生成)和 Agent 的集成,包括 Model Context Protocol (MCP) 的完整实现。
- UI:一种 view-as-value 系统,可渲染至终端、React 或测试宿主。
- Security:零依赖的授权、JWT 和 OAuth2 客户端流程。
- Wires:通过 JDK、Jetty 或 Netty 提供 REST 和 WebSocket 支持。
互操作性:该库为 cats、ZIO、kyo、fs2、Kafka、Spark、Flink 和 JDBC 提供了桥接支持。
评论
0 评分人数达到10人后显示
登录后参与讨论。