Skip to content

Sync with upstream monix/main (3.5.0 + later fixes) - #27

Merged
sebaciv merged 130 commits into
series/3.x-avsfrom
sync-upstream-3.5.x
Oct 6, 2026
Merged

sebaciv merged 130 commits into
series/3.x-avsfrom
sync-upstream-3.5.x

Conversation

@sebaciv

@sebaciv sebaciv commented Oct 6, 2026

Copy link
Copy Markdown

Summary

Merges upstream monix/main into series/3.x-avs so we can release 3.5.0-avs.1 with all fixes. Upstream 3.5.0 alone doesn't include everything the fork had.

Upstream was 127 commits ahead. It includes v3.5.0 plus later fixes, e.g. monix#2081 (backpressure batch size via Platform.recommendedBatchSize) and monix#2082 (read up to the chunk size in InputStreamObservable).

Conflict resolution

Most fork patches have since been upstreamed:

  • the Trampoline fix
  • ZipObservable synchronization
  • MapTaskObservable logging
  • DynamicWorkerThreadFactory
  • the backpressure batch size
  • dropping Scala 2.12
  • JCTools 4
  • explicit Scheduler types

So all 138 conflicts were resolved in favor of upstream. compat.scala stays in place because upstream keeps it as public API, needed for binary compatibility.

Fork-only changes that remain:

  • descriptive NullPointerException messages in ReactiveSubscriberAsMonixSubscriber and IterantToReactivePublisher
  • .jvmopts -Xmx8G
  • .planning/ in .gitignore

The upstream bot workflows are removed: Renovate and OpenCode. Both rely on the upstream Monix Bot GitHub App.

⚠️ Breaking for consumers

  • The minimum JDK is now 17. Upstream replaced sun.misc.Unsafe with VarHandle.
  • manual-publish.yml is now upstream's version (Maven Central via .github/scripts/release).

Verification (local, JDK 25)

  • Scala 2.13 ci-jvm: about 20,850 tests pass, 0 failures
  • Scala 3.3.8: main and test sources compile
  • mimaReportBinaryIssues against 3.4.0 exits 0 with nothing reported. The fork's changesFor_avs filters are no longer needed.
  • ci-js was not run locally

alexandru and others added 30 commits August 11, 2020 22:27
* 1202: prioritized merge

* 1202: prioritized merge

* 1202: prioritized merge

* Fix unrelated InputStreamObservableSuite bug that failed build

* 1202: prioritized merge

* 1202: prioritized merge

* 1202: prioritized merge

* 1202: prioritized merge

* 1202: prioritized merge

* 1202: prioritized merge

* 1202: prioritized merge

* 1202: prioritized merge

* 1202: prioritized merge
* README simplification

