Skip to content

GCF Spec v3.5.3 — canonical int64 numeric domain

Latest

Choose a tag to compare

@blackwell-systems blackwell-systems released this 15 Aug 00:24
· 55 commits to main since this release

v3.5.3 specifies the canonical numeric domain (Section 2.3.2): signed 64-bit integers (int64, [-2^63, 2^63-1]) for integer values and IEEE-754 double for non-integer values — the largest integer domain representable losslessly in every reference language.

Earlier versions left the numeric domain implementation-defined. v3.5.3 makes it a specified, symmetric conformance property:

  • A decoder parses an integer literal into an exact int64-capable type and returns an out-of-range error outside int64.
  • An encoder returns an out-of-range error for a host integer outside int64.
  • Values beyond int64 (unsigned-64 identifiers, exact decimals) are modeled as strings.

Canonical number formatting (Section 2.3.1) is aligned to the domain: a double at or above 2^53 is emitted in exponent notation, so a bare-integer token is unambiguously an int64. The JavaScript-local 2^53 boundary is handled by a documented SDK largeInt policy.

The wire grammar is unchanged. This is a normative behavior change gated at the version boundary: a v3.5.3 decoder returning an out-of-range error for a payload an earlier, implementation-defined decoder accepted is correct at that boundary, not a regression.