typelevel/paiges
59.5
Adequate · 20 September 2026
1.7k
lines of production code
Scala
primary language
1
measurement over time
What this system is
Paiges is a functional pretty-printing library for Scala that constructs and renders formatted text documents. It provides a core engine with lazy document evaluation and integrates with the Cats ecosystem through standard typeclass instances. The system supports cross-compilation across the JVM, Scala.js, and Scala Native platforms.
Features
Add Scala Native platform support for Paiges
The Paiges library now supports Scala Native. A new \Platform.scala\ file has been added to the \cats/native\ module, which defines platform detection constants (\isJvm\, \isJs\, \isNative\) to enable the library to function correctly on the Native target.
cats/native · high confidence
Add platform-specific runtime detection for Scala.js and JVM
The library now includes distinct \Platform\ objects for the JVM and Scala.js targets to allow code to detect the runtime environment at compile time. The \cats/jvm\ module provides a \Platform\ object where \isJvm\ is true, while the \cats/js\ module provides one where \isJs\ is true. This enables conditional compilation and dead-code elimination based on the target platform.
cats/js, cats/jvm · high confidence
Adds Cats typeclass instances for Document and Style
The library now provides integration with the Cats ecosystem by adding \Contravariant\, \Semigroupal\, and \Defer\ instances for \Document\, as well as \Monoid\ and \Eq\ instances for \Doc\ and \Style\. This allows users to leverage Cats' functional programming abstractions directly with paiges' core types, enabling more composable and idiomatic code when working with document layouts and styling.
cats/shared/src/main · high confidence
Core pretty-printing engine and lazy document support
The core library now includes the main pretty-printing implementation (Doc, Chunk, Style) and introduces LazyDoc for deferred document construction, allowing users to build complex, potentially infinite document structures without immediate evaluation overhead. This change also adds Scala version compatibility shims (ScalaVersionCompat) to support both Scala 2.12 and 2.13+ by abstracting over Stream and LazyList, ensuring the core rendering engine works consistently across supported Scala versions.
core/src/main · high confidence
Initial project setup and documentation for Paiges
This change establishes the initial structure for the Paiges library, an implementation of Wadler's prettier printer. It adds configuration files for the build environment (JVM options), code formatting (Scalafmt 3.8.6 with Scala 2.13 dialect), and Git history management. It also updates the README to provide a comprehensive overview, including quick-start instructions for integrating the library via Maven/SBT for JVM, Scala.js, and Scala Native, along with examples of usage and benchmarking details.
(repo-wide) · high confidence
Test coverage
Add Paiges performance benchmark; Added comprehensive test suite for Paiges document rendering; Added property-based law tests for Paiges types.
Dependencies
Update build dependencies to Scala 2.13.16, 2.12.20, 3.3.4, and Cats 2.12.0
The project's build configuration has been updated to support Scala versions 2.12.20, 2.13.16, and 3.3.4. Key library dependencies have been upgraded, including Cats core and laws to version 2.12.0, and testing libraries such as ScalaTest FunSuite and ScalaCheck to version 3.2.19. This change ensures compatibility with the latest stable releases of the Scala platform and its ecosystem libraries.
(dependencies) · 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 60.
Lenses
- Code Health 94
- Architecture 100
- Maturity 53
- Readiness 53
- Security 62
Changes since last survey
- 300 commits — 296 feature/other, 4 fixes
By area
- project/plugins.sbt — 107 commits
- (root) — 84 commits
- (repo) — 57 commits
- project/build.properties — 33 commits
- .github/workflows — 11 commits
- core/src — 8 commits
Notable commits
- fix: Fix #341: Enable coverage after plugin is released for 2.12.13 (#348)
- fix: Fix Build Badge
- fix: Fix NPE caused by eager initialization of Reset (#726)
- fix: Merge pull request #630 from ekrich/fix/status
- change: Add 'Reformat with scalafmt 3.8.4' to .git-blame-ignore-revs
- change: Add support for Scala Native (#338)
- change: Bump dependencies (#632)
- change: Merge branch 'master' into update/sbt-scoverage-2.2.2
- change: Merge branch 'master' into update/sbt-typelevel-0.7.3
- change: Merge branch 'master' into update/sbt-typelevel-0.8.0
- change: Merge branch 'master' into update/scala-library-2.13.16
- change: Merge branch 'update/sbt-scoverage-2.2.2' into update/scala-library-2.13.15
- change: Merge pull request #331 from scala-steward/update/scala-library-2.13.5
- change: Merge pull request #335 from scala-steward/update/sbt-sonatype-3.9.7
- change: Merge pull request #336 from scala-steward/update/sbt-dotty-0.5.4
- change: Merge pull request #343 from scala-steward/update/cats-core-2.6.0
- change: Merge pull request #344 from scala-steward/update/mdoc-2.2.20
- change: Merge pull request #346 from scala-steward/update/sbt-1.5.1
- change: Merge pull request #350 from scala-steward/update/sbt-scoverage-1.7.2
- change: Merge pull request #351 from scala-steward/update/sbt-scoverage-1.7.3
- …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/paiges 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 da2ffe05cd2011de884b874cc96b94f9f9484637 — 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.