* Add ToC
Co-authored-by: Alexandru Nedelcu <alexandru@users.noreply.github.com>
Co-authored-by: Scala Steward <43047562+scala-steward@users.noreply.github.com>
* Add manual-publish.yml (monix#1241)

* Revert secrets.GITHUB_TOKEN
* Experimenting with a FUNDING.yml (monix#1245)
* Update FUNDING (monix#1249)
* Add manual-publish.yml (monix#1241)
Not sure where to put it but I want to include it

Co-authored-by: Piotr Gawryś <pgawrys2@gmail.com>
* Adds discord badge to readme

* Corrects discord invite.
* Draft 3.4.0 release notes

* Re-add Scala 2.12 :)
The badge summarises which versions of Scala are supported by Monix (and what the latest artifact version is for each of those Scala versions).

[![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)

More details on the badge format here: scalacenter/scaladex#660
Co-authored-by: Alexandru Nedelcu <alexandru@users.noreply.github.com>
Co-authored-by: Alexandru Nedelcu <alexandru@users.noreply.github.com>
When I joined, the Notebooks team started to use Monix and all the backend
systems for our next-generation tooling uses Monix.
Co-authored-by: Piotr Gawryś <pgawrys2@gmail.com>
alexandru and others added 24 commits June 2, 2026 06:56
* Drop external dependencies from "benchmarks"

- Collapsed benchmarksPrev and benchmarksNext into one benchmarks SBT project.
- Removed benchmark-only external deps: fs2, zio-streams, akka-stream, and old published Monix 3.3.0.
- Removed cross-library benchmark methods/imports for fs2, zio, akka, and cats-effect comparisons.
- Deleted previous-version benchmark sources.
- Moved current-only benchmark sources from benchmarks/vnext to benchmarks/src/main/scala.
- Updated benchmarks/run-benchmark to run only benchmarks/jmh:run.
- Updated benchmarks/aggregate for single-result files.
- Cleaned stale “comparative benchmarks between versions” comments.

* Integrate sbt in github actions
…unction in MapTaskObservable. (monix#2030)

Co-authored-by: Mikołaj Bul <m.bul@avsystem.com>
* Extend the Scheduler test suites around error reporting

- Merged `ScheduledExecutorToSchedulerSuite` into `ExecutorSchedulerSuite` to remove duplication.
- Extend `ExecutorSchedulerSuite` with the scheduled error-reporting and stop-after-failure cases
- Build `ComputationSchedulerSuite`'s scheduler with `Scheduler.computation`
- Extend `UncaughtExceptionReporterBaseSuite` with the `scheduleX` cases and close the
  `SchedulerService`-backed schedulers it builds
- Extend `AsyncSchedulerJSSuite` with the stop-after-failure cases

* Report the failures of scheduled tasks for ScheduledExecutorService-backed Schedulers

- Fix reporting in the `scheduleX` methods of `ExecutorScheduler.FromScheduledExecutor`, where a task
  failure was captured in a discarded future and lost
- Stopping a periodic task after a failure is now cancellation-based
- Fix constructing `InterceptRunnable` from a `TrampolinedRunnable` and a `null` reporter
- Drop the unused deprecated constructors of the private ExecutorScheduler subclasses

* Report the failures of scheduled tasks for the Scala.js AsyncScheduler

- Fix reporting in the `scheduleX` methods of the Scala.js `AsyncScheduler`
- Drop the `null` reporter guard in `executeAsync`, which `InterceptRunnable` handles

* Fix test

---------

Co-authored-by: Mikołaj Bul <m.bul@avsystem.com>
Co-authored-by: Alexandru Nedelcu <noreply@alexn.org>
* Prepare Maven Central release publishing
* Prepare project for automatic -SNAPSHOT releases
…onix#2082)

Implemented with LLMs, but I read it and investigated. The solution seems valid.

We will now also emit a chunk if no more data is currently available, which would not be the case before. That should fix the problem in Bloop.

Fixes monix#1479
Co-authored-by: Roman Janusz <r.janusz@avsystem.com>
* Update dependencies

* Fix

---------

Co-authored-by: monix[bot] <320716012+monix[bot]@users.noreply.github.com>
Co-authored-by: Alexandru Nedelcu <noreply@alexn.org>
Syncs the fork with upstream main (v3.5.0 + subsequent fixes).

Most fork patches were upstreamed (Trampoline fix, ZipObservable sync,
MapTaskObservable logging, DynamicWorkerThreadFactory, backpressure batch
size, Scala 2.12 drop, JCTools 4, explicit Scheduler types), so conflicts
were resolved in favor of upstream. Remaining fork-only changes:
- descriptive NullPointerException messages in reactive-streams adapters
- .jvmopts -Xmx8G
- .planning/ in .gitignore

Note: upstream main requires JDK 17+.
Renovate runs as the upstream Monix Bot GitHub App and is not used in this fork.
OpenCode runs as the upstream Monix Bot GitHub App and is not used in this fork.
@sebaciv
sebaciv requested a review from mikkolaj October 6, 2026 11:02
@mikkolaj mikkolaj self-assigned this Oct 6, 2026
@mikkolaj mikkolaj assigned sebaciv and unassigned mikkolaj Oct 6, 2026
@sebaciv
sebaciv merged commit 0edbf33 into series/3.x-avs Oct 6, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.