Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/monix/monix
Asynchronous, Reactive Programming for Scala and Scala.js.
https://github.com/monix/monix
cats cats-effect fp functional-programming monix reactive-programming reactive-streams reactivex scala typelevel
Last synced: 25 days ago
JSON representation
Asynchronous, Reactive Programming for Scala and Scala.js.
- Host: GitHub
- URL: https://github.com/monix/monix
- Owner: monix
- License: apache-2.0
- Created: 2014-01-06T12:56:07.000Z (almost 11 years ago)
- Default Branch: series/4.x
- Last Pushed: 2024-08-12T23:48:38.000Z (3 months ago)
- Last Synced: 2024-10-01T15:41:25.550Z (about 1 month ago)
- Topics: cats, cats-effect, fp, functional-programming, monix, reactive-programming, reactive-streams, reactivex, scala, typelevel
- Language: Scala
- Homepage: https://monix.io
- Size: 16.8 MB
- Stars: 1,928
- Watchers: 59
- Forks: 244
- Open Issues: 134
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-streaming - monix - high-performance Scala / Scala.js library for composing asynchronous and event-based programs. (Table of Contents / Streaming Library)
- awesome-list - monix
- awesome-streaming - monix - high-performance Scala / Scala.js library for composing asynchronous and event-based programs. (Table of Contents / Streaming Library)
README
# Monix
Asynchronous, Reactive Programming for Scala and [Scala.js](http://www.scala-js.org/).
[![monix Scala version support](https://index.scala-lang.org/monix/monix/monix/latest-by-scala-version.svg)](https://index.scala-lang.org/monix/monix/monix)
[![Build](https://github.com/monix/monix/workflows/build/badge.svg?branch=series/4.x)](https://github.com/monix/monix/actions?query=branch%3Aseries%2F4.x+workflow%3Abuild) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/monix/monix)
[![Discord](https://img.shields.io/discord/632277896739946517.svg?label=&logo=discord&logoColor=ffffff&color=404244&labelColor=6A7EC2)](https://discord.gg/wsVZSEx4Nw)- [Overview](#overview)
- [Usage](#usage)
- [Library dependency (sbt)](#library-dependency-sbt)
- [Sub-projects](#sub-projects)
- [Documentation](#documentation)
- [Contributing](#contributing)
- [Adopters](#adopters)
- [License](#license)## Overview
Monix is a high-performance Scala / Scala.js library for composing asynchronous,
event-based programs.It started as a proper implementation of [ReactiveX](http://reactivex.io/),
with stronger functional programming influences and designed from the ground up
for back-pressure and made to interact cleanly with Scala's standard library,
compatible out-of-the-box with the [Reactive Streams](http://www.reactive-streams.org/)
protocol. It then expanded to include abstractions for suspending side effects
and for resource handling, and is one of the parents and implementors of
[Cats Effect](https://typelevel.org/cats-effect/).A [Typelevel project](http://typelevel.org/projects/), Monix proudly
exemplifies pure, typeful, functional programming in Scala, while being pragmatic,
and making no compromise on performance.Highlights:
- exposes the kick-ass [Observable](https://monix.io/docs/current/reactive/observable.html),
[Iterant](https://monix.io/api/current/monix/tail/Iterant.html),
[Task](https://monix.io/docs/current/eval/task.html),
[IO[E, A]](https://bio.monix.io/docs/introduction), and
[Coeval](https://monix.io/docs/current/eval/coeval.html) data types,
along with all the support they need
- *modular*, split into multiple sub-projects, only use what you need
- designed for true asynchronicity, running on both the
JVM and [Scala.js](http://scala-js.org)
- excellent test coverage, code quality, and API documentation
as a primary project policy## Usage
- Use **[monix-jvm-app-template.g8](https://github.com/monix/monix-jvm-app-template.g8)**
for quickly getting started with a Monix-driven app
- See **[monix-sample](https://github.com/monix/monix-sample)** for
a project exemplifying Monix used both on the server and on the client.### Library dependency (sbt)
For the stable release (compatible with Cats, and Cats-Effect 2.x):
```scala
libraryDependencies += "io.monix" %% "monix" % "3.4.1"
```
### Sub-projectsMonix 3.x is modular by design. See the [sub-modules graph](https://monix.io/docs/current/intro/usage.html#sub-modules--dependencies-graph):
You can pick and choose:
- `monix-execution` exposes the low-level execution environment, or
more precisely `Scheduler`, `Cancelable`, `Atomic`, `Local`, `CancelableFuture`
and `Future` based abstractions from `monix-catnap`.
- `monix-catnap` exposes pure abstractions built on top of
the [Cats-Effect](https://typelevel.org/cats-effect/) type classes;
depends on `monix-execution`, Cats 1.x and Cats-Effect
- `monix-eval` exposes `Task`, `Coeval`;
depends on `monix-execution`
- `monix-reactive` exposes `Observable` for modeling reactive,
push-based streams with back-pressure; depends on `monix-eval`
- `monix-tail` exposes `Iterant` streams for purely functional pull
based streaming; depends on `monix-eval` and makes heavy use of
Cats-Effect
- `monix` provides all of the above## Documentation
See:
- Website: [Monix.io](https://monix.io/)
- [Documentation (current)](https://monix.io/docs/current/) ([3.x](https://monix.io/docs/3x/))
- [Documentation for 2.x (old)](https://monix.io/docs/2x/)
- [Presentations](https://monix.io/presentations/)API Documentation:
- [Current](https://monix.io/api/current/)
- [3.4](https://monix.io/api/3.4/)
- [2.3](https://monix.io/api/2.3/)
- [1.2](https://monix.io/api/1.2/)([contributions are welcome](https://github.com/monix/monix.io))
Related:
- [Typelevel Cats](https://typelevel.org/cats/)
- [Typelevel Cats-Effect](https://typelevel.org/cats-effect/)## Contributing
The Monix project welcomes contributions from anybody wishing to
participate. You must license all code or documentation provided
with the Apache License 2.0, see [LICENSE.txt](./LICENSE.txt).You must follow the [Scala Code of Conduct](./CODE_OF_CONDUCT.md) when
discussing Monix on GitHub, Gitter channel, or other venues.Feel free to open an issue if you notice a bug, have an idea for a
feature, or have a question about the code. Pull requests are also
gladly accepted. For more information, check out the
[contributor guide](CONTRIBUTING.md).If you'd like to donate in order to help with ongoing maintenance:
## Adopters
Here's a (non-exhaustive) list of companies that use Monix in production. Don't see yours?
Submit a PR ❤️
- [PITS Global Data Recovery Services](https://www.pitsdatarecovery.net/)
- [Abacus](https://abacusfi.com)
- [Agoda](https://www.agoda.com)
- [AVSystem](https://www.avsystem.com)
- [commercetools](https://commercetools.com)
- [Coya](https://www.coya.com/)
- [DigitalGenius](https://digitalgenius.com/)
- [E.ON Connecting Energies](https://www.eon.com/)
- [eBay Inc.](https://www.ebay.com)
- [Eloquentix](http://eloquentix.com/)
- [Hypefactors](https://www.hypefactors.com)
- [Iterators](https://www.iteratorshq.com)
- [Netflix](https://netflix.com)
- [Sony Electronics](https://www.sony.com)
- [Tinkoff](https://tinkoff.ru)
- [Zalando](https://www.zalando.com)
- [Zendesk](https://www.zendesk.com)## License
All code in this repository is licensed under the Apache License,
Version 2.0. See [LICENSE](./LICENSE.txt).