FFFF
Skip to content

Latest commit

 

History

History
964 lines (616 loc) · 46.7 KB

File metadata and controls

964 lines (616 loc) · 46.7 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.22.2 - 2026-07-17

Fixed

  • Make actor.handle_message a root span linked to actor.lifecycle (#382) </>

Documentation

  • Clarify ActorStopReason::Panicked covers hook errors, add PanicError::is_panic (#375) </>

0.22.1 - 2026-07-07

Misc

0.22.0 - 2026-07-05

Added

  • Add on_undelivered hook for messages left in the mailbox at terminal stop (#363) </>
  • Reject new messages after stop_gracefully instead of silently dropping them (#362) </>
  • BREAKING: Add ctx.pipe and ctx.pipe_with for pipe-to-self (#360) </>

Changed

  • BREAKING: Make ActorRef cloning a single Arc clone (#365) </>
  • BREAKING: Return pending ask's message as ActorRestarting/ActorNotRunning during drain (#359) </>

Fixed

  • Deliver leftover tells to on_undelivered when the restart budget is exhausted (#364) </>

Documentation

  • Fix spacing between sponsor avatars in README </>

0.21.1 - 2026-07-01

Added

  • Add per-actor default reply timeout via PreparedActor (#354) </>

Changed

  • Drop all messages during drain instead of buffering tells and processing asks (#351) </>
  • Disable cargo http multiplexing to avoid crates.io HTTP/2 framing errors </>
  • Increase cargo net retry to ride out crates.io HTTP/2 flakes </>

Fixed

  • De-flake scheduler interval doctest </>
  • Skip and simplify bounded mailbox tests under hotpath feature </>
  • Use deterministic fake time for bounded mailbox unit tests </>

Misc

  • Automate releases with release-plz (#352) </>

0.21.0 - 2026-06-21

  • @npry made their first contribution in #340

  • @manuelarte made their first contribution in #342

  • @getong made their first contribution in #339

  • @marcoradocchia made their first contribution in #338

  • @CleverWild made their first contribution in #321

Added

  • BREAKING: Support error chains on SendError (#338)
  • Add clippy allow attribute to methods tagged with #[message] to ensure compatibility with clippy::pedantic (#321)
  • Add live actor-system monitoring console TUI (#343)

Fixed

  • Deadlocks in ActorRef lifecycle methods, catch panics in actor shutdown (#340)
  • Preserve pending mailbox messages on actor stop/restart (#345)
  • Prevent actor.handle_message spans from nesting unboundedly on self-sends (#346)

Documentation

  • Update supervision page to cover new parent supervision (#315)
  • Add haruki-nikaidou to sponsors </>

Misc

  • Fix link in CHANGELOG.md </>
  • Update hotpath requirement from 0.11 to 0.14 (#319)
  • Update hotpath requirement from 0.11 to 0.15 (#324)
  • Update hotpath requirement from 0.11 to 0.16 (#326)
  • Update opentelemetry requirement from 0.31 to 0.32 (#327)
  • Update hotpath requirement from 0.11 to 0.16 (#328)
  • Update opentelemetry requirement from 0.31 to 0.32 (#329)
  • Update hotpath requirement from 0.11 to 0.17 (#337)
  • Update tracing-opentelemetry requirement from 0.32 to 0.33 (#332)
  • Update opentelemetry requirement from 0.31 to 0.32 (#330)
  • Use libp2p::identity instead of libp2p_identity directly (#339)
  • Fix typos (#342)

0.20.0 - 2026-04-07

  • @Janrupf made their first contribution in #309

  • @caniko made their first contribution in #312

  • @pawurb made their first contribution in #294

  • @camas made their first contribution in #287

  • @djmitche made their first contribution in #285

  • @bddap made their first contribution in #

  • @hnorkowski made their first contribution in #

Added

  • BREAKING: Add PanicReason enum to PanicError </>
  • BREAKING: Add supervision support (#314)
  • BREAKING: Add support for returning errors in Actor::next </>
  • Add support for channels-console (#261) </>
  • Add utility methods to WeakActorRef
  • Improve error message
  • Add tracing span support (#309)
  • Add #[must_use] to pure getter methods </>
  • Add non-blocking startup/shutdown result accessors to ActorRef </>
  • Add RestartPolicy::Never </>
  • Add TellRequest::send_after for delayed message delivery </>

Changed

  • BREAKING: Replace channels-console with hotpath (#263)
  • BREAKING: Return ActorStopReason in shutdown result (#316)
  • Use idiomatic rust patterns </>
  • Format supervision.rs </>

Removed

  • Remove unnecessary Sync bound from supervise_with </>

Fixed

  • Metrics counter names (#260) </>
  • Use correct spawn invocation in getting-started.mdx
  • Fix sibbling typo
  • Update hotpath link and gif
  • Make SwarmSender::send() non-panicking when channel is closed </>
  • Prevent actor tasks from panicking in Actor::next and Actor::on_panic calls </>
  • Incorrect panic reasons in panic errors </>
  • Missing display impl for PanicReason::Next variant
  • Request::ask::tests::bounded_ask_requests_mailbox_timeout test </>
  • Tests
  • Bounded_tell_requests_mailbox_full needs 2 messages to fill
  • Prevent deadlock when supervisor shuts down children </>

Documentation

  • Add observability page </>
  • Update kameo msrv </>
  • Remove sponsor from README.md
  • Remove sponsor from README.md </>
  • Fix on_start return type in example </>

Misc

  • Bump kameo to version 0.19.2 </>
  • Fix clippy non-canonical lints for Infallible error type
  • Upgrade dependencies </>
  • Update hotpath requirement from 0.11 to 0.13 (#313)
  • Update hotpath requirement from 0.11 to 0.14 (#317)
  • Update hotpath requirement from 0.11 to 0.14 (#318)
  • Bump kameo_macros to version 0.20.0 </>

0.19.2 - 2025-11-17

Added

  • Add support for channels-console (#261) </>

Fixed

  • Metrics counter names (#260) </>

0.19.1 - 2025-11-13

Fixed

  • Docs.rs builds failing due to now unsupported doc_auto_cfg feature </>

Documentation

  • Add 0.19.0 link to CHANGELOG.md </>

Misc

  • Add ignore_tags regex to cliff.toml </>
  • Bump kameo to version 0.19.1 </>
  • Bump kameo_actors to version 0.4.0 </>

0.19.0 - 2025-11-10

Added

  • BREAKING: Add metrics feature flag for mailbox sent/received metrics (#250)
  • Add ctx attribute (#240)
  • Add scheduler actor (#251)

Changed

  • BREAKING: Hide MailboxSender internal variants (#248)
  • BREAKING: Move spawn methods to new Spawn trait (#253)

Fixed

  • BREAKING: Actors not being unregistered on stop (#254)

Documentation

  • Fix bootstrapping actor swarm complete code example </>

Misc

  • Update const-str requirement from 0.6.4 to 0.7.0 (#236)
  • Update const-str requirement from 0.6.4 to 0.7.0 (#237)
  • Update const-str requirement from 0.6.4 to 0.7.0 (#241)
  • Update const-str requirement from 0.6.4 to 0.7.0 (#243)
  • Upgrade const-str to 0.7.0 </>
  • Fix ci </>
  • Bump kameo_macros to version 0.19.0 </>

0.18.0 - 2025-09-11

  • @LVivona made their first contribution in #204

Added

  • BREAKING: Add a lookup_all method to the actor registry using providers (#190)
  • BREAKING: Add fire-and-forget option for remote tell requests (#205)
  • BREAKING: Add Context::stop method for stopping the actor within a message handler (#231)
  • BREAKING: Add wait_for_startup/shudown_with_result methods for non Clone errors (#235)
  • Implement Reply for most of kameo's types (#200)
  • Add ActorRef::into_remote_ref method and impl Seralize/Deserialize for RemoteActorRef (#211)
  • Use debug printing for panic error logs (#214)
  • Improve RemoteActorRef Deserialize impl (#215)
  • Remove Debug constraint on A for Context (#216)
  • Add RemoteAskRequest::enqueue and try_enquque methods (#217)
  • Implement Serialize and Deserialize for SendError </>
  • Add Context::spawn method (#218)
  • Add ForwardedReply Direct results (#223)
  • Hash remote_message impls to auto generate ids (#228)

Changed

  • BREAKING: Refactor remote system to use composable NetworkBehaviour pattern (#198)
  • BREAKING: Use DeliveryMethod for PubSub actor (#206)
  • BREAKING: Implement PartialOrd and Ord for actor id and ref types (#219)
  • BREAKING: Return reference in Context::actor_ref (#222)
  • Improve test and lint coverage for all workspace crates (#191)
  • Rename ActorID to ActorId (#202)
  • Consolidate remote feature conditional compilation blocks (#204)

Removed

  • BREAKING: Remove dependency on once_cell (#209)
  • BREAKING: Remove PendingReply lifetime (#212)

Fixed

  • Resolve test and lint issues uncovered by improved CI (#192)
  • Stop_gracefully panicking when actor is already stopped (#201)
  • Prevent deadlock in ActorRef link/unlink methods (#221)
  • Drop mailbox immediately when actor is stopped (#233)

Documentation

  • Fix version 0.17.2 link in CHANGELOG.md </>
  • Update outdated Actor example and FAQ </>
  • Remove prerequisites from README.md </>

Misc

  • Add msrv rust-version to and include fields to Cargo.toml files </>
  • Fix clippy lints regarding msrv on remote feature flag </>
  • Update criterion requirement from 0.6 to 0.7 (#225)
  • Add JaniM to README.md sponsors <3 </>
  • Update const-str requirement from 0.6.4 to 0.7.0 (#234)
  • Bump kameo_macros to version 0.18.0 </>

0.17.2 - 2025-06-26

  • @cwahn made their first contribution in #186

Added

  • Implement PartialEq, Eq, and Hash for actor ref types (#189)

Fixed

  • Actor::on_message not being called (#186)

Documentation

  • Fix version 0.17.0 and 0.17.1 links in CHANGELOG.md </>

0.17.1 - 2025-06-24

Added

  • Add ReplyRecipient and WeakReplyRecipient to prelude (#184)

Fixed

  • Wait_for_stop calls for wait_for_shutdown instead of wait_for_startup (#183)

Misc

  • Add cawfeecoder to README.md sponsors <3 </>
  • Bump kameo_actors to version 0.2.0 </>

0.17.0 - 2025-06-22

  • @Malefaro made their first contribution in #179

  • @hanekoo made their first contribution in #163

  • @Avi-D-coder made their first contribution in #170

  • @dependabot[bot] made their first contribution in #173

  • @artemijan made their first contribution in #177

Added

  • BREAKING: Add Recipient type for type erased actor refs (#160)
  • BREAKING: Add Actor::Args associated type and actor spawn methods (#168)
  • Add Recipient and WeakRecipient to prelude </>
  • Add broker actor (#161)
  • Add message bus actor (#162)
  • Add track_caller to Recipient::tell </>
  • Add actor shutdown result handling and error hook (#166)
  • Implement downgrade for Recipient </>
  • Add msg and err methods to SendError (#169)
  • Add message_queue actor (#163)
  • Add reply recipient that can do ask requests (#179)

Changed

  • Wrap large enum variant in Box to fix clippy lint </>
  • Format toml files </>

Fixed

  • Process buffered messages before stopping gracefully </>
  • Actors not stopping due to leaked ActorRef

Misc

  • Update criterion requirement from 0.5 to 0.6 (#173)
  • Update release script shabangs </>
  • Bump kameo_macros to version 0.17.0 </>

0.16.0 - 2025-03-28

  • @attila-lin made their first contribution in #149

Added

  • Add prelude module (#145)
  • Add Actor::next method (#147)
  • Add on_message function to Actor trait (#155)

Changed

  • BREAKING: Use ForwardMessageSend trait for Context::forward methods (#146)
  • BREAKING: Move pool and pubsub actors into new kameo_actors crate (#154)

Removed

  • BREAKING: Remove mailbox generics and request traits (#153)
  • Remove unnecessary trait bound in Context::forward method </>

Fixed

  • Spawn with tokio unstable cfg flags </>

Documentation

  • Bump version in getting started page </>
  • Remove unnecessary tokio time sleep import in code docs </>
  • Add vanhouc sponsor to README.md </>
  • Fix sponsor badge link </>
  • Impove registerering and looking up actors example </>

Misc

  • Fix clippy lints (#149)
  • Ci updates </>
  • Improve ci and run in parallel (#156)
  • Add release scripts </>
  • Bump kameo_macros to version 0.16.0 </>

0.15.0 - 2025-03-13

  • @Tristaan made their first contribution in #142

  • @Plebshot made their first contribution in #128

  • @agoldhammer made their first contribution in #126

  • @hirschenberger made their first contribution in #121

Added

  • BREAKING: Add unregister method to ActorSwarm (#133)
  • BREAKING: Add ReplyError trait for better PanicError downcasting (#137)
  • BREAKING: Add Error type to Actor trait (#138)
  • Add PubSub SubscribeFilter functionality (#120)
  • Implement infallible replies for missing std::collections types (#127)
  • Move PartialEq and Hash manual implementations from PeerId to PeerIdKind </>
  • Impl Error for PanicError </>
  • Add ActorRef::wait_startup_result method (#139)
  • Add PanicError::downcast method </>
  • Implement least loaded scheduling for actor pool </>
  • Use target_has_atomic cfg to detect Atomic type support for 32-bit embedded systems, wasm, etc (#142)

Changed

  • BREAKING: Use ControlFlow enum instead of Option for Actor methods (#140)
  • Use Box<dyn FnMut> for PubSub filter functions to allow dynamic filtering behavior (#124)
  • Update overhead benchmark and delete fibonacci benchmark </>
  • Use downcast-rs instead of mopa for ReplyError trait </>
  • Use ReplyError to simplify trait bounds </>

Removed

  • BREAKING: Remove internment dependency and simplify peer ID handling (#123)
  • BREAKING: Remove lifetime from Context and borrow mutably instead (#144)
  • Remove reply implementations for unstable integer atomics </>

Fixed

  • BREAKING: Actor pool worker scheduling </>
  • ActorID PartialEq and Hash implementations </>
  • Missing Hasher import in id tests </>
  • wait_startup deadlock on actor start error </>
  • Pubsub tests </>

Documentation

  • Bump kameo version in getting started page </>
  • Document remote links </>
  • Add bootstrapping with custom behaviour docs </>
  • Add sponsor logos to README.md </>
  • Fix typos (#128)
  • Remove blank line in reply_sender code docs </>
  • Fix sponsor badge link in README.md </>
  • Add comparing rust actor libraries blog post to resources in README.md </>
  • Improve actor code docs </>
  • Replace round-robin with least-connections ActorPool scheduling </>

Misc

  • Add remote as required feature for examples (#121)
  • Improve release script </>
  • Update libp2p dependency from version 0.54.1 to 0.55.0 (#122)

0.14.0 - 2025-01-16

  • @meowjesty made their first contribution in #92

  • @Kamil729 made their first contribution in #96

Added

  • BREAKING: Add support for manual swarm operations (#111)
  • BREAKING: Add local actor registry for non-remote environments (#114)
  • BREAKING: Add support for remote actor links (#116)
  • Add warnings for potential deadlocks (#87)
  • Implement infallible reply for std::path types (#96)
  • Add blocking_link and blocking_unlink methods to ActorRef (#115)

Changed

  • BREAKING: Use kameo::error::Infallible in Reply derive macro instead of ()
  • BREAKING: Modularize features and improve conditional compilation (#112)

Removed

  • BREAKING: Remove actor state from PreparedActor (#99)
  • BREAKING: Remove deprecated link_child, unlink_child, link_together, and unlink_together methods </>
  • Remove mailbox capacity warning on unbounded mailbox tell requests </>
  • Remove itertools dependency and replace repeat_n with std::iter::repeat </>

Fixed

  • Fix clippy lints and add to CI

Documentation

  • Add Caido Community sponsor to README.md </>
  • Remote stars badge from README.md </>
  • Add huly labs sponsor to README.md </>

Misc

  • Fix release script with current release notes </>
  • Add changelog links for new versions </>
  • Remove flake.nix and flake.lock </>

0.13.0 - 2024-11-15

  • @13r0ck made their first contribution in #79

Added

  • Impl IntoFuture for requests (#72)
  • Add public BoxReplySender type alias (#70)
  • Add support for preparing an actor and running it outside a spawned task (#69)
  • Add Context::reply shorthand method </>

Changed

  • BREAKING: Relax request impls to be generic to any mailbox (#71)
  • BREAKING: Use owned actor ref in spawn_with function (#68)

Fixed

  • BREAKING: Startup deadlock on small bounded mailboxes (#84)
  • Tokio_unstable compile error in spawn </>
  • Request downcasting and added tests (#85)

Documentation

  • Remove reverences to deprecated linking methods (#79)

Misc

  • Add empty message to git tag release script </>
  • Remove msrv from Cargo.toml (#82)

0.12.2 - 2024-10-17

Added

  • Add spawn_link and link/unlink functions (#67)

Documentation

  • Update README with improved content </>

Misc

  • Add release script </>

0.12.1 - 2024-10-15

Added

  • Add ForwardMessageSendSync request trait (#65)

Fixed

  • Actor lifecycle error handling when on_start errors </>

Documentation

  • Add FAQ to book about reasons for actors stopping </>

Misc

  • Ignore alpha and beta tags in cliff.toml </>

0.12.0 - 2024-10-11

  • @shusvr made their first contribution in #60
  • @marcaddeo made their first contribution in #47

Added

  • Add ActorRef::wait_startup method (#63)

Changed

  • BREAKING: Make Links private (#57)
  • BREAKING: Move actor pool and pubsub to their own modules (#56)
  • BREAKING: Move ActorIDFromBytesError to error module </>
  • BREAKING: Move remote actor functionality behind remote feature (#60) </>
  • ActorID and improve documentation (#48)

Documentation

  • Remove benchmark from README.md </>
  • Add contributors badge to README.md </>
  • Add Discord badge to README.md </>
  • Add book badge to README.md </>
  • Add getting help section to README.md </>
  • Improve README with use cases, additional resources, and clearer structure </>
  • Add support section to README.md </>
  • Add Distributed Actor Communication section to README.md </>
  • Improve code docs for remote module </>
  • Add in-depth distributed actors information to kameo book (#51)
  • Update heading levels in book </>
  • Improve code docs and examples with all tests passing (#54)
  • Add FAQ to book (#59)

Misc

  • Add links to README badges (#47)
  • Add gtag to kameo book (#52)
  • Add Github CI </>
  • Remote beta and nightly toolchains from CI </>
  • Create CODE_OF_CONDUCT.md </>
  • Add CONTRIBUTING.md </>
  • Add github issue templates </>
  • Move banner.png into docs directory </>
  • Add .envrc to .gitignore </>
  • Add pr detection to git cliff contributors </>

0.11.0 - 2024-09-29

Added

  • BREAKING: Add lifetime to requests to avoid mailbox cloning </>
  • Use interned peer ids for improved performance (#43)
  • Return stream from join handle in attach_stream </>

Changed

  • BREAKING: Detach stream when actor stops </>
  • BREAKING: Use multiaddr and add SwarmFuture (#44) </>

Fixed

  • attach_stream panicking when actor is stopped </>

Documentation

  • Add book explaining core concepts (#40)
  • Add missing examples from actors page </>
  • Fix indentation for request features </>
  • Add note about Result::Err in the reply trait </>
  • Add note about SendError::HandlerError in replies </>
  • Add icons and links to core concepts overview page </>
  • Fix formatting in book </>
  • Add icons to introduction headings </>

Misc

  • Fix path to README in Cargo.toml </>
  • Add obsidian related items to .gitignore </>
  • Remove unused mailbox modules </>
  • Update git cliff configuration </>

0.10.0 - 2024-09-09

Added

  • BREAKING: Add request traits (#39)
  • Add delayed_send for unbounded actors < 4DA4 ;/>
  • Add remote actor support (#35)
  • Add actor attribute to Actor derive macro </>
  • Make actor swarm listen address optional </>
  • Use macro to clean request trait impls for MaybeRequestTimeout </>

Removed

  • BREAKING: Remove queries (#36)

Fixed

  • Call on_panic when actor panics during startup </>

Documentation

  • Update README.md </>
  • Improve documentation for async messages </>
  • Add missing mut from reply_sender example </>
  • Add MessageSend import in code examples </>

Misc

  • Fix path to README in Cargo.toml files </>
  • Move kameo crate to root directory </>
  • Add banner image </>
  • Create dependabot.yml </>
  • Remote PR number suffix from changelog generation </>

0.9.0 - 2024-06-25

Added

  • BREAKING: Add support for bounded/unbounded mailboxes (#29)
  • Add Send + 'static bounds to Reply trait </>
  • Add pubsub actor (#31) </>
  • Add support for async pool factory functions (#33)
  • Add async spawn_with function (#34)

Changed

  • BREAKING: Return SendError from send methods allowing replies to be received blocking (#27)

Fixed

  • Buffered messages not being applied correctly (#32)

Misc

  • Update CHANGELOG.md </>
  • Move crates out of nested crates dir </>

0.8.1 - 2024-05-24

Added

  • Add BlockingMessage for blocking actor code (#26)

0.8.0 - 2024-04-19

  • @liutaon made their first contribution in #21

Added

  • Allow ActorPool itself to be spawned as an actor </>
  • Add SendError::flatten method </>
  • Implement internal buffering whilst actor is starting up </>

Changed

  • BREAKING: Use StreamMessage enum instead of trait </>
  • BREAKING: Use Display implementation for handler errors </>

Removed

  • Remove Sync requirement from Reply macro

Fixed

  • is_alive returning the opposite value </>

Documentation

  • Add example to Reply trait code docs </>

Misc

  • Add CHANGELOG.md </>
  • Update cliff.toml </>
  • Add newline for new contributors in cliff config </>

0.7.0 - 2024-04-15

Added

  • BREAKING: Add values to StreamMessage::on_start and StreamMessage::on_finish </>
  • Add support for actor generics in messages macro </>
  • Add stream messages to forward messages from a stream to an actor </>

Removed

  • BREAKING: Remove stateless actors </>

Misc

  • Remove unused dependency trait-variant </>
  • Add overhead benchmark </>
  • Remove commented stateless actor code </>
  • Add git cliff integration </>

0.6.0 - 2024-04-11

Added

  • BREAKING: Add delegated reply with context type </>

Changed

  • BREAKING: Move all types to separate modules and improve documentation </>

Removed

  • BREAKING: Remove Spawn trait and use spawn functions </>

Documentation

  • Improve docs for spawn functions </>
  • Add note to Actor derive macro </>
  • Add missing Context param from docs </>

0.5.0 - 2024-04-04

Added

  • Add HandlerError to SendError to flatten actor errors </>

Removed

  • BREAKING: Remove nightly flag and implement Reply on common types and derive macro </>

Documentation

  • Remove spawn from ActorPool example </>
  • Improve docs for QueriesNotSupported error </>

0.4.0 - 2024-04-03

Added

  • Add debug assert to protect against deadlocks </>
  • Add ActorPool </>

Changed

  • BREAKING: Impl Message and Query for actor instead of message type </>

Documentation

  • Add shields to readme </>

Misc

  • Delete empty mailbox.rs module </>
  • Rename bench fibonachi to fibonacci </>

0.3.4 - 2024-04-02

Fixed

  • Parsing of message attributes </>

0.3.3 - 2024-04-01

Added

  • Add local non-send/sync support </>
  • Add support for !Sync actors </>
  • Add benchmarks </>
  • Remove _unsync methods for nightly </>

Documentation

  • Improve readme and crate docs </>

Misc

  • Fix bench name </>
  • Update crate descriptions </>

0.3.2 - 2024-03-31

Fixed

  • Only validate methods marked as message or query </>

Documentation

  • Pimp README </>

Misc

  • Add license files </>
  • Create FUNDING.yml </>
  • Add .DS_Store to .gitignore </>

0.3.1 - 2024-03-30

Documentation

  • Update install version </>

0.3.0 - 2024-03-30

Added

  • Add macros </>

0.2.0 - 2024-03-30

Added

  • Remove async_trait from public traits </>

0.1.2 - 2024-03-29

Added

  • Re-export async_trait </>

Documentation

  • Fix nightly panic info </>
  • Add installing section to docs </>

0.1.1 - 2024-03-29

Added

  • Add support for stable rust </>
0