Skip to content
CAI
Software that uses CAICheck a score

fredyouhanaie/espace

61.8

Adequate · 17 September 2026

2k

lines of production code

Erlang

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is an Erlang library implementing the Tuple Spaces (Linda) concurrency paradigm, built on ETS for data management. It provides core operations for inserting, reading, and evaluating functions within distributed tuple spaces, along with built-in metrics tracking and an Observer plugin for runtime inspection. The project includes example applications demonstrating concurrent algorithms like shortest path and matrix multiplication in both Erlang and Elixir.

Features

Added Dijkstra's shortest path algorithm example

The \Examples/dijkstra\ directory now includes a complete implementation of Dijkstra's shortest path algorithm using the \espace\ tuple space system. This feature introduces the \dijkstra.erl\ module, which manages concurrent worker processes (\gen\_vertex\, \nexthop\_worker\, \compute\_sp\) to calculate the least-cost path between vertices in a directed graph. The example is demonstrated with two pre-defined graph datasets (\dijkstra-1.esp\ and \dijkstra-2.esp\) and a README explaining the data structures and usage, including support for functional expressions in worker definitions.

Examples/dijkstra · high confidence

Added matrix multiplication example

A new example demonstrating matrix multiplication using the \espace\ tuple space system has been added to the \Examples/matmul\ directory. The implementation (\matmul.erl\) uses worker processes to perform results parallelism, splitting input matrices into row and column vectors, computing dot products in parallel, and gathering the results. The example includes a README with usage instructions and two test data files (\matmul-1.esp\ and \matmul-2.esp\) for verification.

Examples/matmul · high confidence

Adder1 example now supports Elixir alongside Erlang

The adder1 example has been extended to include an Elixir implementation (adder2.ex) in addition to the existing Erlang version (adder1.erl). Users can now run the example using either Erlang or Elixir, with specific input files (adder1.esp and adder2.esp) provided to configure the respective worker processes for each language.

Examples/adder1 · high confidence

Initial release of espace Tuple Spaces library

This entry introduces the \espace\ project, an Erlang implementation of the Tuple Spaces (Linda) paradigm. The repository establishes the core build structure using \rebar3\, defining dependencies on \etsmgr\ and \observer\_cli\ in \rebar.config\ and locking them in \rebar.lock\. It includes comprehensive documentation setup via \ex\_doc\ and \edoc\, a \CONTRIBUTING.md\ guide, and an Apache 2.0 \LICENSE\. The initial codebase provides the foundational modules for managing ETS tables and includes an example application (\adder1\) demonstrating concurrent tuple space operations.

(repo-wide) · high confidence

Behavioural changes

Add observer\_cli plugin configuration for espace observations

A new configuration file (config/shell.config) has been added to define an observer\_cli plugin. This config registers the 'espace\_observer' module as a menu item titled 'espace observations', accessible via the 'E' shortcut, with a 2000ms refresh interval and sorting by the first column.

config · high confidence

Updated documentation for v0.9.0 and edoc generation

The project documentation has been updated to version 0.9.0, including a new overview document (overview.edoc) that details the espace tuple space implementation, the eval vs worker behavior, and the ETS table organization. Additionally, a .gitignore file was added to the doc directory to exclude generated artifacts like CSS, HTML, and edoc-info files, supporting the new edoc generation workflow.

doc · high confidence

espace v0.9.0 release with operation counters and observer plugin

This release introduces operation counting for all espace instances, tracking metrics for in, rd, inp, rdp, out, and eval operations via the new espace\_opcount module and exposing them through an observer\_cli plugin (espace\_observer). It also adds support for worker functions with no arguments, changes eval and worker to return the child process PID, and updates the application manifest to version 0.9.0 with etsmgr\_srv included in the registered servers.

src · high confidence

Test coverage

Added EUnit test suites for core espace modules

Added new EUnit test files covering the \espace\, \espace\_observer\, \espace\_opcount\, \espace\_pterm\, and \espace\_util\ modules. These tests verify instance start/stop behavior, observer sheet headers and body content, operation counter initialization and reset, persistent term storage and retrieval, and utility functions for evaluating functions and converting instance names. Test data files (\testfile-1.esp\, \testfile-2.esp\) are included to support integration tests involving worker processes and file inclusion.

test · 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 62.

Lenses

  • Code Health 99
  • Architecture 100
  • Maturity 57
  • Readiness 59
  • Security 56

Changes since last survey

  • 214 commits — 211 feature/other, 3 fixes

By area

  • (root) — 65 commits
  • apps/espace — 28 commits
  • doc/overview.edoc — 19 commits
  • src/espace.erl — 19 commits
  • .github/workflows — 13 commits
  • src/espace_tspace_srv.erl — 10 commits
  • src/espace.app.src — 9 commits
  • Examples/adder1 — 6 commits
  • src/espace_app.erl — 6 commits
  • Examples/matmul — 5 commits
  • Examples/dijkstra — 4 commits
  • src/espace_util.erl — 4 commits
  • src/tspace_srv.erl — 4 commits
  • gh_pages/index.md — 3 commits
  • test/espace_util_tests.erl — 3 commits
  • (repo) — 2 commits
  • src/espace_observer.erl — 2 commits
  • src/espace_tspatt_srv.erl — 2 commits
  • test/espace_tests.erl — 2 commits
  • Examples/adder1.esp — 1 commit

Notable commits

  • fix: Fixed the missing recursion call.
  • fix: fixed blocking/notification problem with rd.
  • fix: fixed failing test case.
  • change: Added common function for in/rd call handlers.
  • change: Added the dijkstra example graphs.
  • change: Added type checking for the client functions.
  • change: Auto-generate app resource data from original copy.
  • change: Clean up when terminating.
  • change: Initial commit
  • change: Merge branch 'espace_lite'
  • change: Merge branch 'master' into espace_lite
  • change: README and version updated.
  • change: README update.
  • change: Reduced/simplified the supervision tree.
  • change: Removed text that has been moved to the wiki.
  • change: The "in" and "rd" operations are now working.
  • change: The ETS tables are managed concurrently.
  • change: The tspool server has been removed.
  • change: Updated supervisor configuration.
  • change: add configuration for ex_doc
  • …and 194 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

fredyouhanaie/espace 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 17 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 66b281ebbf63c91f95e841f7eb3b5930b480efed — the exact code this score is about.
  • Scored under rubric-2026.09.13 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-d1ef6c0bd534.