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
0.22.1 - 2026-07-07
0.22.0 - 2026-07-05
- 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.pipeandctx.pipe_withfor pipe-to-self (#360) </>
- BREAKING: Make
ActorRefcloning a singleArcclone (#365) </> - BREAKING: Return pending ask's message as ActorRestarting/ActorNotRunning during drain (#359) </>
- Fix spacing between sponsor avatars in README </>
0.21.1 - 2026-07-01
- 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 </>
- De-flake scheduler interval doctest </>
- Skip and simplify bounded mailbox tests under hotpath feature </>
- Use deterministic fake time for bounded mailbox unit tests </>
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
- 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)
- Deadlocks in
ActorReflifecycle 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)
- Update supervision page to cover new parent supervision (#315)
- Add haruki-nikaidou to sponsors </>
- 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 #
- BREAKING: Add
PanicReasonenum toPanicError</> - 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_afterfor delayed message delivery </>
- BREAKING: Replace channels-console with hotpath (#263)
- BREAKING: Return
ActorStopReasonin shutdown result (#316) - Use idiomatic rust patterns </>
- Format supervision.rs </>
- Remove unnecessary
Syncbound fromsupervise_with</>
- 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::nextandActor::on_paniccalls </> - Incorrect panic reasons in panic errors </>
- Missing display impl for
PanicReason::Nextvariant - 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 </>
- Add observability page </>
- Update kameo msrv </>
- Remove sponsor from README.md
- Remove sponsor from README.md </>
- Fix on_start return type in example </>
- Bump kameo to version 0.19.2 </>
- Fix clippy non-canonical lints for
Infallibleerror 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
- Add support for
channels-console(#261) </>
- Metrics counter names (#260) </>
0.19.1 - 2025-11-13
- Docs.rs builds failing due to now unsupported
doc_auto_cfgfeature </>
- Add 0.19.0 link to CHANGELOG.md </>
- 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
- BREAKING: Add
metricsfeature flag for mailbox sent/received metrics (#250) - Add ctx attribute (#240)
- Add scheduler actor (#251)
- BREAKING: Hide MailboxSender internal variants (#248)
- BREAKING: Move spawn methods to new
Spawntrait (#253)
- BREAKING: Actors not being unregistered on stop (#254)
- Fix bootstrapping actor swarm complete code example </>
- 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-strto0.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
- BREAKING: Add a
lookup_allmethod to the actor registry using providers (#190) - BREAKING: Add fire-and-forget option for remote tell requests (#205)
- BREAKING: Add
Context::stopmethod for stopping the actor within a message handler (#231) - BREAKING: Add
wait_for_startup/shudown_with_resultmethods for nonCloneerrors (#235) - Implement
Replyfor most of kameo's types (#200) - Add
ActorRef::into_remote_refmethod and implSeralize/DeserializeforRemoteActorRef(#211) - Use debug printing for panic error logs (#214)
- Improve
RemoteActorRefDeserializeimpl (#215) - Remove
Debugconstraint onAforContext(#216) - Add
RemoteAskRequest::enqueueandtry_enququemethods (#217) - Implement
SerializeandDeserializeforSendError</> - Add
Context::spawnmethod (#218) - Add
ForwardedReplyDirectresults (#223) - Hash remote_message impls to auto generate ids (#228)
- BREAKING: Refactor remote system to use composable
NetworkBehaviourpattern (#198) - BREAKING: Use
DeliveryMethodfor PubSub actor (#206) - BREAKING: Implement
PartialOrdandOrdfor 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
ActorIDtoActorId(#202) - Consolidate remote feature conditional compilation blocks (#204)
- BREAKING: Remove dependency on
once_cell(#209) - BREAKING: Remove
PendingReplylifetime (#212)
- 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)
- Fix version 0.17.2 link in CHANGELOG.md </>
- Update outdated Actor example and FAQ </>
- Remove prerequisites from README.md </>
- Add msrv
rust-versionto andincludefields 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
- Implement
PartialEq,Eq, andHashfor actor ref types (#189)
Actor::on_messagenot being called (#186)
- Fix version 0.17.0 and 0.17.1 links in CHANGELOG.md </>
0.17.1 - 2025-06-24
- Add ReplyRecipient and WeakReplyRecipient to prelude (#184)
- Wait_for_stop calls for wait_for_shutdown instead of wait_for_startup (#183)
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
- BREAKING: Add
Recipienttype for type erased actor refs (#160) - BREAKING: Add
Actor::Argsassociated type and actor spawn methods (#168) - Add
RecipientandWeakRecipientto prelude </> - Add broker actor (#161)
- Add message bus actor (#162)
- Add
track_callertoRecipient::tell</> - Add actor shutdown result handling and error hook (#166)
- Implement downgrade for
Recipient</> - Add
msganderrmethods toSendError(#169) - Add message_queue actor (#163)
- Add reply recipient that can do ask requests (#179)
- Process buffered messages before stopping gracefully </>
- Actors not stopping due to leaked ActorRef
- 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
- Add prelude module (#145)
- Add
Actor::nextmethod (#147) - Add
on_messagefunction toActortrait (#155)
- BREAKING: Use
ForwardMessageSendtrait forContext::forwardmethods (#146) - BREAKING: Move pool and pubsub actors into new
kameo_actorscrate (#154)
- BREAKING: Remove mailbox generics and request traits (#153)
- Remove unnecessary trait bound in
Context::forwardmethod </>
- Spawn with tokio unstable cfg flags </>
- 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 </>
- 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
- BREAKING: Add
unregistermethod toActorSwarm(#133) - BREAKING: Add
ReplyErrortrait for betterPanicErrordowncasting (#137) - BREAKING: Add
Errortype toActortrait (#138) - Add
PubSubSubscribeFilterfunctionality (#120) - Implement infallible replies for missing
std::collectionstypes (#127) - Move
PartialEqandHashmanual implementations fromPeerIdtoPeerIdKind</> - Impl
ErrorforPanicError</> - Add
ActorRef::wait_startup_resultmethod (#139) - Add
PanicError::downcastmethod </> - Implement least loaded scheduling for actor pool </>
- Use
target_has_atomiccfg to detect Atomic type support for 32-bit embedded systems, wasm, etc (#142)
- BREAKING: Use
ControlFlowenum instead ofOptionforActormethods (#140) - Use
Box<dyn FnMut>forPubSubfilter functions to allow dynamic filtering behavior (#124) - Update overhead benchmark and delete fibonacci benchmark </>
- Use
downcast-rsinstead ofmopaforReplyErrortrait </> - Use
ReplyErrorto simplify trait bounds </>
- BREAKING: Remove internment dependency and simplify peer ID handling (#123)
- BREAKING: Remove lifetime from
Contextand borrow mutably instead (#144) - Remove reply implementations for unstable integer atomics </>
- BREAKING: Actor pool worker scheduling </>
ActorIDPartialEqandHashimplementations </>- Missing
Hasherimport in id tests </> wait_startupdeadlock on actor start error </>- Pubsub tests </>
- 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_sendercode 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 </>
- Add
remoteas 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
- 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::pathtypes (#96) - Add
blocking_linkandblocking_unlinkmethods toActorRef(#115)
- BREAKING: Use
kameo::error::InfallibleinReplyderive macro instead of() - BREAKING: Modularize features and improve conditional compilation (#112)
- BREAKING: Remove actor state from
PreparedActor(#99) - BREAKING: Remove deprecated
link_child,unlink_child,link_together, andunlink_togethermethods </> - Remove mailbox capacity warning on unbounded mailbox tell requests </>
- Remove itertools dependency and replace repeat_n with std::iter::repeat </>
- Fix clippy lints and add to CI
- Add Caido Community sponsor to README.md </>
- Remote stars badge from README.md </>
- Add huly labs sponsor to README.md </>
- 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
- Impl
IntoFuturefor requests (#72) - Add public
BoxReplySendertype alias (#70) - Add support for preparing an actor and running it outside a spawned task (#69)
- Add
Context::replyshorthand method </>
- BREAKING: Relax request impls to be generic to any mailbox (#71)
- BREAKING: Use owned actor ref in
spawn_withfunction (#68)
- BREAKING: Startup deadlock on small bounded mailboxes (#84)
- Tokio_unstable compile error in
spawn</> - Request downcasting and added tests (#85)
- Remove reverences to deprecated linking methods (#79)
- Add empty message to git tag release script </>
- Remove msrv from Cargo.toml (#82)
0.12.2 - 2024-10-17
- Add spawn_link and link/unlink functions (#67)
- Update README with improved content </>
- Add release script </>
0.12.1 - 2024-10-15
- Add
ForwardMessageSendSyncrequest trait (#65)
- Actor lifecycle error handling when
on_starterrors </>
- Add FAQ to book about reasons for actors stopping </>
- 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
- Add
ActorRef::wait_startupmethod (#63)
- BREAKING: Make
Linksprivate (#57) - BREAKING: Move actor pool and pubsub to their own modules (#56)
- BREAKING: Move
ActorIDFromBytesErrortoerrormodule </> - BREAKING: Move remote actor functionality behind
remotefeature (#60) </> - ActorID and improve documentation (#48)
- 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)
- 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
- 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</>
attach_streampanicking when actor is stopped </>
- 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::HandlerErrorin replies </> - Add icons and links to core concepts overview page </>
- Fix formatting in book </>
- Add icons to introduction headings </>
- 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
- BREAKING: Add request traits (#39)
- Add delayed_send for unbounded actors < 4DA4 ;/>
- Add remote actor support (#35)
- Add
actorattribute toActorderive macro </> - Make actor swarm listen address optional </>
- Use macro to clean request trait impls for
MaybeRequestTimeout</>
- BREAKING: Remove queries (#36)
- Call on_panic when actor panics during startup </>
- Update README.md </>
- Improve documentation for async messages </>
- Add missing
mutfromreply_senderexample </> - Add
MessageSendimport in code examples </>
- 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
- BREAKING: Add support for bounded/unbounded mailboxes (#29)
- Add
Send + 'staticbounds toReplytrait </> - Add pubsub actor (#31) </>
- Add support for async pool factory functions (#33)
- Add async spawn_with function (#34)
- BREAKING: Return
SendErrorfrom send methods allowing replies to be received blocking (#27)
- Buffered messages not being applied correctly (#32)
0.8.1 - 2024-05-24
- Add
BlockingMessagefor blocking actor code (#26)
0.8.0 - 2024-04-19
- @liutaon made their first contribution in #21
- Allow
ActorPoolitself to be spawned as an actor </> - Add
SendError::flattenmethod </> - Implement internal buffering whilst actor is starting up </>
- BREAKING: Use
StreamMessageenum instead of trait </> - BREAKING: Use
Displayimplementation for handler errors </>
- Remove
Syncrequirement fromReplymacro
is_alivereturning the opposite value </>
- Add example to
Replytrait code docs </>
0.7.0 - 2024-04-15
- BREAKING: Add values to
StreamMessage::on_startandStreamMessage::on_finish</> - Add support for actor generics in
messagesmacro </> - Add stream messages to forward messages from a stream to an actor </>
- BREAKING: Remove stateless actors </>
- Remove unused dependency
trait-variant</> - Add overhead benchmark </>
- Remove commented stateless actor code </>
- Add git cliff integration </>
0.6.0 - 2024-04-11
- BREAKING: Add delegated reply with context type </>
- BREAKING: Move all types to separate modules and improve documentation </>
- BREAKING: Remove
Spawntrait and use spawn functions </>
- Improve docs for spawn functions </>
- Add note to
Actorderive macro </> - Add missing
Contextparam from docs </>
0.5.0 - 2024-04-04
- Add
HandlerErrortoSendErrorto flatten actor errors </>
- BREAKING: Remove
nightlyflag and implementReplyon common types and derive macro </>
0.4.0 - 2024-04-03
- BREAKING: Impl
MessageandQueryfor actor instead of message type </>
- Add shields to readme </>
0.3.4 - 2024-04-02
- Parsing of message attributes </>
0.3.3 - 2024-04-01
- Add local non-send/sync support </>
- Add support for
!Syncactors </> - Add benchmarks </>
- Remove _unsync methods for nightly </>
- Improve readme and crate docs </>
0.3.2 - 2024-03-31
- Only validate methods marked as message or query </>
- Pimp README </>
0.3.1 - 2024-03-30
- Update install version </>
0.3.0 - 2024-03-30
- Add macros </>
0.2.0 - 2024-03-30
- Remove async_trait from public traits </>
0.1.2 - 2024-03-29
- Re-export async_trait </>
0.1.1 - 2024-03-29
- Add support for stable rust </>