Skip to content

Improve sequencers, scheduling, and signal APIs#1

Merged
ChrisPulman merged 1 commit into
mainfrom
ResolveBuildWithAnalysersOn
May 25, 2026
Merged

Improve sequencers, scheduling, and signal APIs#1
ChrisPulman merged 1 commit into
mainfrom
ResolveBuildWithAnalysersOn

Conversation

@ChrisPulman
Copy link
Copy Markdown
Member

Fix generator bridge emission and refactor primitives across concurrency and signal code.

Key changes:

  • Generators: add marker sources and only emit bridge source when corresponding R3/System.Reactive types are referenced.
  • Sequencers: introduce shared Now via TimeProvider (when available), add thread-static state and helpers to CurrentThreadSequencer, unify Now usage in ImmediateSequencer, add default capacity for SequencerQueue.
  • Scheduling/runtime: overhaul ScheduledItem (IComparable impl, safer disposal, use RuntimeHelpers.GetHashCode), add ScheduledItem<TAbsolute,TValue> fields, and refactor recursive scheduling in Sequencer.Simple into a RecursiveScheduleState helper with proper null checks.
  • Threading: add guards and comments to ThreadPoolSequencer, adjust TaskPoolSequencer MultipleDisposable usage.
  • Virtual time: improve VirtualTimeSequencerBase/VirtualTimeSequencer with clearer control flow, stopwatch backed by virtual clock, and small API fixes.
  • Connectable signals: add XML-docs, parameter/argument checks, AutoConnect convenience overload, and internal gate types (RefCountGate/AutoConnectGate) to manage connection lifetimes safely.
  • Broadcaster: make struct equatable and add clearer observer management helpers.
  • Misc: numerous documentation comments, small API surface improvements, and defensive null/argument checks across tests and primitives.

These changes improve correctness, safety, and readability of scheduling and signal primitives while ensuring generators only emit bridge code when appropriate.

Fix generator bridge emission and refactor primitives across concurrency and signal code.

Key changes:
- Generators: add marker sources and only emit bridge source when corresponding R3/System.Reactive types are referenced.
- Sequencers: introduce shared Now via TimeProvider (when available), add thread-static state and helpers to CurrentThreadSequencer, unify Now usage in ImmediateSequencer, add default capacity for SequencerQueue.
- Scheduling/runtime: overhaul ScheduledItem (IComparable impl, safer disposal, use RuntimeHelpers.GetHashCode), add ScheduledItem<TAbsolute,TValue> fields, and refactor recursive scheduling in Sequencer.Simple into a RecursiveScheduleState helper with proper null checks.
- Threading: add guards and comments to ThreadPoolSequencer, adjust TaskPoolSequencer MultipleDisposable usage.
- Virtual time: improve VirtualTimeSequencerBase/VirtualTimeSequencer with clearer control flow, stopwatch backed by virtual clock, and small API fixes.
- Connectable signals: add XML-docs, parameter/argument checks, AutoConnect convenience overload, and internal gate types (RefCountGate/AutoConnectGate) to manage connection lifetimes safely.
- Broadcaster: make struct equatable and add clearer observer management helpers.
- Misc: numerous documentation comments, small API surface improvements, and defensive null/argument checks across tests and primitives.

These changes improve correctness, safety, and readability of scheduling and signal primitives while ensuring generators only emit bridge code when appropriate.
@sonarqubecloud
Copy link
Copy Markdown

@codecov
Copy link
Copy Markdown

codecov Bot commented May 25, 2026

Welcome to Codecov 🎉

Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.

Thanks for integrating Codecov - We've got you covered ☂️

@ChrisPulman ChrisPulman merged commit 5a02cca into main May 25, 2026
12 of 13 checks passed
@ChrisPulman ChrisPulman deleted the ResolveBuildWithAnalysersOn branch May 25, 2026 16:25
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.

1 participant