parapet-io/parapet
65.5
Adequate · 20 September 2026
7.4k
lines of production code
Scala
primary language
1
measurement over time
What this system is
Parapet is a Scala 3 toolkit for building distributed systems using an actor model with isolated, mailbox-driven processes. It provides a structured networking stack supporting TCP and UDP transports via ZeroMQ and Aeron, enabling synchronous request/response patterns and bidirectional communication. The framework offers effect-polymorphic backends, including Cats Effect and a reference ParIO runtime, to manage process lifecycles, scheduling, and persistence.
Features
Added WireCodec type class for serialization
The parapet-protocol module now includes a new WireCodec type class that defines how application-level values are serialized to and deserialized from raw bytes for transport. This abstraction allows transport code to remain polymorphic over payload types, with built-in support for raw byte arrays (using defensive cloning) and UTF-8 encoded strings.
parapet-protocol · high confidence
Introduce core actor runtime with request/response channels and dead-letter handling
The \parapet-core\ module now provides the foundational actor runtime, including the \Process\ trait for defining isolated, mailbox-driven units of behavior and \ProcessRef\ for stable, opaque addressing. A new \Channel\ class enables synchronous-style request/response interactions by managing a strict one-outstanding-call discipline and correlating replies via causation IDs. The runtime also introduces a \DeadLetterProcess\ to capture and log events that cannot be delivered, ensuring failures are surfaced rather than silently dropped. Application bootstrapping is handled by \ParApp\, which wires together the scheduler, DSL interpreter, and optional snapshot/journal storage, while \ParConfig\ allows tuning of mailbox sizes, worker counts, and feature flags like fault injection.
parapet-core/src · high confidence
Introduce structured network transport layer with protocol-agnostic processes
The \parapet-net\ module now provides a complete, structured networking stack built on a process-based architecture. This includes a protobuf-based wire format (\wire.proto\) and a Scala \MessageCodec\ for serializing correlated request/response payloads. The system defines three core transport abstractions—\ClientTransport\ (request/reply), \ServerTransport\ (routed request/reply), and \DuplexTransport\ (bidirectional)—alongside a \DatagramTransport\ for connectionless UDP. These are implemented by specific backends: ZeroMQ (TCP client/server/duplex) and Aeron (UDP datagrams). To manage these transports, new process actors (\ClientProcess\, \ServerProcess\, \DatagramProcess\, \DuplexProcess\) handle lifecycle, correlation ID matching, routing, and error propagation, exposing a unified event-driven interface for application logic.
parapet-net/src · high confidence
New Cats Effect backend for Parapet
The \parapet-cats-effect\ module is now available as the recommended production backend for running Parapet on Cats Effect \IO\. It provides \Effect\[IO\]\ and \Parallel\[IO\]\ instances, an internal \SchedulerRuntime\[IO\]\, and a \CatsEffectParApp\ convenience base class to simplify application setup. This module owns the runtime integration details, allowing the core \parapet-core\ library to remain effect-polymorphic and independent of Cats Effect. The release includes comprehensive integration tests and benchmarks to validate the backend's behavior.
parapet-cats-effect · high confidence
Reference ParIO effect runtime and application entry point
This change introduces the \parapet-pario\ module, providing a reference \ParIO\ effect type and its runtime interpreter (\ParIORuntime\) for the Parapet actor framework. It includes \ParIOApp\, a base class for defining applications using this effect, and a comprehensive test suite validating the runtime's thread-pool scheduling, process recovery, journaling, and snapshotting capabilities.
parapet-pario/src · high confidence
Removals
Removal of core Parapet module and package definitions
The \Parapet.scala\ file, which contained the core actor model implementation including the Flow and Effect ADTs, their interpreters, and the Process trait, has been deleted. Additionally, the \package.scala\ file defining the \catsInstances\ object for implicit type aliases and instances has been removed. This change eliminates the previously defined core concurrency primitives and their associated Cats Effect integrations from the \io.parapet.core\ package.
src/main · high confidence
Test coverage
New backend-agnostic integration test suite for Parapet processes; Removed FlowSpec test suite.
Dependencies
Upgrade to Scala 3 and modernize dependency versions
The project has migrated from Scala 2.12 to Scala 3.3.4, requiring users to update their build environment. This change includes significant version bumps for core dependencies: Cats Effect is upgraded from 1.2.0 to 3.5.7, ScalaTest from 3.0.7 to 3.2.19, and Logback from an unspecified older version to 1.5.6. Additionally, new dependencies for networking and protocol handling have been added, including ZeroMQ (jeromq 0.6.0), Aeron (1.50.3), Avro4s (5.0.13), and ScalaPB. The build structure has also been reorganized into multiple submodules (core, testkit, cats-effect, pario, protocol, net).
(dependencies) · high confidence
Housekeeping
Initial project scaffolding and documentation
The repository has been initialized with the core project structure, including the Apache 2.0 license, a comprehensive README describing the Parapet Scala 3 toolkit for distributed systems, and release instructions. Build and CI configurations have been added, specifically a \.scalafmt.conf\ for Scala 3 formatting and a \.travis.yml\ to run tests and checks on OpenJDK 21 with Scala 3.8.3. A \.gitignore\ file has also been established to exclude standard build artifacts and IDE files.
(repo-wide) · 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 66.
Lenses
- Code Health 93
- Architecture 100
- Maturity 75
- Readiness 50
- Security 75
Changes since last survey
- 300 commits — 282 feature/other, 18 fixes
By area
- core/src — 87 commits
- (root) — 69 commits
- (repo) — 35 commits
- intg-tests/src — 27 commits
- parapet-core/src — 18 commits
- components/messaging — 11 commits
- cluster-node/src — 7 commits
- cluster/src — 6 commits
- .github/workflows — 4 commits
- examples/src — 4 commits
- parapet-net/src — 4 commits
- site/index.html — 4 commits
- parapet-testkit/src — 3 commits
- spark/src — 3 commits
- components/README.md — 2 commits
- components/algorithms — 2 commits
- site/js — 2 commits
- benchmark/src — 1 commit
- client/src — 1 commit
- cluster-cli/src — 1 commit
Notable commits
- fix: Add Scope metadata; fix Channel stale-reply bug (#68)
- fix: Fix parapp supervise (#79)
- fix: Net fixes (#69)
- fix: fix blocking / channel tests
- fix: fix blocking / channel tests
- fix: fix build
- fix: fix channel event matching and make Failure public
- fix: fix race in Channel send. disallow process ask if journal is enabled
- fix: fix send in node process
- fix: iss17: bug fix
- fix: iss23: fix compilation errors
- fix: iss31: fix props path
- fix: iss31: fix tests
- fix: iss31: logger and AsyncServer fix
- fix: iss44: fix compilation errors
- fix: iss44: fix compilation errors
- fix: replace fs2 queue with monix queue, fix: iss6, iss7 and iss8
- fix: site + tests fixes
- change: 0.0.1-RC5 publish
- change: Cluster node close (#55)
- …and 280 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
parapet-io/parapet 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 ab74562ebb20a90401b2192a1f5f34ce3f290d27 — 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.