Skip to content

v0.3.1 -- Performance improvements

Choose a tag to compare

@hamidr hamidr released this 11 Apr 07:23
· 112 commits to main since this release

Reduce allocations and overhead across core operators and concurrency primitives.

Changes

  • PullFilter: filter in-place with Vec::retain instead of allocating a new Vec per chunk

  • PullAndThen: reuse a persistent buffer across next_chunk calls, eliminating repeated heap allocations for filter_map operations

  • par_eval_map: replace per-element oneshot channels with JoinHandles, removing one channel allocation per element. Decouple chunk pulling from task spawning via an intermediate VecDeque buffer.

  • BroadcastReceiver: use Arc::try_unwrap to take ownership of shared chunks without cloning when the receiver holds the last reference

Cleanup

  • Remove unused to_pascal_case function from pipe-macros
  • Remove unused PipeError imports from cancel and meter modules
  • Remove redundant name field from PullMeter