Skip to content

v0.30.5

`peppy stack join` and `stack remove` now grow and shrink a running instance's producer and observer sets, delivered live to running nodes.

Released on September 22, 2026

Breaking changes

  • peppy stack list --json now nests each slot_bindings producer under a producer key, with an optional copy key; update anything that parses that output.

  • Rust generated bound_producers() accessors return owned values (NonEmptyProducers, Vec<ProducerRef>) instead of borrowed slices, so bind the result to a variable before calling .first().

  • peppy stack join adds a copy's own instances to a running instance's one_or_more or zero_or_more producer or observer slot, delivering the grown set to the running node.

  • peppy stack remove takes the members a copy added back out of the running sets, and refuses a removal that would empty a one_or_more slot, naming it.

  • A running node's bound producer and observer sets, and its topic subscriptions, follow copies joining and leaving, so call bound_producers() or sources() at the point of use.

  • Generated set slots gain a bound_members() accessor returning each producer with the copy its instance belongs to, and Python gains a peppylib.BoundMember type.

  • peppy stack list shows the set members each copy added under Set members: and marks each bound member a copy brought with [copy NAME].

  • Standalone nodes gain with_bound_producer_in_copy and with_peer_pin_in_copy builders for a binding or pair whose instance belongs to a copy.

View all releases