monix:高性能Scala/Scala.js异步反应式编程库,支持背压与函数式编程

Asynchronous, Reactive Programming for Scala and Scala.js.

Branch10Tags104
This repository is empty

Monix

适用于 Scala 和 Scala.js 的异步响应式编程库。

build monix Scala version support

概述

Monix 是一个高性能的 Scala / Scala.js 库,用于组合异步、基于事件的程序。

它最初是 ReactiveX 的一个完善实现,融入了更强的函数式编程思想,并从底层设计支持背压,旨在与 Scala 标准库无缝交互,且开箱即兼容 Reactive Streams 协议。随后,它扩展到包含用于暂停副作用和资源处理的抽象,并且是 Cats Effect 的发起者和实现者之一。

作为一个 Typelevel 项目,Monix 自豪地展示了 Scala 中纯粹、类型安全的函数式编程,同时保持务实,并在性能上毫不妥协。

主要特点:

  • 提供功能强大的 ObservableIterantTaskIO[E, A]Coeval 数据类型,以及它们所需的所有支持
  • 模块化,拆分为多个子项目,仅使用您需要的部分
  • 专为真正的异步性设计,可在 JVM 和 Scala.js 上运行
  • 作为主要项目策略,提供出色的测试覆盖率、代码质量和 API 文档

用法

库依赖(sbt)

兼容性基准:

  • JDK 最低 17(已验证 21
  • Scala 2.13.18 和 Scala 3.8.3

稳定版本(与 Cats 及 Cats-Effect 2.x 兼容):

libraryDependencies += "io.monix" %% "monix" % "x.y.z"

子项目

Monix 3.x 在设计上采用模块化架构。详见 子模块关系图

Sub-modules graph

您可以按需选择:

  • monix-execution 提供底层执行环境,更准确地说,包含 SchedulerCancelableAtomicLocalCancelableFuture 以及来自 monix-catnap 的基于 Future 的抽象。
  • monix-catnap 提供构建在 Cats-Effect 类型类之上的纯抽象;依赖于 monix-execution、Cats 1.x 和 Cats-Effect。
  • monix-eval 提供 TaskCoeval;依赖于 monix-execution
  • monix-reactive 提供 Observable,用于建模具有背压的响应式、基于推送的流;依赖于 monix-eval
  • monix-tail 提供 Iterant 流,用于纯函数式的基于拉取的流处理;依赖于 monix-eval 并大量使用 Cats-Effect。
  • monix 包含上述所有模块。

文档

请参阅:

API 文档:

欢迎贡献

相关链接:

贡献

Monix 项目欢迎任何有意参与的人贡献。您提供的所有代码或文档必须采用 Apache License 2.0 许可,详见 LICENSE.txt

在 GitHub、Gitter 频道或其他场合讨论 Monix 时,您必须遵守 Scala 行为准则

如果您发现 bug、有功能想法或对代码有疑问,欢迎提交 issue。我们也非常乐意接受拉取请求。有关更多信息,请查看 贡献者指南

如果您想通过捐赠支持项目的持续维护:

采用者

以下是部分在生产环境中使用 Monix 的公司(非详尽列表)。未找到您的公司? 提交 PR 吧 ❤️

许可证

本仓库中的所有代码均采用 Apache License 2.0 版本授权。详情参见 LICENSE

Introduction

异步、响应式编程,适用于Scala及Scala.js。【此简介由AI生成】

Customize your domain
591.93 K243Visit GitHub