Skip to content
CAI
Software that uses CAICheck a score

choptastic/erlang_ds

69.1

Weak · 17 September 2026

1.5k

lines of production code

Erlang

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

erlang\_ds is an Erlang library that provides a unified interface for interacting with various key-value data structures, including maps, proplists, and dicts. It features a pluggable handler system for extensibility and supports custom update functions like atomization and boolean conversion. The system also includes an experimental parse transform that enables concise arrow-style syntax for data access.

Features

Add example application for testing the ds\_syntax parse transform

An example Erlang application (example\_ds\_app) has been added to validate the ds\_syntax parse transform. It includes test modules (ds\_syntax\_test, ds\_include\_test) that verify the new arrow-syntax lookup operator (e.g., Map-\>Key) works correctly in various contexts, including direct map access, list comprehensions, function calls, and nested control structures like case and if expressions. The app is configured via rebar3 to use the erlang\_ds plugin and includes a symlink to the erlang\_ds source for local development.

_example\_ds\app · high confidence

Initial release of erlang\_ds as a structure-agnostic key-value library

This change introduces the initial public release of erlang\_ds, a library providing a universal interface for Erlang key-value data structures including maps, proplists, and dicts. It features a handler system for extensibility, built-in updaters like atomize and boolize, and an optional experimental syntax plugin for arrow-style access (e.g., Obj-\>key). The release also includes a Makefile with rebar3.mk integration, a CHANGELOG documenting versions up to 0.4.4, and standard project files like LICENSE and .gitignore.

(repo-wide) · high confidence

Behavioural changes

Library renamed to erlang\_ds with expanded data structure support

The library has been renamed from sigma\_proplist to erlang\_ds, shifting focus from proplists to a unified interface for maps, dicts, and proplists. The core API is now in src/ds.erl, which supports setting, getting, and updating values across different object types via a pluggable type handler system (src/erlang\_ds\_type\_handler.erl, src/erlang\_ds\_dict.erl). A new parse transform (src/ds\_syntax.erl) enables arrow notation (e.g., Var-\>key) for concise data access, integrated via a rebar3 provider (src/erlang\_ds\_prv.erl). The system also introduces a dynamic updater registry (src/erlang\_ds\_register.erl, src/erlang\_ds\_builder.erl) allowing users to register custom update functions (like boolize and atomize) and qdate integrations (src/erlang\_ds\_qdate\_updaters.erl).

src · 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 69.

Lenses

  • Code Health 98
  • Architecture 69
  • Maturity 100
  • Readiness 52
  • Security 100

Changes since last survey

  • 98 commits — 85 feature/other, 13 fixes

By area

  • (root) — 51 commits
  • src/ds.erl — 11 commits
  • src/pl.erl — 6 commits
  • .github/workflows — 5 commits
  • src/ds_syntax.erl — 5 commits
  • src/erlang_ds.app.src — 5 commits
  • .circleci/config.yml — 4 commits
  • example_ds_app/src — 4 commits
  • (repo) — 2 commits
  • example_ds_app/rebar.lock — 2 commits
  • example_ds_app/_checkouts — 1 commit
  • src/ds_util.erl — 1 commit
  • src/erlang_ds_qdate_updaters.erl — 1 commit

Notable commits

  • fix: 0.2.1 update to tweak docs and fix qdate dependency
  • fix: Add some register tests. Fix bugs in register.
  • fix: Add tests and fix bugs found so far
  • fix: Add tests for register and unregister. Fix bug found
  • fix: Fix -> in when-based guards
  • fix: Fix an 81+ char line in readme
  • fix: Fix compiler crash when expression ends with something other than , ; or .
  • fix: Fix delete_list (apparently was missing base case).
  • fix: Fix ds_syntax to support include files
  • fix: Fix foreach's spec with the properly return value
  • fix: Fix more issues with -> in a variety of blocks
  • fix: Fix rebar dep link for hex
  • fix: fixing many syntax bugs, and adding an example project for testing the helper. Adding erlang_ds as a rebar3 provider.
  • change: Add .circleci/config.yml
  • change: Add 29 to tests workflow
  • change: Add _checkouts symlink
  • change: Add a bunch of comments to the code
  • change: Add foreach/2 implementation
  • change: Add gitignore
  • change: Add make push to Makefile (tired of fat fingering it)
  • …and 78 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

choptastic/erlang_ds 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 b31de6b178a62f4fe9f5149cf95f9a42720c4aed — 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.