Gate the portable bare-name dialect on the GoMEOS binding (100% / six families)#4
Open
estebanzimanyi wants to merge 1 commit into
Open
Conversation
Add the canonical portable bare-name dialect (RFC #920) parity gate so GoMEOS exposes the same operator -> bareName surface as every other MobilityDB binding/engine, verified by construction across all six in-scope user-facing type families. Stacks on the MEOS 1.4 bump (PR MobilityDB#3, bump/meos-1.4): the IDL-driven codegen there emits tools/_preview/*.go from tools/meos-idl.json (the MEOS-API parser's JSON output), wrapping every operator's own backing C function for temporal, geo, cbuffer, npoint, pose and rgeo. - tools/portable-aliases.json: the 29-pair contract, vendored byte-identical from MEOS-API meta/portable-aliases.json (single source of truth); --idl prefers the catalog's folded-in copy once present. - tools/portable_parity.py: audits the exposed CGO symbol set -- every C.<symbol>( in the hand-written root *.go AND the IDL-driven tools/_preview/*.go. A bare name is backed iff some referenced MEOS symbol == bareName or startswith(bareName + "_"), with the contract's verified explicitBacking (nearestApproachDistance <- nad_*). Reads JSON-derived artifacts only -- never parses meos.h. - tools/parity/parity_test.go: pure-Go, no import "C" -- a language-independent mirror with an identical verdict that runs in CI with no libmeos/CGO toolchain. - .github/workflows/portable-parity.yml: runs both gates on push/PR. - tools/PORTABLE_ALIASES.md: documents the dialect and the gate. Result: 29/29 bare names backed, 0 unbacked, all six in-scope families covered (temporal, geo, cbuffer, npoint, pose, rgeo) -- 100% parity. The gate hard-fails on any in-scope family that is present in the surface but unbacked, or absent: cbuffer/npoint/pose/rgeo are full user-facing types and are never excluded from the parity headline. The pre-1.4 tdistance version bridge is now inert -- MEOS 1.4 provides the canonical tdistance_* prefix.
36c21d1 to
5814770
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings GoMEOS into the MobilityDB ecosystem's portable bare-name dialect (RFC #920) at 100% parity across all six in-scope user-facing type families, so one program/query runs identically across every binding and engine (PyMEOS, JMEOS, MEOS.NET, MobilityDuck, MobilitySpark, …). Mirrors the MEOS.NET (PR #5) / PyMEOS (PR #87) parity gates, adapted to Go/CGO.
What this adds
tools/portable-aliases.json— the canonical 29 operator → bareName contract, vendored byte-identical from MEOS-APImeta/portable-aliases.json(single source of truth;--idlprefers the folded-in catalog copy automatically once a re-vendored catalog carries it).tools/portable_parity.py— audits the exposed CGO symbol set (everyC.<symbol>(in the hand-written root*.goand the IDL-driventools/_preview/*.go). A bare name is backed iff some referenced MEOS symbol== bareNameorstartswith(bareName + "_"), with the contract's verifiedexplicitBacking(nearestApproachDistance ← nad_*). Consumes JSON-derived artifacts only — it never parsesmeos.h.tools/parity/parity_test.go— a pure-Go mirror (noimport "C") with an identical verdict that runs in CI without libmeos/CGO..github/workflows/portable-parity.yml— runs both gates on push/PR.tools/PORTABLE_ALIASES.md— documents the dialect and the gate.Result — genuine 100%
29 / 29 bare names backed, 0 unbacked, 6 / 6 in-scope families covered:
Every portable name reuses the operator's own backing C function (equivalence by construction) — no reimplementation, no type-qualified or per-binding form.
cbuffer/npoint/pose/rgeoare full user-facing types and are never excluded from the parity headline: the gate hard-fails on any in-scope family that is present in the surface but unbacked (regressed) or absent (pending). The pre-1.4tdistanceversion bridge is now inert — MEOS 1.4 provides the canonicaltdistance_*prefix.Provenance
Discussion MobilityDB#861 · RFC #920 · native MobilityDB#1075 · manual MobilityDB#1078 · MEOS-API cross-repo handoff PR #9.