circe/circe-yaml
66.3
Adequate · 20 September 2026
1.7k
lines of production code
Scala
primary language
1
measurement over time
What this system is
This system is a Scala library that provides YAML serialization and deserialization capabilities for Circe JSON objects. It supports multiple YAML standards and backends, including YAML 1.1 via SnakeYAML, YAML 1.2 via snakeyaml-engine, and a Scala.js/Scala Native compatible backend using scala-yaml. The library offers configurable parsing and printing options, such as handling empty keys, controlling indentation, and managing character escaping, while enforcing code quality through standardized linting and formatting tools.
Features
Add Scala Yaml backend for YAML parsing and printing
Users can now use scala-yaml as an alternative backend for parsing and printing YAML in the circe-yaml library. This change introduces new implementation files (Parser.scala, Printer.scala, and associated package objects) in the shared module that bridge circe's Json type with scala-yaml's Node structures, enabling YAML operations to run on Scala.js and Scala Native platforms. The implementation handles parsing scalars, sequences, and mappings, as well as pretty-printing JSON back to YAML, with corresponding test coverage for parsing edge cases and printing formatting.
circe-yaml-scalayaml/shared · high confidence
Introduce circe-yaml-v12 module with SnakeYAML Engine and new PrinterBuilder
A new \circe-yaml-v12\ module is added, providing YAML 1.2 parsing and printing capabilities backed by the \snakeyaml-engine\ library. This module introduces a new \PrinterBuilder\ that allows users to configure output formatting, including the ability to drop empty objects and arrays, control indentation with indicators, and handle non-printable characters. The module also provides a new \Parser\ implementation with configurable settings for duplicate keys, recursive keys, and comment parsing, exposing these via a dedicated \Config\ case class.
circe-yaml-v12/src/main · high confidence
Library restructured with multiple YAML backends and updated documentation
The library now supports multiple YAML backends: the original \circe-yaml\ for YAML 1.1 (using SnakeYAML), a new \circe-yaml-v12\ module for YAML 1.2 (using snakeyaml-engine), and a \circe-yaml-scalayaml\ module for Scala.js/Scala Native compatibility (using scala-yaml). The README has been completely rewritten to reflect these changes, including updated usage instructions, API examples, and build badges. Additionally, the project now includes configuration files for Scalafmt (v3.11.5), Scalafix, and Scalastyle to enforce code style and linting rules.
(repo-wide) · high confidence
New PrinterBuilder with support for dropping empty objects and arrays
The circe-yaml module introduces a new PrinterBuilder that allows users to configure the YAML printer to drop empty objects and arrays via the new \dropEmptyKeys\ option. This is implemented in the new PrinterImpl class, which checks for empty collections when converting JSON objects to YAML nodes. The existing Printer class remains unchanged and does not support this feature, while the PrinterBuilder provides a fluent API to configure various printing options including the new empty-key dropping behavior.
circe-yaml/src/main · high confidence
Removals
Removed SnakeYAML-based YAML parser and printer
The custom YAML parser and printer implementations that relied on the SnakeYAML library have been removed from the codebase. This eliminates the ability to parse YAML strings into Circe JSON objects and serialize JSON back to YAML using the previous SnakeYAML-backed components, effectively stripping out this specific serialization/deserialization capability from the main source directory.
src/main · high confidence
Behavioural changes
Introduces common YAML parsing and printing abstractions
The circe-yaml-common/shared module now provides the foundational Parser and Printer traits that define the core YAML serialization interface. The Parser trait exposes methods for parsing YAML streams and decoding JSON objects, including safety limits for alias cycles and code points to prevent resource exhaustion. The Printer trait defines the contract for converting JSON to YAML strings, with configuration options for flow/block styles, line breaks, and string escaping. These abstractions serve as the backend-agnostic layer for YAML processing.
circe-yaml-common/shared · high confidence
Test coverage
Added test coverage for YAML parsing, printing, and escaping; Added test coverage for circe-yaml v12 module; Removal of ParserTests.scala.
Dependencies
Upgrade to circe 0.14.14 and SnakeYAML 2.2 with Scala 3 support
The library has been upgraded to use circe 0.14.14, replacing the older circe-parser with circe-jawn for parsing, and updated to SnakeYAML 2.2 for YAML 1.1 support. The build now supports Scala 2.13.16 and Scala 3.3.7, and introduces new modules for YAML 1.2 support via snakeyaml-engine and for scala-yaml integration. Test dependencies have also been updated to ScalaTest 3.2.20, ScalaCheck 1.20.0, and discipline-core 1.7.0.
(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 66.
Lenses
- Code Health 95
- Architecture 100
- Maturity 53
- Readiness 78
- Security 70
Changes since last survey
- 300 commits — 290 feature/other, 10 fixes
By area
- (root) — 106 commits
- (repo) — 105 commits
- project/build.properties — 34 commits
- project/plugins.sbt — 28 commits
- .github/workflows — 13 commits
- circe-yaml-v12/src — 6 commits
- src/main — 4 commits
- circe-yaml/src — 2 commits
- circe-yaml-scalayaml/shared — 1 commit
- src/test — 1 commit
Notable commits
- fix: Fix Bin-compatibility
- fix: Fix CI workflow
- fix: Fix Parser.parseDocuments (#346)
- fix: Fix SnakeYAML link
- fix: Fix build.sbt settings for 0.15.1 release
- fix: Merge branch 'main' into jkobejs/fix-356
- fix: Merge pull request #331 from circe/Fix-Bincompat
- fix: Merge pull request #357 from jkobejs/jkobejs/fix-356
- fix: Revert commit(s) c117a6b, ae7d95c
- fix: Revert commit(s) cec1eb5
- change: Add 'Reformat with scalafmt 3.5.9' to .git-blame-ignore-revs
- change: Add 'Reformat with scalafmt 3.6.1' to .git-blame-ignore-revs
- change: Add ability to drop empty objects and arrays in PrinterBuilder (#531)
- change: Add module that uses snakeyaml-engine, which only handles yaml 1.2 (#303)
- change: Added indent with indicators to yaml-v12 (#406)
- change: Allow tuning loader options (#333)
- change: Backport #333 (#349)
- change: Bump tlBaseVersion to 0.15 (#401)
- change: Crosscompile for JS and Native with scala-yaml as the backend (#431)
- change: Extend from Parser
- …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
circe/circe-yaml 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 639054e7c593af9572b9a87f0b17c8eb55586a4f — 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.