edict-lang 1.2.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -13
- package/dist/ast/nodes.d.ts +4 -3
- package/dist/ast/nodes.d.ts.map +1 -1
- package/dist/ast/nodes.js +1 -0
- package/dist/ast/nodes.js.map +1 -1
- package/dist/ast/type-constants.d.ts +12 -0
- package/dist/ast/type-constants.d.ts.map +1 -0
- package/dist/ast/type-constants.js +16 -0
- package/dist/ast/type-constants.js.map +1 -0
- package/dist/ast/types.d.ts +1 -1
- package/dist/ast/types.d.ts.map +1 -1
- package/dist/builtins/builtin-enums.d.ts +12 -0
- package/dist/builtins/builtin-enums.d.ts.map +1 -0
- package/dist/builtins/builtin-enums.js +45 -0
- package/dist/builtins/builtin-enums.js.map +1 -0
- package/dist/builtins/builtin-types.d.ts +20 -0
- package/dist/builtins/builtin-types.d.ts.map +1 -0
- package/dist/builtins/builtin-types.js +6 -0
- package/dist/builtins/builtin-types.js.map +1 -0
- package/dist/builtins/builtins.d.ts +3 -0
- package/dist/builtins/builtins.d.ts.map +1 -0
- package/dist/builtins/builtins.js +3 -0
- package/dist/builtins/builtins.js.map +1 -0
- package/dist/builtins/domains/array.d.ts +3 -0
- package/dist/builtins/domains/array.d.ts.map +1 -0
- package/dist/builtins/domains/array.js +236 -0
- package/dist/builtins/domains/array.js.map +1 -0
- package/dist/builtins/domains/core.d.ts +3 -0
- package/dist/builtins/domains/core.d.ts.map +1 -0
- package/dist/builtins/domains/core.js +45 -0
- package/dist/builtins/domains/core.js.map +1 -0
- package/dist/builtins/domains/crypto.d.ts +3 -0
- package/dist/builtins/domains/crypto.d.ts.map +1 -0
- package/dist/builtins/domains/crypto.js +49 -0
- package/dist/builtins/domains/crypto.js.map +1 -0
- package/dist/builtins/domains/datetime.d.ts +3 -0
- package/dist/builtins/domains/datetime.d.ts.map +1 -0
- package/dist/builtins/domains/datetime.js +45 -0
- package/dist/builtins/domains/datetime.js.map +1 -0
- package/dist/builtins/domains/http.d.ts +3 -0
- package/dist/builtins/domains/http.d.ts.map +1 -0
- package/dist/builtins/domains/http.js +55 -0
- package/dist/builtins/domains/http.js.map +1 -0
- package/dist/builtins/domains/int64.d.ts +3 -0
- package/dist/builtins/domains/int64.d.ts.map +1 -0
- package/dist/builtins/domains/int64.js +31 -0
- package/dist/builtins/domains/int64.js.map +1 -0
- package/dist/builtins/domains/io.d.ts +3 -0
- package/dist/builtins/domains/io.d.ts.map +1 -0
- package/dist/builtins/domains/io.js +79 -0
- package/dist/builtins/domains/io.js.map +1 -0
- package/dist/builtins/domains/json.d.ts +3 -0
- package/dist/builtins/domains/json.d.ts.map +1 -0
- package/dist/builtins/domains/json.js +47 -0
- package/dist/builtins/domains/json.js.map +1 -0
- package/dist/builtins/domains/math.d.ts +3 -0
- package/dist/builtins/domains/math.d.ts.map +1 -0
- package/dist/builtins/domains/math.js +47 -0
- package/dist/builtins/domains/math.js.map +1 -0
- package/dist/builtins/domains/option.d.ts +3 -0
- package/dist/builtins/domains/option.d.ts.map +1 -0
- package/dist/builtins/domains/option.js +56 -0
- package/dist/builtins/domains/option.js.map +1 -0
- package/dist/builtins/domains/random.d.ts +3 -0
- package/dist/builtins/domains/random.d.ts.map +1 -0
- package/dist/builtins/domains/random.js +50 -0
- package/dist/builtins/domains/random.js.map +1 -0
- package/dist/builtins/domains/regex.d.ts +3 -0
- package/dist/builtins/domains/regex.d.ts.map +1 -0
- package/dist/builtins/domains/regex.js +69 -0
- package/dist/builtins/domains/regex.js.map +1 -0
- package/dist/builtins/domains/result.d.ts +3 -0
- package/dist/builtins/domains/result.d.ts.map +1 -0
- package/dist/builtins/domains/result.js +84 -0
- package/dist/builtins/domains/result.js.map +1 -0
- package/dist/builtins/domains/string.d.ts +3 -0
- package/dist/builtins/domains/string.d.ts.map +1 -0
- package/dist/builtins/domains/string.js +139 -0
- package/dist/builtins/domains/string.js.map +1 -0
- package/dist/builtins/domains/type-conversion.d.ts +3 -0
- package/dist/builtins/domains/type-conversion.d.ts.map +1 -0
- package/dist/builtins/domains/type-conversion.js +42 -0
- package/dist/builtins/domains/type-conversion.js.map +1 -0
- package/dist/builtins/host-helpers.d.ts +66 -0
- package/dist/builtins/host-helpers.d.ts.map +1 -0
- package/dist/builtins/host-helpers.js +127 -0
- package/dist/builtins/host-helpers.js.map +1 -0
- package/dist/builtins/registry.d.ts +48 -0
- package/dist/builtins/registry.d.ts.map +1 -0
- package/dist/builtins/registry.js +118 -0
- package/dist/builtins/registry.js.map +1 -0
- package/dist/check.d.ts +9 -2
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +30 -9
- package/dist/check.js.map +1 -1
- package/dist/checker/check.d.ts +18 -1
- package/dist/checker/check.d.ts.map +1 -1
- package/dist/checker/check.js +157 -108
- package/dist/checker/check.js.map +1 -1
- package/dist/checker/type-env.d.ts +2 -0
- package/dist/checker/type-env.d.ts.map +1 -1
- package/dist/checker/type-env.js +9 -0
- package/dist/checker/type-env.js.map +1 -1
- package/dist/codegen/browser-host-adapter.d.ts +29 -0
- package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
- package/dist/codegen/browser-host-adapter.js +51 -0
- package/dist/codegen/browser-host-adapter.js.map +1 -0
- package/dist/codegen/builtins.d.ts +2 -26
- package/dist/codegen/builtins.d.ts.map +1 -1
- package/dist/codegen/builtins.js +2 -341
- package/dist/codegen/builtins.js.map +1 -1
- package/dist/codegen/closures.d.ts +17 -0
- package/dist/codegen/closures.d.ts.map +1 -0
- package/dist/codegen/closures.js +140 -0
- package/dist/codegen/closures.js.map +1 -0
- package/dist/codegen/codegen.d.ts +6 -30
- package/dist/codegen/codegen.d.ts.map +1 -1
- package/dist/codegen/codegen.js +154 -1103
- package/dist/codegen/codegen.js.map +1 -1
- package/dist/codegen/collect-strings.d.ts +4 -0
- package/dist/codegen/collect-strings.d.ts.map +1 -0
- package/dist/codegen/collect-strings.js +76 -0
- package/dist/codegen/collect-strings.js.map +1 -0
- package/dist/codegen/compile-calls.d.ts +10 -0
- package/dist/codegen/compile-calls.d.ts.map +1 -0
- package/dist/codegen/compile-calls.js +374 -0
- package/dist/codegen/compile-calls.js.map +1 -0
- package/dist/codegen/compile-data.d.ts +22 -0
- package/dist/codegen/compile-data.d.ts.map +1 -0
- package/dist/codegen/compile-data.js +243 -0
- package/dist/codegen/compile-data.js.map +1 -0
- package/dist/codegen/compile-expr.d.ts +10 -0
- package/dist/codegen/compile-expr.d.ts.map +1 -0
- package/dist/codegen/compile-expr.js +156 -0
- package/dist/codegen/compile-expr.js.map +1 -0
- package/dist/codegen/compile-match.d.ts +7 -0
- package/dist/codegen/compile-match.d.ts.map +1 -0
- package/dist/codegen/compile-match.js +195 -0
- package/dist/codegen/compile-match.js.map +1 -0
- package/dist/codegen/compile-scalars.d.ts +25 -0
- package/dist/codegen/compile-scalars.d.ts.map +1 -0
- package/dist/codegen/compile-scalars.js +211 -0
- package/dist/codegen/compile-scalars.js.map +1 -0
- package/dist/codegen/hof-generators.d.ts +39 -0
- package/dist/codegen/hof-generators.d.ts.map +1 -0
- package/dist/codegen/hof-generators.js +336 -0
- package/dist/codegen/hof-generators.js.map +1 -0
- package/dist/codegen/host-adapter.d.ts +44 -0
- package/dist/codegen/host-adapter.d.ts.map +1 -0
- package/dist/codegen/host-adapter.js +9 -0
- package/dist/codegen/host-adapter.js.map +1 -0
- package/dist/codegen/imports.d.ts +15 -0
- package/dist/codegen/imports.d.ts.map +1 -0
- package/dist/codegen/imports.js +165 -0
- package/dist/codegen/imports.js.map +1 -0
- package/dist/codegen/node-host-adapter.d.ts +35 -0
- package/dist/codegen/node-host-adapter.d.ts.map +1 -0
- package/dist/codegen/node-host-adapter.js +155 -0
- package/dist/codegen/node-host-adapter.js.map +1 -0
- package/dist/codegen/runner.d.ts +36 -2
- package/dist/codegen/runner.d.ts.map +1 -1
- package/dist/codegen/runner.js +147 -271
- package/dist/codegen/runner.js.map +1 -1
- package/dist/codegen/types.d.ts +96 -0
- package/dist/codegen/types.d.ts.map +1 -0
- package/dist/codegen/types.js +63 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/compact/expand.d.ts +25 -0
- package/dist/compact/expand.d.ts.map +1 -0
- package/dist/compact/expand.js +199 -0
- package/dist/compact/expand.js.map +1 -0
- package/dist/compile.d.ts +2 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +2 -2
- package/dist/compile.js.map +1 -1
- package/dist/contracts/translate.js.map +1 -1
- package/dist/contracts/verify.d.ts +10 -2
- package/dist/contracts/verify.d.ts.map +1 -1
- package/dist/contracts/verify.js +26 -21
- package/dist/contracts/verify.js.map +1 -1
- package/dist/effects/call-graph.d.ts.map +1 -1
- package/dist/effects/call-graph.js +27 -4
- package/dist/effects/call-graph.js.map +1 -1
- package/dist/effects/effect-check.d.ts +10 -2
- package/dist/effects/effect-check.d.ts.map +1 -1
- package/dist/effects/effect-check.js +12 -7
- package/dist/effects/effect-check.js.map +1 -1
- package/dist/errors/error-catalog.d.ts +1 -1
- package/dist/errors/error-catalog.d.ts.map +1 -1
- package/dist/errors/error-catalog.js +119 -0
- package/dist/errors/error-catalog.js.map +1 -1
- package/dist/errors/structured-errors.d.ts +28 -1
- package/dist/errors/structured-errors.d.ts.map +1 -1
- package/dist/errors/structured-errors.js +9 -0
- package/dist/errors/structured-errors.js.map +1 -1
- package/dist/index.d.ts +20 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -10
- package/dist/index.js.map +1 -1
- package/dist/lint/lint.d.ts +9 -0
- package/dist/lint/lint.d.ts.map +1 -0
- package/dist/lint/lint.js +354 -0
- package/dist/lint/lint.js.map +1 -0
- package/dist/lint/warnings.d.ts +54 -0
- package/dist/lint/warnings.d.ts.map +1 -0
- package/dist/lint/warnings.js +39 -0
- package/dist/lint/warnings.js.map +1 -0
- package/dist/mcp/create-server.d.ts.map +1 -1
- package/dist/mcp/create-server.js +66 -5
- package/dist/mcp/create-server.js.map +1 -1
- package/dist/mcp/handlers.d.ts +21 -5
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +65 -15
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/prompts.d.ts +17 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +181 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/server.js +1 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/resolver/resolve.d.ts.map +1 -1
- package/dist/resolver/resolve.js +62 -16
- package/dist/resolver/resolve.js.map +1 -1
- package/dist/validator/node-validators.d.ts.map +1 -1
- package/dist/validator/node-validators.js +60 -5
- package/dist/validator/node-validators.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -36,11 +36,22 @@ Contract Verifier ── unproven? → StructuredError + counterexample → Agen
|
|
|
36
36
|
- **WASM compilation** — Verified programs compile to WebAssembly via binaryen and run in Node.js.
|
|
37
37
|
- **MCP interface** — All tools exposed via [Model Context Protocol](https://modelcontextprotocol.io/) for direct agent integration.
|
|
38
38
|
|
|
39
|
+
## Execution Model
|
|
40
|
+
|
|
41
|
+
Edict compiles to **WebAssembly** and runs in a sandboxed VM. This is a deliberate security decision — not a limitation:
|
|
42
|
+
|
|
43
|
+
- **No ambient authority** — compiled WASM cannot access the filesystem, network, or OS unless the host explicitly provides those capabilities via the pluggable `EdictHostAdapter` interface
|
|
44
|
+
- **Compile-time capability declaration** — the effect system (`io`, `reads`, `writes`, `fails`) lets the host inspect what a program requires _before_ running it
|
|
45
|
+
- **Runtime enforcement** — `RunLimits` controls execution timeout, memory ceiling, and filesystem sandboxing
|
|
46
|
+
- **Defense-in-depth** — agent-generated code that runs immediately needs stronger isolation than human-reviewed code. The effect system + WASM sandbox + host adapter pattern provides exactly that
|
|
47
|
+
|
|
48
|
+
Host capabilities available through adapters: filesystem (sandboxed), HTTP, crypto (SHA-256, MD5, HMAC), environment variables, CLI arguments. New capabilities are added by extending `EdictHostAdapter`.
|
|
49
|
+
|
|
39
50
|
## Quick Start
|
|
40
51
|
|
|
41
52
|
```bash
|
|
42
53
|
npm install
|
|
43
|
-
npm test #
|
|
54
|
+
npm test # 1073 tests across 62 files
|
|
44
55
|
npm run mcp # start MCP server (stdio transport)
|
|
45
56
|
```
|
|
46
57
|
|
|
@@ -49,18 +60,25 @@ npm run mcp # start MCP server (stdio transport)
|
|
|
49
60
|
| Tool | Description |
|
|
50
61
|
|---|---|
|
|
51
62
|
| `edict_schema` | Returns the full AST JSON Schema — the spec for how to write programs |
|
|
52
|
-
| `
|
|
63
|
+
| `edict_version` | Returns compiler version and capability info |
|
|
64
|
+
| `edict_examples` | Returns 18 example programs as JSON ASTs |
|
|
53
65
|
| `edict_validate` | Validates AST structure (field names, types, node kinds) |
|
|
54
66
|
| `edict_check` | Full pipeline: validate → resolve names → type check → effect check → verify contracts |
|
|
55
67
|
| `edict_compile` | Compiles a checked AST to WASM (returns base64-encoded binary) |
|
|
56
68
|
| `edict_run` | Executes a compiled WASM binary, returns output and exit code |
|
|
69
|
+
| `edict_patch` | Applies targeted AST patches by nodeId and re-checks |
|
|
70
|
+
| `edict_errors` | Returns machine-readable catalog of all error types |
|
|
71
|
+
| `edict_lint` | Runs non-blocking quality analysis and returns warnings |
|
|
57
72
|
|
|
58
73
|
### MCP Resources
|
|
59
74
|
|
|
60
75
|
| URI | Description |
|
|
61
76
|
|---|---|
|
|
62
|
-
| `edict://schema` | The AST JSON Schema |
|
|
77
|
+
| `edict://schema` | The full AST JSON Schema |
|
|
78
|
+
| `edict://schema/minimal` | Minimal schema variant for token-efficient bootstrap |
|
|
63
79
|
| `edict://examples` | All example programs |
|
|
80
|
+
| `edict://errors` | Machine-readable error catalog |
|
|
81
|
+
| `edict://schema/patch` | JSON Schema for the AST patch protocol |
|
|
64
82
|
|
|
65
83
|
## Example Program
|
|
66
84
|
|
|
@@ -134,15 +152,23 @@ src/
|
|
|
134
152
|
├── effects/ # Effect checking (call-graph propagation)
|
|
135
153
|
├── contracts/ # Contract verification (Z3/SMT integration)
|
|
136
154
|
├── codegen/ # WASM code generation (binaryen)
|
|
137
|
-
│ ├── codegen.ts
|
|
138
|
-
│ ├──
|
|
139
|
-
│ ├──
|
|
155
|
+
│ ├── codegen.ts # AST → WASM module orchestration
|
|
156
|
+
│ ├── compile-expr.ts # Expression compilation
|
|
157
|
+
│ ├── compile-*.ts # Specialized compilers (calls, data, match, scalars)
|
|
158
|
+
│ ├── runner.ts # WASM execution (Node.js WebAssembly API)
|
|
159
|
+
│ ├── host-adapter.ts # EdictHostAdapter interface
|
|
160
|
+
│ ├── closures.ts # Closure capture and compilation
|
|
161
|
+
│ ├── hof-generators.ts # Higher-order function WASM generators
|
|
140
162
|
│ └── string-table.ts # String interning for WASM memory
|
|
141
|
-
├──
|
|
163
|
+
├── builtins/ # Builtin registry and domain-specific builtins
|
|
164
|
+
├── compact/ # Compact AST format (token-efficient for agents)
|
|
165
|
+
├── lint/ # Non-blocking quality warnings
|
|
166
|
+
├── patch/ # Surgical AST patching by nodeId
|
|
167
|
+
├── mcp/ # MCP server (tools + resources + prompts)
|
|
142
168
|
└── errors/ # Structured error types
|
|
143
169
|
|
|
144
|
-
tests/ #
|
|
145
|
-
examples/ #
|
|
170
|
+
tests/ # 1073 tests across 62 files
|
|
171
|
+
examples/ # 18 example programs as JSON ASTs
|
|
146
172
|
schema/ # Auto-generated JSON Schema
|
|
147
173
|
```
|
|
148
174
|
|
|
@@ -150,7 +176,7 @@ schema/ # Auto-generated JSON Schema
|
|
|
150
176
|
|
|
151
177
|
| Type | Example |
|
|
152
178
|
|---|---|
|
|
153
|
-
| Basic | `Int`, `Float`, `String`, `Bool` |
|
|
179
|
+
| Basic | `Int`, `Int64`, `Float`, `String`, `Bool` |
|
|
154
180
|
| Array | `Array<Int>` |
|
|
155
181
|
| Option | `Option<String>` |
|
|
156
182
|
| Result | `Result<String, String>` |
|
|
@@ -178,9 +204,9 @@ Pre/post conditions are verified at compile time using Z3:
|
|
|
178
204
|
"kind": "post",
|
|
179
205
|
"id": "post-001",
|
|
180
206
|
"condition": {
|
|
181
|
-
"kind": "binop", "op": ">",
|
|
182
|
-
"left": { "kind": "ident", "name": "result" },
|
|
183
|
-
"right": { "kind": "ident", "name": "x" }
|
|
207
|
+
"kind": "binop", "id": "binop-001", "op": ">",
|
|
208
|
+
"left": { "kind": "ident", "id": "ident-result-001", "name": "result" },
|
|
209
|
+
"right": { "kind": "ident", "id": "ident-x-001", "name": "x" }
|
|
184
210
|
}
|
|
185
211
|
}
|
|
186
212
|
```
|
package/dist/ast/nodes.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export interface Import {
|
|
|
24
24
|
id: string;
|
|
25
25
|
module: string;
|
|
26
26
|
names: string[];
|
|
27
|
+
types?: Record<string, TypeExpr>;
|
|
27
28
|
}
|
|
28
29
|
export type Definition = FunctionDef | TypeDef | RecordDef | EnumDef | ConstDef;
|
|
29
30
|
/**
|
|
@@ -35,7 +36,7 @@ export interface FunctionDef {
|
|
|
35
36
|
name: string;
|
|
36
37
|
params: Param[];
|
|
37
38
|
effects: Effect[];
|
|
38
|
-
returnType
|
|
39
|
+
returnType?: TypeExpr;
|
|
39
40
|
contracts: Contract[];
|
|
40
41
|
body: Expression[];
|
|
41
42
|
}
|
|
@@ -102,7 +103,7 @@ export interface Param {
|
|
|
102
103
|
kind: "param";
|
|
103
104
|
id: string;
|
|
104
105
|
name: string;
|
|
105
|
-
type
|
|
106
|
+
type?: TypeExpr;
|
|
106
107
|
}
|
|
107
108
|
/**
|
|
108
109
|
* Pre/post contract on a function.
|
|
@@ -252,6 +253,6 @@ export declare const VALID_DEFINITION_KINDS: readonly ["fn", "type", "record", "
|
|
|
252
253
|
export declare const VALID_EXPRESSION_KINDS: readonly ["literal", "ident", "binop", "unop", "call", "if", "let", "match", "array", "tuple_expr", "record_expr", "enum_constructor", "access", "lambda", "block", "string_interp"];
|
|
253
254
|
export declare const VALID_TYPE_KINDS: readonly ["basic", "array", "option", "result", "unit_type", "refined", "fn_type", "named", "tuple"];
|
|
254
255
|
export declare const VALID_PATTERN_KINDS: readonly ["literal_pattern", "wildcard", "binding", "constructor"];
|
|
255
|
-
export declare const VALID_BASIC_TYPE_NAMES: readonly ["Int", "Float", "String", "Bool"];
|
|
256
|
+
export declare const VALID_BASIC_TYPE_NAMES: readonly ["Int", "Int64", "Float", "String", "Bool"];
|
|
256
257
|
export declare const ALL_VALID_KINDS: readonly ["module", "import", "fn", "type", "record", "enum", "const", "param", "field", "variant", "pre", "post", "arm", "field_init", "literal", "ident", "binop", "unop", "call", "if", "let", "match", "array", "tuple_expr", "record_expr", "enum_constructor", "access", "lambda", "block", "string_interp", "basic", "array", "option", "result", "unit_type", "refined", "fn_type", "named", "tuple", "literal_pattern", "wildcard", "binding", "constructor"];
|
|
257
258
|
//# sourceMappingURL=nodes.d.ts.map
|
package/dist/ast/nodes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC;AAElE,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAMjC,CAAC;AAMX;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"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"}
|
package/dist/ast/nodes.js
CHANGED
package/dist/ast/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAChF,0EAA0E;AAC1E,uDAAuD;AAiBvD,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC5C,MAAM;IACN,OAAO;IACP,QAAQ;IACR,IAAI;IACJ,OAAO;CACD,CAAC;
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAChF,0EAA0E;AAC1E,uDAAuD;AAiBvD,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC5C,MAAM;IACN,OAAO;IACP,QAAQ;IACR,IAAI;IACJ,OAAO;CACD,CAAC;AA6LX,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACvD,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,SAAS;CACH,CAAC;AAYX,MAAM,CAAC,MAAM,eAAe,GAA6B,CAAC,KAAK,EAAE,GAAG,CAAU,CAAC;AA2I/E,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAEhF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,IAAI;IACJ,KAAK;IACL,OAAO;IACP,OAAO;IACP,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,eAAe;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,iBAAiB;IACjB,UAAU;IACV,SAAS;IACT,aAAa;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,KAAK;IACL,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,QAAQ;IACR,QAAQ;IACR,GAAG,sBAAsB;IACzB,OAAO;IACP,OAAO;IACP,SAAS;IACT,KAAK;IACL,MAAM;IACN,KAAK;IACL,YAAY;IACZ,GAAG,sBAAsB;IACzB,GAAG,gBAAgB;IACnB,GAAG,mBAAmB;CAChB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TypeExpr } from "./types.js";
|
|
2
|
+
export declare const INT_TYPE: TypeExpr;
|
|
3
|
+
export declare const INT64_TYPE: TypeExpr;
|
|
4
|
+
export declare const FLOAT_TYPE: TypeExpr;
|
|
5
|
+
export declare const STRING_TYPE: TypeExpr;
|
|
6
|
+
export declare const BOOL_TYPE: TypeExpr;
|
|
7
|
+
export declare const UNKNOWN_TYPE: TypeExpr;
|
|
8
|
+
export declare const ARRAY_INT_TYPE: TypeExpr;
|
|
9
|
+
export declare const OPTION_INT_TYPE: TypeExpr;
|
|
10
|
+
export declare const RESULT_INT_TYPE: TypeExpr;
|
|
11
|
+
export declare const RESULT_STRING_TYPE: TypeExpr;
|
|
12
|
+
//# sourceMappingURL=type-constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-constants.d.ts","sourceRoot":"","sources":["../../src/ast/type-constants.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,QAAQ,EAAE,QAAyC,CAAC;AACjE,eAAO,MAAM,UAAU,EAAE,QAA2C,CAAC;AACrE,eAAO,MAAM,UAAU,EAAE,QAA2C,CAAC;AACrE,eAAO,MAAM,WAAW,EAAE,QAA4C,CAAC;AACvE,eAAO,MAAM,SAAS,EAAE,QAA0C,CAAC;AACnE,eAAO,MAAM,YAAY,EAAE,QAA6C,CAAC;AACzE,eAAO,MAAM,cAAc,EAAE,QAA+C,CAAC;AAC7E,eAAO,MAAM,eAAe,EAAE,QAA8C,CAAC;AAC7E,eAAO,MAAM,eAAe,EAAE,QAA0D,CAAC;AACzF,eAAO,MAAM,kBAAkB,EAAE,QAAgE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Shared Type Constants — Singleton TypeExpr instances
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Avoids duplicating the same type constant objects across modules.
|
|
5
|
+
// Import these instead of defining local copies.
|
|
6
|
+
export const INT_TYPE = { kind: "basic", name: "Int" };
|
|
7
|
+
export const INT64_TYPE = { kind: "basic", name: "Int64" };
|
|
8
|
+
export const FLOAT_TYPE = { kind: "basic", name: "Float" };
|
|
9
|
+
export const STRING_TYPE = { kind: "basic", name: "String" };
|
|
10
|
+
export const BOOL_TYPE = { kind: "basic", name: "Bool" };
|
|
11
|
+
export const UNKNOWN_TYPE = { kind: "named", name: "unknown" };
|
|
12
|
+
export const ARRAY_INT_TYPE = { kind: "array", element: INT_TYPE };
|
|
13
|
+
export const OPTION_INT_TYPE = { kind: "option", inner: INT_TYPE };
|
|
14
|
+
export const RESULT_INT_TYPE = { kind: "result", ok: INT_TYPE, err: INT_TYPE };
|
|
15
|
+
export const RESULT_STRING_TYPE = { kind: "result", ok: STRING_TYPE, err: STRING_TYPE };
|
|
16
|
+
//# sourceMappingURL=type-constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-constants.js","sourceRoot":"","sources":["../../src/ast/type-constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uDAAuD;AACvD,gFAAgF;AAChF,oEAAoE;AACpE,iDAAiD;AAIjD,MAAM,CAAC,MAAM,QAAQ,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACjE,MAAM,CAAC,MAAM,UAAU,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACrE,MAAM,CAAC,MAAM,UAAU,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACrE,MAAM,CAAC,MAAM,WAAW,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACvE,MAAM,CAAC,MAAM,SAAS,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,YAAY,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACzE,MAAM,CAAC,MAAM,cAAc,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/ast/types.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type TypeExpr = BasicType | ArrayType | OptionType | ResultType | UnitTyp
|
|
|
7
7
|
*/
|
|
8
8
|
export interface BasicType {
|
|
9
9
|
kind: "basic";
|
|
10
|
-
name: "Int" | "Float" | "String" | "Bool";
|
|
10
|
+
name: "Int" | "Int64" | "Float" | "String" | "Bool";
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* Homogeneous array type.
|
package/dist/ast/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,QAAQ,GACd,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,SAAS,GACT,SAAS,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,QAAQ,GACd,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,SAAS,GACT,SAAS,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,QAAQ,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,QAAQ,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACxB;AAID,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { EnumDef } from "../ast/nodes.js";
|
|
2
|
+
/**
|
|
3
|
+
* Built-in Option enum: None | Some(value: Int)
|
|
4
|
+
*/
|
|
5
|
+
export declare const OPTION_ENUM_DEF: EnumDef;
|
|
6
|
+
/**
|
|
7
|
+
* Built-in Result enum: Ok(value: Int) | Err(error: Int)
|
|
8
|
+
*/
|
|
9
|
+
export declare const RESULT_ENUM_DEF: EnumDef;
|
|
10
|
+
/** All built-in enum definitions. */
|
|
11
|
+
export declare const BUILTIN_ENUMS: readonly EnumDef[];
|
|
12
|
+
//# sourceMappingURL=builtin-enums.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-enums.d.ts","sourceRoot":"","sources":["../../src/builtins/builtin-enums.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OAY7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OAgB7B,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAAuC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Built-in Enum Definitions — shared across resolver, checker, and codegen
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Single source of truth for Option and Result enum structures.
|
|
5
|
+
// Any change here propagates to all pipeline stages automatically.
|
|
6
|
+
import { INT_TYPE } from "../ast/type-constants.js";
|
|
7
|
+
/**
|
|
8
|
+
* Built-in Option enum: None | Some(value: Int)
|
|
9
|
+
*/
|
|
10
|
+
export const OPTION_ENUM_DEF = {
|
|
11
|
+
kind: "enum",
|
|
12
|
+
id: "__builtin_option",
|
|
13
|
+
name: "Option",
|
|
14
|
+
variants: [
|
|
15
|
+
{ kind: "variant", id: "__builtin_option_none", name: "None", fields: [] },
|
|
16
|
+
{
|
|
17
|
+
kind: "variant", id: "__builtin_option_some", name: "Some", fields: [
|
|
18
|
+
{ kind: "field", id: "__builtin_option_some_value", name: "value", type: INT_TYPE },
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Built-in Result enum: Ok(value: Int) | Err(error: Int)
|
|
25
|
+
*/
|
|
26
|
+
export const RESULT_ENUM_DEF = {
|
|
27
|
+
kind: "enum",
|
|
28
|
+
id: "__builtin_result",
|
|
29
|
+
name: "Result",
|
|
30
|
+
variants: [
|
|
31
|
+
{
|
|
32
|
+
kind: "variant", id: "__builtin_result_ok", name: "Ok", fields: [
|
|
33
|
+
{ kind: "field", id: "__builtin_result_ok_value", name: "value", type: INT_TYPE },
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
kind: "variant", id: "__builtin_result_err", name: "Err", fields: [
|
|
38
|
+
{ kind: "field", id: "__builtin_result_err_error", name: "error", type: INT_TYPE },
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
/** All built-in enum definitions. */
|
|
44
|
+
export const BUILTIN_ENUMS = [OPTION_ENUM_DEF, RESULT_ENUM_DEF];
|
|
45
|
+
//# sourceMappingURL=builtin-enums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-enums.js","sourceRoot":"","sources":["../../src/builtins/builtin-enums.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAChF,gEAAgE;AAChE,mEAAmE;AAGnE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY;IACpC,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE;QACN,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1E;YACI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;gBAChE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,6BAA6B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;aACtF;SACJ;KACJ;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY;IACpC,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE;QACN;YACI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;gBAC5D,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;aACpF;SACJ;QACD;YACI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;gBAC9D,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,4BAA4B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;aACrF;SACJ;KACJ;CACJ,CAAC;AAEF,qCAAqC;AACrC,MAAM,CAAC,MAAM,aAAa,GAAuB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { FunctionType } from "../ast/types.js";
|
|
2
|
+
import type { HostContext } from "./host-helpers.js";
|
|
3
|
+
import type binaryen from "binaryen";
|
|
4
|
+
/** Co-located builtin definition — type signature + implementation together. */
|
|
5
|
+
export interface BuiltinDef {
|
|
6
|
+
/** Builtin function name (e.g., "print", "array_map"). */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Edict-level function type signature (includes effects, params, returnType). */
|
|
9
|
+
type: FunctionType;
|
|
10
|
+
/** Implementation: host-imported or WASM-native. */
|
|
11
|
+
impl: BuiltinImpl;
|
|
12
|
+
}
|
|
13
|
+
export type BuiltinImpl = {
|
|
14
|
+
kind: "host";
|
|
15
|
+
factory: (ctx: HostContext) => Function;
|
|
16
|
+
} | {
|
|
17
|
+
kind: "wasm";
|
|
18
|
+
generator: (mod: binaryen.Module) => void;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=builtin-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-types.d.ts","sourceRoot":"","sources":["../../src/builtins/builtin-types.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACvB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,IAAI,EAAE,YAAY,CAAC;IACnB,oDAAoD;IACpD,IAAI,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,QAAQ,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Builtin type definitions — shared by registry and domain files
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Extracted to break the circular import between registry.ts ↔ domain files.
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=builtin-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-types.js","sourceRoot":"","sources":["../../src/builtins/builtin-types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iEAAiE;AACjE,gFAAgF;AAChF,6EAA6E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/builtins/builtins.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/builtins/builtins.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA2OtD,eAAO,MAAM,cAAc,EAAE,UAAU,EAAqD,CAAC"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Array domain — host-imported array ops + WASM-native HOF builtins
|
|
3
|
+
// =============================================================================
|
|
4
|
+
import { INT_TYPE, BOOL_TYPE, ARRAY_INT_TYPE, OPTION_INT_TYPE } from "../../ast/type-constants.js";
|
|
5
|
+
import { getMemoryBuffer, writeArrayResult } from "../host-helpers.js";
|
|
6
|
+
import { generateArrayMap, generateArrayFilter, generateArrayReduce, generateArrayFind, generateArraySort } from "../../codegen/hof-generators.js";
|
|
7
|
+
// ── Host-imported array builtins ────────────────────────────────────────────
|
|
8
|
+
const HOST_ARRAY_BUILTINS = [
|
|
9
|
+
{
|
|
10
|
+
name: "array_length",
|
|
11
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
|
|
12
|
+
impl: {
|
|
13
|
+
kind: "host",
|
|
14
|
+
factory: (ctx) => (arrPtr) => {
|
|
15
|
+
return new DataView(getMemoryBuffer(ctx.state)).getInt32(arrPtr, true);
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: "array_get",
|
|
21
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
|
|
22
|
+
impl: {
|
|
23
|
+
kind: "host",
|
|
24
|
+
factory: (ctx) => (arrPtr, index) => {
|
|
25
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
26
|
+
const length = view.getInt32(arrPtr, true);
|
|
27
|
+
if (index < 0 || index >= length)
|
|
28
|
+
return 0;
|
|
29
|
+
return view.getInt32(arrPtr + 4 + index * 4, true);
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "array_set",
|
|
35
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE, INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
|
|
36
|
+
impl: {
|
|
37
|
+
kind: "host",
|
|
38
|
+
factory: (ctx) => (arrPtr, index, value) => {
|
|
39
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
40
|
+
const length = view.getInt32(arrPtr, true);
|
|
41
|
+
const elems = [];
|
|
42
|
+
for (let i = 0; i < length; i++) {
|
|
43
|
+
elems.push(i === index ? value : view.getInt32(arrPtr + 4 + i * 4, true));
|
|
44
|
+
}
|
|
45
|
+
return writeArrayResult(ctx.state, elems);
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "array_push",
|
|
51
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
|
|
52
|
+
impl: {
|
|
53
|
+
kind: "host",
|
|
54
|
+
factory: (ctx) => (arrPtr, value) => {
|
|
55
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
56
|
+
const length = view.getInt32(arrPtr, true);
|
|
57
|
+
const elems = [];
|
|
58
|
+
for (let i = 0; i < length; i++) {
|
|
59
|
+
elems.push(view.getInt32(arrPtr + 4 + i * 4, true));
|
|
60
|
+
}
|
|
61
|
+
elems.push(value);
|
|
62
|
+
return writeArrayResult(ctx.state, elems);
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: "array_pop",
|
|
68
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
|
|
69
|
+
impl: {
|
|
70
|
+
kind: "host",
|
|
71
|
+
factory: (ctx) => (arrPtr) => {
|
|
72
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
73
|
+
const length = view.getInt32(arrPtr, true);
|
|
74
|
+
if (length === 0)
|
|
75
|
+
return writeArrayResult(ctx.state, []);
|
|
76
|
+
const elems = [];
|
|
77
|
+
for (let i = 0; i < length - 1; i++) {
|
|
78
|
+
elems.push(view.getInt32(arrPtr + 4 + i * 4, true));
|
|
79
|
+
}
|
|
80
|
+
return writeArrayResult(ctx.state, elems);
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: "array_concat",
|
|
86
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE, ARRAY_INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
|
|
87
|
+
impl: {
|
|
88
|
+
kind: "host",
|
|
89
|
+
factory: (ctx) => (aPtr, bPtr) => {
|
|
90
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
91
|
+
const aLen = view.getInt32(aPtr, true);
|
|
92
|
+
const bLen = view.getInt32(bPtr, true);
|
|
93
|
+
const elems = [];
|
|
94
|
+
for (let i = 0; i < aLen; i++) {
|
|
95
|
+
elems.push(view.getInt32(aPtr + 4 + i * 4, true));
|
|
96
|
+
}
|
|
97
|
+
for (let i = 0; i < bLen; i++) {
|
|
98
|
+
elems.push(view.getInt32(bPtr + 4 + i * 4, true));
|
|
99
|
+
}
|
|
100
|
+
return writeArrayResult(ctx.state, elems);
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "array_slice",
|
|
106
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE, INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
|
|
107
|
+
impl: {
|
|
108
|
+
kind: "host",
|
|
109
|
+
factory: (ctx) => (arrPtr, start, end) => {
|
|
110
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
111
|
+
const length = view.getInt32(arrPtr, true);
|
|
112
|
+
const s = Math.max(0, Math.min(start, length));
|
|
113
|
+
const e = Math.max(s, Math.min(end, length));
|
|
114
|
+
const elems = [];
|
|
115
|
+
for (let i = s; i < e; i++) {
|
|
116
|
+
elems.push(view.getInt32(arrPtr + 4 + i * 4, true));
|
|
117
|
+
}
|
|
118
|
+
return writeArrayResult(ctx.state, elems);
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "array_isEmpty",
|
|
124
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
|
|
125
|
+
impl: {
|
|
126
|
+
kind: "host",
|
|
127
|
+
factory: (ctx) => (arrPtr) => {
|
|
128
|
+
return new DataView(getMemoryBuffer(ctx.state)).getInt32(arrPtr, true) === 0 ? 1 : 0;
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: "array_contains",
|
|
134
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
|
|
135
|
+
impl: {
|
|
136
|
+
kind: "host",
|
|
137
|
+
factory: (ctx) => (arrPtr, value) => {
|
|
138
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
139
|
+
const length = view.getInt32(arrPtr, true);
|
|
140
|
+
for (let i = 0; i < length; i++) {
|
|
141
|
+
if (view.getInt32(arrPtr + 4 + i * 4, true) === value)
|
|
142
|
+
return 1;
|
|
143
|
+
}
|
|
144
|
+
return 0;
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: "array_reverse",
|
|
150
|
+
type: { kind: "fn_type", params: [ARRAY_INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
|
|
151
|
+
impl: {
|
|
152
|
+
kind: "host",
|
|
153
|
+
factory: (ctx) => (arrPtr) => {
|
|
154
|
+
const view = new DataView(getMemoryBuffer(ctx.state));
|
|
155
|
+
const length = view.getInt32(arrPtr, true);
|
|
156
|
+
const elems = [];
|
|
157
|
+
for (let i = length - 1; i >= 0; i--) {
|
|
158
|
+
elems.push(view.getInt32(arrPtr + 4 + i * 4, true));
|
|
159
|
+
}
|
|
160
|
+
return writeArrayResult(ctx.state, elems);
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
];
|
|
165
|
+
// ── WASM-native HOF builtins ────────────────────────────────────────────────
|
|
166
|
+
const WASM_ARRAY_BUILTINS = [
|
|
167
|
+
{
|
|
168
|
+
name: "array_map",
|
|
169
|
+
type: {
|
|
170
|
+
kind: "fn_type",
|
|
171
|
+
params: [
|
|
172
|
+
ARRAY_INT_TYPE,
|
|
173
|
+
{ kind: "fn_type", params: [INT_TYPE], effects: [], returnType: INT_TYPE },
|
|
174
|
+
],
|
|
175
|
+
effects: ["pure"],
|
|
176
|
+
returnType: ARRAY_INT_TYPE,
|
|
177
|
+
},
|
|
178
|
+
impl: { kind: "wasm", generator: generateArrayMap },
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: "array_filter",
|
|
182
|
+
type: {
|
|
183
|
+
kind: "fn_type",
|
|
184
|
+
params: [
|
|
185
|
+
ARRAY_INT_TYPE,
|
|
186
|
+
{ kind: "fn_type", params: [INT_TYPE], effects: [], returnType: BOOL_TYPE },
|
|
187
|
+
],
|
|
188
|
+
effects: ["pure"],
|
|
189
|
+
returnType: ARRAY_INT_TYPE,
|
|
190
|
+
},
|
|
191
|
+
impl: { kind: "wasm", generator: generateArrayFilter },
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: "array_reduce",
|
|
195
|
+
type: {
|
|
196
|
+
kind: "fn_type",
|
|
197
|
+
params: [
|
|
198
|
+
ARRAY_INT_TYPE,
|
|
199
|
+
INT_TYPE,
|
|
200
|
+
{ kind: "fn_type", params: [INT_TYPE, INT_TYPE], effects: [], returnType: INT_TYPE },
|
|
201
|
+
],
|
|
202
|
+
effects: ["pure"],
|
|
203
|
+
returnType: INT_TYPE,
|
|
204
|
+
},
|
|
205
|
+
impl: { kind: "wasm", generator: generateArrayReduce },
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
name: "array_find",
|
|
209
|
+
type: {
|
|
210
|
+
kind: "fn_type",
|
|
211
|
+
params: [
|
|
212
|
+
ARRAY_INT_TYPE,
|
|
213
|
+
{ kind: "fn_type", params: [INT_TYPE], effects: [], returnType: BOOL_TYPE },
|
|
214
|
+
],
|
|
215
|
+
effects: ["pure"],
|
|
216
|
+
returnType: OPTION_INT_TYPE,
|
|
217
|
+
},
|
|
218
|
+
impl: { kind: "wasm", generator: generateArrayFind },
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: "array_sort",
|
|
222
|
+
type: {
|
|
223
|
+
kind: "fn_type",
|
|
224
|
+
params: [
|
|
225
|
+
ARRAY_INT_TYPE,
|
|
226
|
+
{ kind: "fn_type", params: [INT_TYPE, INT_TYPE], effects: [], returnType: INT_TYPE },
|
|
227
|
+
],
|
|
228
|
+
effects: ["pure"],
|
|
229
|
+
returnType: ARRAY_INT_TYPE,
|
|
230
|
+
},
|
|
231
|
+
impl: { kind: "wasm", generator: generateArraySort },
|
|
232
|
+
},
|
|
233
|
+
];
|
|
234
|
+
// ── Combined export ─────────────────────────────────────────────────────────
|
|
235
|
+
export const ARRAY_BUILTINS = [...HOST_ARRAY_BUILTINS, ...WASM_ARRAY_BUILTINS];
|
|
236
|
+
//# sourceMappingURL=array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/builtins/domains/array.ts"],"names":[],"mappings":"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"}
|