cloudmark/cats-actors
61.3
Adequate · 20 September 2026
7k
lines of production code
Scala
primary language
1
measurement over time
What this system is
This system is the SuprNation actor framework, a library providing a Cats Effect-based actor runtime for Scala 2.13 and Scala 3 across JVM, JavaScript, and Native platforms. It supports core actor features such as message passing, scheduled timers, and finite state machines, while offering platform-specific mailbox implementations and a test kit for verification. The project has recently undergone significant refactoring to modernize its build infrastructure and align with Typelevel standards.
Features
Added microbenchmark harness for actor performance testing
A new JMH-based benchmarking suite has been introduced to measure the performance of the actor system. This includes a support trait for managing actor system lifecycle and a specific benchmark for the 'ask' pattern, allowing users to evaluate the throughput and latency of actor message handling.
benchmark · high confidence
Initial release of the SuprNation actor framework
This release introduces the core \shared\ module for the SuprNation actor library, providing a Cats Effect-based actor system. Key additions include the \FiberActorRefProvider\ for actor creation, a \Timers\ trait with \TimerSchedulerImpl\ for scheduled message delivery, and a \Broadcast\/\BroadcastAsk\ system for sending messages to multiple actors in sequence or parallel. The release also adds a \FSM\ (Finite State Machine) implementation with state management and transition handling, a \TrackingActor\ for debugging and lifecycle monitoring, and a \TestKit\ with utilities like \awaitCond\ and \expectMsg\ for testing actors. Platform-specific mailbox queues are defined via the \MailboxQueue\ trait to support Scala Native and JS.
shared · high confidence
Release 2.2.0 with Scala 3, Scala Native/JS support, and updated documentation
The library has been updated to version 2.2.0, adding support for Scala 3 alongside Scala 2.13, and extending platform support to include Scala Native and Scala.js with platform-specific mailbox queues. The release includes a comprehensive rewrite of the README to document the new installation methods (SBT, Maven, Bazel) and API usage, updates the Code of Conduct to align with Typelevel standards, and configures the build to publish all supported Scala versions via JitPack.
(repo-wide) · high confidence
Removals
Removal of FSM and TrackingActor debug infrastructure
The Finite State Machine (FSM) implementation and the associated TrackingActor debug component have been removed from the actor framework. This eliminates the ability to build actors using the previous FSM builder syntax and removes the internal tracking capabilities that monitored actor lifecycle events (such as init, preStart, postStop, and restarts) for debugging purposes.
src/main/scala/com/suprnation/actor/fsm · high confidence
Removal of FSMBuilder Semigroup instance
The \FSMBuilderInstances.scala\ file, which provided a \Semigroup\ instance for combining \FSMBuilder\ configurations, has been removed. This eliminates the ability to merge two FSM builders into a single composite builder using the \Semigroup\ abstraction, potentially requiring users to handle FSM composition or configuration merging through other means.
src/main/scala/com/suprnation/typelevel/fsm/instances · high confidence
Removal of FSMStateSyntax DSL
The FSMStateSyntax file, which provided implicit classes and methods for constructing FSM states (such as using, withNotification, and when), has been removed. This eliminates the previous syntax for defining state transitions and timeouts within the FSM builder.
src/main/scala/com/suprnation/typelevel/fsm/syntax · high confidence
Removal of legacy FiberActorRefProvider and Props abstractions
The \FiberActorRefProvider\ trait and its \LocalActorRefProvider\ implementation, along with the \Props\ factory and sealed trait, have been removed from the actor system. This eliminates the previous mechanism for creating actor instances via \Props\ and the associated reference provider, indicating a shift in how actors are instantiated and managed within the library.
src/main/scala/com/suprnation/actor · high confidence
Behavioural changes
Platform-specific actor mailbox and utility implementations for JVM, JS, and Native
The actor runtime now provides distinct implementations for core utilities and mailbox queues tailored to each target platform. On the JVM, mailbox queues utilize \java.util.concurrent.LinkedTransferQueue\ for blocking operations, while both Scala.js and Scala Native use \cats.effect.std.Queue\ for non-blocking async handling. ID generation also varies by platform: the JVM uses \java.util.UUID\ for standard UUIDs, whereas JS and Native rely on \scala.util.Random\ for formatted hex strings. Additionally, the internal \Unsafe\ utility has been refactored to operate on \ReplyingActor\ types instead of the generic \Actor\, ensuring consistent context and self-reference injection across all platforms.
js, jvm, native · high confidence
Test coverage
Added tests for ControlledTestKit simulated-time actor testing; Removal of actor test suite files.
Dependencies
Upgrade to Scala 3 and multi-platform support with cats-effect 3.7.0
The library now supports Scala 3 (3.3.7) alongside Scala 2.13, enabling cross-compilation for JVM, JavaScript, and Native platforms. The core dependency on cats-effect has been upgraded to version 3.7.0, and the build structure has been reorganized to include separate artifacts for the main library and a testkit module, both available across the supported platforms.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 61.
Lenses
- Code Health 87
- Architecture 89
- Maturity 57
- Readiness 59
- Security 59
Changes since last survey
- 39 commits — 28 feature/other, 11 fixes
By area
- src/main — 17 commits
- (root) — 12 commits
- src/test — 5 commits
- shared/src — 4 commits
- testkit/shared — 1 commit
Notable commits
- fix: Bugfix escalateDefault, README, and ifM (#39)
- fix: Fix: Resolve potential deadlock in suspended actor scenario. (#1)
- fix: Fixed issue with FSM timeout not actually timing out (#5)
- fix: Update documentation and fix context become/unbecome bug
- fix: chore: fix type in docs
- fix: chore: fixed small bug in scheduler, bumping version for release
- fix: fix: Added error escalation in the actor pre-start. (#17)
- fix: fix: Added the stateData to the FSM onTermination in the FSMBuilder. Fixed issue with the FSM termination using data from the old state instead of the new one. (#14)
- fix: fix: Improved the isTerminated semantics to be based on the ActorCell instead of the Mailbox (#31)
- fix: fix: expand uncancelable scope to prevent ask pattern deadlock during system termination (#36)
- fix: test: Fix tests from #9 with syntax from #11 (#12)
- change: Add ControlledTestKit for simulated-time actor tests (#45)
- change: Add microbenching test harness (#41)
- change: Bumping to RC4,
- change: Cats Actors framework for building apps which are reactive. Cats actors uses a conceptual actor model as a higher level abstraction for concurrency.
- change: Chore: Bump version to release artefact
- change: FSM Update (#22)
- change: Fixed typo in dependencies. Thanks @jducoeur.
- change: Issue/8 fsm actor context (#9)
- change: Measure elapsed time with the cats-effect clock instead of the wall clock
- …and 19 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
cloudmark/cats-actors was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit c64f979be6ddfe8a93b406dca201d7657ab46649 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.