Skip to content

Release v0.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 06:33
e50913e

The first release of Fundamentals.Go: the shared domain values, concept recognition, correlation context and optional dependency injection that Arc.Go and Chronicle.Go build on, matching C# Cratis Fundamentals where both products use it. Requires Go 1.26 or later and has no dependencies beyond the standard library.

Added

  • Package concepts with UUID, DateOnly, TimeOnly and TimeSpan, using the canonical .NET wire forms: lowercase dashed UUIDs in RFC byte order, yyyy-MM-dd dates, 100 ns TimeOnly precision, and TimeSpan in the .NET constant format across the full signed tick range. Parsing is strict and failure-atomic, and JSON null is rejected for non-nullable values. (#2)
  • concepts.Concept[T] for declaring a domain value's scalar representation, concepts.Underlying for recognizing concepts and shared scalars from type metadata alone (exact scalar type, ScalarKind, pointer depth, and inspectable *TypeError reasons with stable values), and concepts.CheckJSON for validating encoded concept values against their declared representation. See concept authoring and recognition. (#4)
  • concepts.UUID implements database/sql Scanner and Valuer. Use sql.Null[concepts.UUID] for nullable columns. (#19)
  • Package correlation with WithID and FromContext, sharing one correlation ID through context.Context across Arc.Go and Chronicle.Go. Reads never generate an ID. (#8)
  • Package dependencyinjection, an optional contract with exact-type keys, typed bindings including BindFunc1–BindFunc4 that derive dependencies from parameter types, owned and borrowed lifetimes, scopes, and stable error categories. Plain constructors need none of it. (#11)
  • Package dependencyinjection/container, a default container with graph validation at build time, singleton, scoped and transient lifetimes, reverse-order cleanup, a scope-factory facade and context guards. (#12)
  • Package dependencyinjection/ditest with conformance suites, so any container adapter can prove it meets the contract. See dependency injection. (#13)
  • A parity map recording, for every C# Fundamentals area, what is implemented, what is intentionally different and what is planned. (#10)