Initial commit#1
Conversation
Nyuke235
commented
Apr 29, 2026
- Compilation with a multi-stage Dockerfile of MEOS and all its dependencies in wasm64 or wasm32 (both have been tested and work), with automatic detection of pointer mode at runtime.
- FunctionsGenerator.ts that reads meos-idl.json and automatically generates two files:
- bindings.c: C wrappers EMSCRIPTEN_KEEPALIVE
- functions.ts: TypeScript bindings calling C functions
- Implemented types (each type exposes constructors, accessors, predicates, set operations, and comparisons):
- Number: IntSpan, FloatSpan, IntSpanSet, FloatSpanSet, IntSet, FloatSet
- Time: TsTzSpan, TsTzSpanSet, TsTzSet, DateSpan, DateSpanSet, DateSet
- Boxes: TBox
- Temporal: TBool, TInt, TFloat
- Reorganization of source code into subfolders
- All tests for most types
- Updated README with more details (installation, memory management, types)
- base class: MeosException - internal errors - argument errors - I/O errors
- renamed MeoSet -> MeosSet - drop wasm32: MEOS.js now targets wasm64 exclusively; added assertWasm64Supported() which validates a 13-byte MEMORY64 probe binary via WebAssembly.validate() before loading the module - renamed src/core/functions.ts -> core/functions/functions.generated.ts - moved codegen/ and core/ to project root (src/ removed) - mirrored core/ structure in test/ (test/types/, test/functions/) - added typed MEOS error handling: full exception hierarchy in errors.ts - added error handling guide in docs/guide/errors.md - updated README, tsconfig, typedoc, Dockerfile and all import paths
Temporal subtype classes - TBoolInst, TBoolSeq, TBoolSeqSet - TIntInst, TIntSeq, TIntSeqSet - TFloatInst, TFloatSeq, TFloatSeqSet - TemporalFactory: createTBool, createTInt, createTFloat via temporal_subtype() - wasm/meos.d.ts: expose allocate / ALLOC_NORMAL Test coverage: - test/types/temporal/test_subtypes: 25 tests for all subtypes constructors & factory routing - test_tbool - test_tint - test_tfloat - test_tbox Docker / build: Dockerfile: GSL URL ftp->ftpmirror, config.sub via automake, pin MobilityDB commit (ARG MOBILITYDB_COMMIT=ee27da1), drop --depth=1
Restructuration:
- core/types/base/* -> basic/tbool/, baisc/tint/, basic/tfloat/
- core/types/base/{Span, SpanSet, MeosSet} -> collections/base/
- core/types/number/* -> collections/number/
- core/types/time/* -> collections/time/
TText (core/types/basic/ttext/):
- TText.ts
- TTextInst.ts
- TTextSeq.ts
- TTextSeqSet.ts
- TemporalFactory
- 35 tests for TText
…odegen: New types (collections/number): - BigIntSpan - BigIntSpanSet - BigIntSet New type (collections/text): - TextSet Generator fix (FunctionsGenerator.ts): - Add isInt64() predicate - Return values wrapped with Number(), arguments with BigInt() - Fix boolResult path for int64 result types - Fixes BigInt WASM calls that were silently returning bigint instead of number, and shift_scale calls crashing with 'Cannot convert N to a BigInt'
Bugs fixed: - isInt64 predicate was not used inside detectBoolResult Compile errors: - TextSet.ts -> distance() was abstract but unimplemented
|
Cross-binding parity status (2026-05-21) — IDL refresh path verified, type-wrapper sweep needed After running the codegen locally against the MEOS-API published meos-idl.json (the canonical SoT every other FFI binding now consumes — see PyMEOS-CFFI #18/#19, GoMEOS #2/#3, MEOS.NET #3/#4, JMEOS #19): cp /path/to/MEOS-API/output/meos-idl.json codegen/res/meos-idl.json
npm run generate
# Done. Generated: 2663 Skipped: 1 Manual: 35 Duplicates: 0Result:
However,
These are not regressions — they're signature corrections that flow from the same MEOS-API canonical normalization powering the other 4 FFI bindings. Path forward for a clean PR:
I've verified steps 1+2 locally on a fork branch (
|
|
Thank you a lot for digging into the regen end-to-end and laying out the failure mode this clearly. Let's go with option (a). I'd like to keep the current PR focused on its existing scope rather than bundle the IDL refresh in (the 234-site sweep is mechanical but large enough to muddy this diff), so once this PR is merged, please go ahead and open the fork-stacked PR from
I'll prioritize reviewing it as soon as it's up. Aligning on MEOS-API's canonical IDL is clearly the right move Thank you again. |
|
Opened as #2 ( Walking your list: 1 (IDL refreshed to MEOS-API canonical), 2 (regenerated 3 — the Fixed at the root in MobilityDB/MEOS-API#15 (recovers PG types collapsed to int, now including |