Reactive extensions for go (limited set of functionality as required by snivilised)
This project has been setup for the currency needs of snivilised projects. Ordinarily, I would have used RxGo for reactive functionality, but it is currently not in a working state and seems to be abandoned. So lorax/rx will aim to fill the gap, implementing the functionality required by snivilised projects (in particular extendio, which requires the ability to navigate a directory tree concurrently).
The intention is to write a version of RxGo with identical semantics as the original, having fixed some of the outstanding issues in RxGo reported by other users and possibly introduce new features. If and when version 3 of RxGo becomes available, then lorax/rx will be considered surplice to requirements and retired.
lorax/boost also provides a worker pool implementation using πππ ants.
- unit testing with Ginkgo/Gomega
- implemented with π Cobra cli framework, assisted by π² Cobrass
- uses a heavily modified version of πππ ants
- i18n with go-i18n
- linting configuration and pre-commit hooks, (see: linting-golang).
RxGo
To support concurrency features, lorax/rx uses the reactive model provided by RxGo. However, since RxGo seems to be a dead project with its last release in April 2021 and its unit tests not currently fully running successfully, the decision has been made to re-implement this locally. One of the main reasons for the project no longer being actively maintained is the release of generics feature in Go version 1.18, and supporting generics in RxGo would require significant effort to re-write the entire library. While work on this has begun, it's unclear when this will be delivered. Despite this, the reactive model's support for concurrency is highly valued, and lorax/rx aims to make use of a minimal functionality set for parallel processing during directory traversal. The goal is to replace it with the next version of RxGo when/if it becomes available.
See: