Skip to content

Releases: Cratis/Fundamentals.Go

Release v0.3.2

Choose a tag to compare

@github-actions github-actions released this 04 Oct 15:04
7279ee0

Changed

  • The enum compatibility reference distinguishes historical source behavior, newer source behavior and packaged Chronicle serializer/schema outcomes, without treating them as equivalent or implying Go enum support. (part of #17)

Fixed

  • Constructor-planning diagnostics for duplicate aliased existing registrations remain stable when registration order changes, while preserving duplicate rejection. (#45)

Release v0.3.1

Choose a tag to compare

@github-actions github-actions released this 04 Oct 08:31
50688c6

Added

  • A compiled package-loading recipe demonstrates constructor planning with coherent type identity, explicit lifetime directives and separate loading errors and planner diagnostics. (#42)

Fixed

  • Concurrent service resolution shares failed construction errors when owned-result cleanup reports cancellation, instead of silently retrying. Genuine construction cancellation still permits retry, and cleanup errors remain inspectable. (#43)

Release v0.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 22:29
71bb21e

Added

  • concepts.ParseDotNetGUID explicitly converts .NET 10.0.12 Guid.Parse input forms to RFC-order UUID values. It supports N/D/B/P/X notation and the pinned runtime's compatibility behaviour without widening ParseUUID, JSON/text decoding, SQL scanning or consumer admission policies. (#28)
  • Pinned C# and typed-JavaScript dictionary-key fixtures, an opt-in reproducer and a compatibility reference covering embedded JSON property names, key equality, escaping and read/write/access differences. This evidence does not introduce a Go dictionary codec or shared serializer. (#18)

Changed

  • Developer guides and installation references cover the v0.3.0 compatibility release while keeping historical fixture profiles and unsupported runtime/schema claims distinct. (#28)
  • Repository-local quality gates select native Go build, vet and test phases for the root and recipes modules by default, rather than treating opt-in contract reproducers as a managed frontend application. (#29)

Release v0.2.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 11:41
532d218

Added

  • concepts/conceptstypes recognizes domain concepts from go/types using the same scalar kinds and declaration rules as runtime recognition, for generators and analysis tools. (#15)
  • dependencyinjection/bindingtypes plans constructor bindings, lifetimes and interface forwarding from checked Go packages and explicit configuration, with stable diagnostics. Generators own rendering; analysis never runs constructors. (part of #14)
  • Package naming provides acronym-friendly camel case, Pascal case and non-pluralizing default, camel-case and namespaced policies based on C# Fundamentals. Serializer defaults remain application-owned. (part of #21)
  • An unpublished recipes module demonstrates UUID-library conversions, resolver-only samber/do and dig bridges, Fx hosting of the Fundamentals provider, and package loading for compile-time concept recognition. Optional dependencies stay outside the core module. (#22)

Changed

  • Module gates cover explicitly allow-listed nested modules. Publishable modules have independent releases and protected tag prefixes; unpublished recipes cannot be released and may use the narrowly scoped local-root replacement. (part of #16)

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)