Skip to content
CAI
Software that uses CAICheck a score

typelevel/cats-parse

61.9

Adequate · 20 September 2026

4.9k

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is cats-parse, a functional parser combinator library for Scala that provides foundational parsing types and combinators for structured data. It supports cross-compilation across JVM, JavaScript, and Native platforms, offering specialized utilities for efficient bit-set operations and string matching. The library includes built-in parsers for common formats such as JSON, Semantic Versioning, and ABNF, along with comprehensive testing and benchmarking infrastructure.

Features

Added JSON benchmark fixtures

New JSON resource files (bar.json, bla2.json, bla25.json) have been added to the bench module's resources directory to serve as input data for JSON parsing benchmarks.

bench · high confidence

Initial import of the cats-parse library

This change introduces the core components of the cats-parse library, a functional parser combinator library for Scala. It adds the foundational \Parser\ and \Parser0\ types along with essential combinators, and provides utility classes for tracking parsing state such as \Caret\ for line/column offsets and \LocationMap\ for converting offsets to human-readable positions. The import also includes specific parsers for common data formats, including JSON strings and numbers, Semantic Versioning (SemVer) strings, and the common rules defined in RFC 5234 (ABNF). Additionally, it brings in internal optimization structures like \RadixNode\ for efficient string matching and \Accumulator\ types to support efficient result collection during parsing.

core/shared/src/main · high confidence

Initial project setup and formatting configuration

The repository has been initialized with core configuration files, including a \.scalafmt.conf\ that sets the formatting version to 3.11.5 and configures the Scala 2.13 dialect as the default (with Scala 3 support for \scala-3\ source directories). Additional setup includes a \.gitignore\ tailored for sbt and IDEs, a \PULL\_REQUEST\_TEMPLATE.md\ reminding contributors to run \sbt prePR\, and a \Release.md\ outlining the git-tag-based release process via GitHub Actions.

(repo-wide) · high confidence

Behavioural changes

Added native-specific BitSet utility implementation

A new \BitSet.scala\ file has been added to the \core/native\ source directory, providing a \BitSetUtil\ object that extends \BitSetUtilCompat\ with specific boolean flags. This change enables the parser library to compile and function correctly on Scala Native targets by supplying the necessary bit-set utilities for that platform.

core/native · high confidence

Introduces JavaScript-specific BitSet implementation

A new \BitSetUtil\ object has been added to the \core/js\ module, providing a JavaScript-specific implementation of the \BitSetUtilCompat\ trait. This change enables the parser library to utilize optimized bit-set operations on the JavaScript platform, supporting features such as fast character range checks and union iterators.

core/js · high confidence

JVM-specific BitSet utility implementation

The JVM module now includes a dedicated BitSet utility object that delegates to a compatibility layer with specific platform flags. This change provides a concrete implementation for bit-set operations on the JVM platform, distinct from other targets.

core/jvm/src/main · medium confidence

Test coverage

Added JVM-specific property tests for JSON number and string parsing; Added comprehensive test coverage for core parsing components.

Dependencies

Initial release of cats-parse 1.1 with Scala 3.3.6 support

This entry introduces the initial build configuration for the cats-parse library, establishing version 1.1 as the base release. It configures cross-compilation for Scala 2.12.21, 2.13.16, and Scala 3.3.6 across JVM, JS, and Native platforms. The build includes a core library module depending on Cats and Munit for testing, a benchmarking module for performance comparison, and a documentation site. It also sets up binary compatibility checks (MiMa) against the 0.3.x series and integrates GitHub Actions for coverage reporting.

(dependencies) · high confidence

Update build infrastructure to sbt 1.12.4 and Scala 3 tooling

The project's build system has been upgraded to sbt version 1.12.4, with the plugin configuration in project/plugins.sbt now including sbt-scala-native 0.5.12, sbt-scalajs 1.20.1, sbt-scoverage 2.4.4, and sbt-typelevel 0.8.2. Additionally, the dependency definitions in project/Dependencies.scala have been updated to use cats-core 2.13.0, munit 1.2.4, fastparse 3.1.1, and jawn-ast 1.6.0, while MimaExclusionRules.scala has been added to handle binary compatibility issues related to changes in the cats.parse library.

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

Lenses

  • Code Health 93
  • Architecture 100
  • Maturity 52
  • Readiness 67
  • Security 62

Changes since last survey

  • 300 commits — 295 feature/other, 5 fixes

By area

  • project/plugins.sbt — 92 commits
  • (root) — 83 commits
  • project/build.properties — 38 commits
  • core/shared — 31 commits
  • project/Dependencies.scala — 30 commits
  • .github/workflows — 19 commits
  • docs/index.md — 6 commits
  • docs/src — 1 commit

Notable commits

  • fix: Fix API docs url with the latest version (#491)
  • fix: Fix RadixNode.matchAt (#362)
  • fix: Fix tlBaseVersion (#632)
  • fix: Typo fixed in index.md (#594)
  • fix: fix Caret arguments ordering (#313)
  • change: Add Align instance (#643)
  • change: Add DefaultParser and DefaultParser0 typeclasses (#577)
  • change: Add fromCharMap and fromStringMap (#373)
  • change: Add json string parsing (#438)
  • change: Add missing newline in with1 documentation (#608)
  • change: Add scala3 mima rules for RadixNode (#361)
  • change: Add withString (#436)
  • change: Bump Readme versions and add some tests (#314)
  • change: Bump base version to 1.0 (#555)
  • change: Bump docs version to 1.0.0 (#623)
  • change: Cross-build for Native (#426)
  • change: Drop scala 2.11 (#644)
  • change: Fast charIn for ranges like 'A' to 'Z' (#360)
  • change: Fix typo (#336)
  • change: Fix typo in caret scaladoc (#744)
  • …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

typelevel/cats-parse 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 adbad6da7af12e989e1afef820bd1da8c0db70d1 — 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.