eioio
reactor-core
eioio | reactor-core | |
---|---|---|
25 | 21 | |
517 | 4,824 | |
2.3% | 0.5% | |
9.0 | 9.4 | |
8 days ago | 3 days ago | |
OCaml | Java | |
GNU General Public License v3.0 or later | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
eioio
-
Eio 1.0 Release: Introducing a new Effects-Based I/O Library for OCaml
the actual project (Readme has some code samples): https://github.com/ocaml-multicore/eio
-
OCaml: a Rust developer's first impressions
For 5.0+ you might want to look at https://github.com/ocaml-multicore/eio for how effects can make async much more pleasant
- Alternatives to scala FP
-
How Much Memory Do You Need to Run 1 Million Concurrent Tasks?
Great post! I would love to see this extended to OCaml 5 (with eio) and Haskell
- Eio -- Effects-Based Parallel IO for OCaml
-
OCaml 5.0.0: multicore support and effect handlers for OCaml
Second, effects enable a new style of concurrency libraries like eio that forgoes the need to wrap every asynchronous computation in a monad.
- OCaml 5.0 Multicore is out
-
What’s so great about functional programming anyway?
> This is realllly unidiomatic in real world Haskell.
Whether idiomatic or not does not matter. It proves my point:
IO won't save you, and even very mundane effects are not part of the game…
Idris is the "better Haskell" sure, but the effect tracking is still part of the uncanny valley (still IO monad based).
Koka is a toy, and Frank mostly "only a paper" (even there is some code out there).
The "Frank concept" is to some degree implemented in the Unison language, though:
https://www.unison-lang.org/learn/fundamentals/abilities/
Having a notion of co-effects (or however you please to call them) is imho actually much more important than talking about effects (as effects are in fact neither values nor types—something that all the IO kludges get wrong).
I think the first practicable approach in the mainstream about this topic will be what gets researched and developed for Scala. The main take away is that you need to look at things form the co-effects side first and foremost!
In case anybody is interested in what happens in Scala land in this regard:
https://www.slideshare.net/slideshow/embed_code/key/aLE9M37d...
https://docs.scala-lang.org/scala3/reference/experimental/cc...
But also the development in OCaml seems interesting:
https://github.com/ocaml-multicore/eio#design-note-capabilit...
Look mom, "effects", but without the monad headache!
-
Practical OCaml, Multicore Edition
To enable access to all these features, an exciting new library called Eio is being developed. It uses a new paradigm of direct-style concurrent I/O programming, without the need for monads or async/await, thus avoiding the function colour problem.
reactor-core
-
Is it wrong to use "try-catch" inside a reactive stream operator (project reactor)?
I was exploring reactive streams with project reactor and I encountered a use case where I needed to skip to the next event if an error occurred during the processing of the current event (e.g. deserialization issue).
-
Modern Async Primitives on iOS, Android, and the Web
Kotlin also has a construct for asynchronous collections/streams. Kotlin's version of AsyncSequence is called a Flow. Just as Swift's AsyncSequence builds upon prior experience with RxSwift and Combine, Kotlin's Flow APIs build upon earlier stream/collection APIs in the JVM ecosystem: Java's RxJava, Java8 Streams, Project Reactor, and Scala's Akka.
-
Alternatives to scala FP
Java's projectreactor.io ? It is widely used in Java world, see Spring WebFlux.
-
Hydroflow: Dataflow Runtime in Rust
I guess more a closer comparison would be with the Project Reactor https://projectreactor.io/ which is also a low level framework for data processing.
-
Reactive Backend Applications with Spring Boot, Kotlin and Coroutines (Part 1)
Spring Framework is one of the most popular choices for web applications. It comes with a great ecosystem, tooling, and support. Spring applications are mainly written in Java. While they can serve quite well in many different domains and use cases, they may not be a good fit for modern-day applications which require low-latency and high-throughput. This is where the reactive programming paradigm could help because the paradigm is designed to address these issues by its non-blocking nature. Spring already supports reactive programming via Project Reactor.
-
Brief Intro to Reactive Streams with Project Reactor
The reactive streams API provides the specification for non-blocking async streams processing with back pressure mechanism, and Project Reactor is an implementation written in java.
- Angular for Junior Developers: Promises vs Observables
-
How much of real world programming involves using containers and for loops?
https://projectreactor.io/ https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html https://rxjs.dev/ https://developer.android.com/kotlin/coroutines https://developer.apple.com/documentation/combine
- Spring Reactor
-
Reactor bad, Loom good - but how will the landscape shape out?
With respect to Loom, it could be much easier for synchronous and reactive code to interoperate using schedulers that take advantage of Loom. The impact of Loom on Project Reactor was discussed in #3084, you might find it interesting.
What are some alternatives?
ocaml-multicore - Multicore OCaml
Reactive Streams - Reactive Streams Specification for the JVM
roast - 🦋 Raku test suite
RxKotlin - RxJava bindings for Kotlin
loom - Concurrency permutation testing tool for Rust.
RxJava - RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
domainslib - Parallel Programming over Domains
reactor-kotlin-extensions
rescript-compiler - The compiler for ReScript.
redux-kotlin - Predictable state container for Kotlin apps
effects-examples - Examples to illustrate the use of algebraic effects in Multicore OCaml
Async Http Client - Asynchronous Http and WebSocket Client library for Java