Skip to content
CAI
Software that uses CAICheck a score

blemale/scaffeine

58.2

Adequate · 20 September 2026

1k

lines of production code

Scala

with Java

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Scaffeine is a Scala library that provides type-safe wrappers for the Caffeine caching library, supporting Scala versions 2.12, 2.13, and 3. It exposes synchronous and asynchronous cache operations, including loading caches and async reload loaders, while maintaining compatibility with Caffeine's configuration options like expiration policies and size limits.

Features

Add Scala wrappers for Caffeine's AsyncCache and AsyncLoadingCache

This change introduces new \AsyncCache\ and \AsyncLoadingCache\ classes that wrap Caffeine's \AsyncCache\ and \AsyncLoadingCache\ interfaces, exposing asynchronous operations like \get\, \getFuture\, \getAll\, and \getAllFuture\ which return Scala \Future\ types. The implementation uses a \DirectExecutionContext\ for internal callbacks to avoid unnecessary thread switching, and provides a \synchronous()\ method to view the cache as a standard synchronous \Cache\ or \LoadingCache\.

src/main · high confidence

Initial release of Scaffeine with documentation and formatting setup

This entry marks the initial commit for the Scaffeine project, introducing the core documentation in README.md which explains the library as a Scala wrapper for the Caffeine caching library, including API usage examples for Cache, LoadingCache, and AsyncLoadingCache, along with download instructions. It also establishes the project's development infrastructure by adding a .gitignore file tailored for sbt and IntelliJ, and configuring Scalafmt version 3.11.0 with specific dialect and rewrite rules to enforce consistent code formatting.

(repo-wide) · high confidence

Behavioural changes

Support for Caffeine 3.0.2 and async reload loaders

The library has been updated to support Caffeine 3.0.2, introducing new builder methods for configuring schedulers and executors. It now supports async reload loaders via new \AsyncCacheLoaderAdapter\ and \CacheLoaderAdapter\ classes, allowing users to define custom logic for reloading cache entries asynchronously. The \Scaffeine\ builder also exposes methods for setting initial capacity, maximum size/weight, and various reference types (weak/soft keys/values).

repository · high confidence

Test coverage

Added comprehensive unit tests for Scaffeine cache components; Added example tests for Scaffeine cache builders.

Dependencies

Initial project setup with Scala 2.12/2.13/3.3 and Caffeine integration

The build configuration establishes the project as a Scala wrapper for Caffeine, targeting JVM 1.8. It sets the primary Scala version to 2.12.20 and enables cross-compilation for 2.12.21, 2.13.18, and 3.3.7. Dependencies include Caffeine (via a version variable), scala-java8-compat 1.0.2, and scalatest/scalactic 3.2.20 for testing. The build also enforces scalafmt on compile and applies specific compiler flags for Scala 2.12, such as fatal warnings and deprecation checks.

(dependencies) · high confidence

Updated build infrastructure and dependency versions

The project's build configuration has been updated to use sbt version 1.12.9 and Caffeine version 3.2.3. Several SBT plugins have been added or updated, including sbt-scoverage (2.4.4), sbt-coveralls (1.3.15), sbt-scalafmt (2.6.0), sbt-updates (0.6.4), sbt-dependency-graph (0.9.2), sbt-ci-release (1.11.2), and sbt-api-mappings (3.0.2).

project · 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 58.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 56
  • Readiness 50
  • Security 73

Changes since last survey

  • 300 commits — 299 feature/other, 1 fixes

By area

  • (repo) — 207 commits
  • (root) — 41 commits
  • project/plugins.sbt — 26 commits
  • project/build.properties — 16 commits
  • .github/workflows — 3 commits
  • src/test — 3 commits
  • .github/mergify.yml — 2 commits
  • project/CaffeineVersion.scala — 2 commits

Notable commits

  • fix: fix: Broken WeigherSpec after caffeine upgrade
  • change: Add 'Reformat with scalafmt 3.8.2' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.9.7' to .git-blame-ignore-revs
  • change: Merge branch 'main' into bastien.lemale/chore_update_caffeine_version
  • change: Merge branch 'main' into bastien.lemale/chore_update_caffeine_version
  • change: Merge branch 'main' into bastien.lemale/chore_update_caffeine_version
  • change: Merge branch 'main' into bastien.lemale/chore_update_caffeine_version
  • change: Merge branch 'main' into bastien.lemale/chore_update_caffeine_version
  • change: Merge branch 'main' into bastien.lemale/chore_update_caffeine_version
  • change: Merge branch 'main' into bastien.lemale/chore_update_caffeine_version
  • change: Merge branch 'main' into bastien.lemale/chore_update_caffeine_version
  • change: Merge branch 'main' into bastien.lemale/chore_update_caffeine_version
  • change: Merge branch 'main' into bastien.lemale/doc_api_doc_update
  • change: Merge branch 'main' into bastien.lemale/doc_api_doc_update
  • change: Merge branch 'main' into patch-1
  • change: Merge branch 'main' into patch-2
  • change: Merge branch 'main' into setup-scala-deprecated
  • change: Merge branch 'main' into setup-scala-deprecated
  • change: Merge branch 'main' into setup-scala-deprecated
  • change: Merge branch 'main' into setup-scala-deprecated
  • …and 280 more

Architecture

  • 0 containers · 1 bounded contexts · 0 dependency edges (baseline)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

blemale/scaffeine 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 6f29307b36d3dc1548eee2581e58bd5203ceed89 — 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.