Skip to content

Changelog

  • CI build failure: id_json.go and id_sql.go import encoding/json/v2, which requires GOEXPERIMENT=jsonv2. All CI workflows and the Nix flake now set this environment variable. This was the root cause of the missing v0.3.1 GitHub Release.
  • README performance table corrected with verified benchmark numbers from Go 1.26.4.
  • Installation instructions now document the GOEXPERIMENT=jsonv2 prerequisite.
  • CONTRIBUTING.md rebuilt with accurate Nix-based instructions.
  • FEATURES.md — honest feature inventory with code-verified citations.
  • ROADMAP.md — long-term vision.
  • docs/DOMAIN_LANGUAGE.md — added Phantom Type and Zero Value terms.
  • Format() writes directly to fmt.State’s writer instead of allocating strings — reduces allocations for %s and %v formatting.
  • Named brands: optional Name() method on brand types enables "User:abc123" display strings.
  • BrandName[B]() for runtime brand introspection.
  • ValidateID, ValidateIDWithValue, MustValidateID for brand-aware validation.
  • Ptr() and FromPtr() for optional ID fields.
  • String() now returns "Brand:value" for named brands (was value-only for all brands). Serialization unaffected — still uses raw values.
  • Full serialization suite: JSON, SQL, Text, Binary, Gob.
  • Compare() method for ordered types.
  • Or() for zero-value fallbacks.
  • SQL Scan type coercion for all driver types.
  • ID[B any, V comparable] phantom-typed identifier.
  • NewID, Get, IsZero, Reset, Equal.
  • Initial extraction from go-composable-business-types.