Skip to content

Ghost Serializer 1.3.1

Latest

Choose a tag to compare

@juanchurtado1991 juanchurtado1991 released this 10 Aug 03:54
· 25 commits to main since this release

Highlights

YAML compliance ~96%

Ghost YAML is now measured against the yaml-test-suite with a full offline harness (yamlComplianceMatrix).

  • Reader compliance: ~54% → 96.06% (151 → 268 of 279 valid cases with a JSON fixture — same denominator as matrix.yaml.info; 1.3.0 shipped YAML before the suite was measured)
  • Dozens of real parser bugs fixed (anchors/aliases, tags, block scalars, flow collections, comments, tabs, explicit keys, multi-line plain scalars, and silent wrong-tree cases)
  • Writer round-trip: 100% (321/321); remaining kaml-oracle gaps are oracle limitations, not Ghost bugs
  • Known remaining gaps are tracked by case ID in YamlTestSuiteDeviations.kt (no silent skips)
  • New YAML + JSON coverage-guided fuzzing (Jazzer) in the JVM CI path

Safari / Wasm Speed Test (#16)

On JavaScriptCore (Safari / iOS), Ghost.encodeToString no longer collapses on CharArray.concatToString.

  • JSC path: UTF-8 flat writer + browser TextDecoder
  • Chrome / V8: keeps the char writer (already fast)
  • Safari string Speed Test after fix: ~2.7× kotlinx.serialization
  • JVM / Android / Native unchanged

Also in 1.3.1

  • Spring + Retrofit collection bodies: top-level List / Set / Map unwrap (MVC + WebFlux, JSON + YAML); fix for List<String> / Map<String, String> falling through to Jackson
  • WKT string-channel overrides: nested Well-Known Types under textChannel = true avoid a full UTF-8 bridge + reparse
  • Hot-path allocation fixes: digit-walk HOFs no longer allocate on synthetic decode; SetSerializer resilient path avoids double allocation
  • Ghost.deserialize(bytes) { options } now uses the flat reader (same engine as plain deserialize(bytes))
  • Study manual regenerated: docs/Ghost-Serialization-Manual-1.3.1.pdf

Install

implementation("com.ghostserializer:ghost-serialization:1.3.1")

Gradle plugin: com.ghostserializer.ghost version 1.3.1

Full notes: CHANGELOG.md