@elaraai/east-c-wasm 0.1.1-beta.5

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.
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Platform function implementation.
7
+ * Receives Beast2-full encoded args, returns Beast2-full encoded result (or null).
8
+ */
9
+ export type PlatformFn = (args: Uint8Array[]) => Uint8Array | null;
10
+ /**
11
+ * Generic platform function factory.
12
+ * Called with Beast2-full encoded type params, returns a PlatformFn.
13
+ */
14
+ export type GenericPlatformFactory = (typeParamsBytes: Uint8Array) => PlatformFn;
15
+ export interface PlatformRegistration {
16
+ name: string;
17
+ isGeneric: boolean;
18
+ isAsync: boolean;
19
+ fn?: PlatformFn | undefined;
20
+ factory?: GenericPlatformFactory | undefined;
21
+ }
22
+ /**
23
+ * Compiled function handle. Opaque — use call() and free().
24
+ */
25
+ export type CompiledHandle = number & {
26
+ __brand: 'CompiledHandle';
27
+ };
28
+ /**
29
+ * EastWasm instance. Created by calling `createEastWasm()`.
30
+ */
31
+ export interface EastWasm {
32
+ /** Register a platform function that will be called from WASM. */
33
+ registerPlatform(reg: PlatformRegistration): void;
34
+ /** Compile East IR from Beast2-full encoded bytes (type header + IR value). */
35
+ compile(irBytes: Uint8Array): CompiledHandle;
36
+ /** Execute a compiled function with no arguments. */
37
+ call(handle: CompiledHandle): Uint8Array | null;
38
+ /**
39
+ * Execute a compiled function with Beast2-full encoded arguments.
40
+ * Args format: [count:u32le][len1:u32le][beast2_full_1]...
41
+ */
42
+ callWithArgs(handle: CompiledHandle, argsBytes: Uint8Array): Uint8Array | null;
43
+ /** Free a compiled function. Must be called when done. */
44
+ free(handle: CompiledHandle): void;
45
+ /** Run garbage collection on the WASM heap. */
46
+ gc(): void;
47
+ }
48
+ /**
49
+ * Options for creating an EastWasm instance.
50
+ */
51
+ export interface EastWasmOptions {
52
+ /** URL or path to east-c.wasm file. Auto-detected if not provided. */
53
+ wasmUrl?: string | undefined;
54
+ /** URL or path to east-c.js glue file. Auto-detected if not provided. */
55
+ glueUrl?: string | undefined;
56
+ }
57
+ /**
58
+ * Load and initialize the WASM module.
59
+ */
60
+ export declare function createEastWasm(options?: EastWasmOptions): Promise<EastWasm>;
61
+ export default createEastWasm;
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8CH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,UAAU,GAAG,IAAI,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,eAAe,EAAE,UAAU,KAAK,UAAU,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,kEAAkE;IAClE,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAElD,+EAA+E;IAC/E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAAC;IAE7C,qDAAqD;IACrD,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI,CAAC;IAEhD;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;IAE/E,0DAA0D;IAC1D,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAEnC,+CAA+C;IAC/C,EAAE,IAAI,IAAI,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqMjF;AAkCD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * @elaraai/east-c-wasm
7
+ *
8
+ * Generic WASM backend for executing East IR. No UI concepts —
9
+ * just compile(irBytes) → handle, call(handle) → resultBytes, free(handle).
10
+ *
11
+ * Platform functions are registered from JS and called back via imports.
12
+ */
13
+ import { createRequire } from 'node:module';
14
+ import { fileURLToPath } from 'node:url';
15
+ import { dirname, join } from 'node:path';
16
+ /** Result buffer size (1MB) — matches C side */
17
+ const RESULT_BUF_SIZE = 1024 * 1024;
18
+ /** Error buffer size (64KB) */
19
+ const ERROR_BUF_SIZE = 64 * 1024;
20
+ /**
21
+ * Load and initialize the WASM module.
22
+ */
23
+ export async function createEastWasm(options) {
24
+ // Resolve paths to WASM artifacts
25
+ const __filename = fileURLToPath(import.meta.url);
26
+ const __dirname = dirname(__filename);
27
+ const wasmDir = join(__dirname, '..', 'wasm');
28
+ // Load the Emscripten glue file using createRequire (it's a CJS module)
29
+ const require = createRequire(import.meta.url);
30
+ const gluePath = options?.glueUrl ?? join(wasmDir, 'east-c.js');
31
+ const createModule = require(gluePath);
32
+ const wasmPath = options?.wasmUrl ?? join(wasmDir, 'east-c.wasm');
33
+ const moduleOpts = {
34
+ locateFile(path) {
35
+ if (path.endsWith('.wasm'))
36
+ return wasmPath;
37
+ return path;
38
+ },
39
+ };
40
+ // Platform function registry (JS side)
41
+ const platformFns = new Map();
42
+ const genericCache = new Map();
43
+ // Declare mod here so the bridge closure can reference it
44
+ let mod;
45
+ // JS→WASM platform call bridge (imported by the WASM module)
46
+ moduleOpts.js_platform_call = (namePtr, tpPtr, tpLen, argsPtr, argsLen, outPtr, outLenPtr) => {
47
+ try {
48
+ const name = mod.UTF8ToString(namePtr);
49
+ const reg = platformFns.get(name);
50
+ if (!reg) {
51
+ writeErrorToWasm(`platform function not registered: ${name}`, outPtr, outLenPtr);
52
+ return 1;
53
+ }
54
+ // Decode args from WASM memory
55
+ const argsData = new Uint8Array(mod.HEAPU8.buffer, argsPtr, argsLen);
56
+ const args = decodeArgsList(argsData);
57
+ // Get the implementation
58
+ let impl;
59
+ if (reg.isGeneric && reg.factory) {
60
+ const tpBytes = tpLen > 0
61
+ ? new Uint8Array(mod.HEAPU8.buffer, tpPtr, tpLen).slice()
62
+ : new Uint8Array(0);
63
+ const cacheKey = `${name}|${bufToHex(tpBytes)}`;
64
+ let cached = genericCache.get(cacheKey);
65
+ if (!cached) {
66
+ cached = reg.factory(tpBytes);
67
+ genericCache.set(cacheKey, cached);
68
+ }
69
+ impl = cached;
70
+ }
71
+ else if (reg.fn) {
72
+ impl = reg.fn;
73
+ }
74
+ else {
75
+ writeErrorToWasm(`platform function ${name} has no implementation`, outPtr, outLenPtr);
76
+ return 1;
77
+ }
78
+ // Call the implementation
79
+ const result = impl(args);
80
+ // Write result back to WASM memory
81
+ if (result && result.length > 0) {
82
+ const outLenView = new DataView(mod.HEAPU8.buffer, outLenPtr, 4);
83
+ const capacity = outLenView.getUint32(0, true);
84
+ if (result.length > capacity) {
85
+ writeErrorToWasm('platform result too large', outPtr, outLenPtr);
86
+ return 1;
87
+ }
88
+ new Uint8Array(mod.HEAPU8.buffer, outPtr, result.length).set(result);
89
+ outLenView.setUint32(0, result.length, true);
90
+ }
91
+ else {
92
+ new DataView(mod.HEAPU8.buffer, outLenPtr, 4).setUint32(0, 0, true);
93
+ }
94
+ return 0;
95
+ }
96
+ catch (e) {
97
+ const msg = e instanceof Error ? e.message : String(e);
98
+ writeErrorToWasm(msg, outPtr, outLenPtr);
99
+ return 1;
100
+ }
101
+ };
102
+ mod = await createModule(moduleOpts);
103
+ // Pre-allocate result and error buffers in WASM memory
104
+ const resultBufPtr = mod._malloc(RESULT_BUF_SIZE);
105
+ const errorBufPtr = mod._malloc(ERROR_BUF_SIZE);
106
+ const resultLenPtr = mod._malloc(4);
107
+ const errorLenPtr = mod._malloc(4);
108
+ // Initialize the C runtime
109
+ mod._east_wasm_init();
110
+ function writeErrorToWasm(msg, outPtr, outLenPtr) {
111
+ const encoded = new TextEncoder().encode(msg);
112
+ const outLenView = new DataView(mod.HEAPU8.buffer, outLenPtr, 4);
113
+ const capacity = outLenView.getUint32(0, true);
114
+ const len = Math.min(encoded.length, capacity);
115
+ new Uint8Array(mod.HEAPU8.buffer, outPtr, len).set(encoded.subarray(0, len));
116
+ outLenView.setUint32(0, len, true);
117
+ }
118
+ function allocString(s) {
119
+ const len = mod.lengthBytesUTF8(s) + 1;
120
+ const ptr = mod._malloc(len);
121
+ mod.stringToUTF8(s, ptr, len);
122
+ return ptr;
123
+ }
124
+ function writeBytes(data) {
125
+ const ptr = mod._malloc(data.length);
126
+ mod.HEAPU8.set(data, ptr);
127
+ return ptr;
128
+ }
129
+ return {
130
+ registerPlatform(reg) {
131
+ platformFns.set(reg.name, reg);
132
+ const namePtr = allocString(reg.name);
133
+ mod._east_wasm_register_platform(namePtr, reg.isGeneric ? 1 : 0, reg.isAsync ? 1 : 0);
134
+ mod._free(namePtr);
135
+ },
136
+ compile(irBytes) {
137
+ const irPtr = writeBytes(irBytes);
138
+ const handle = mod._east_wasm_compile(irPtr, irBytes.length);
139
+ mod._free(irPtr);
140
+ if (handle === 0) {
141
+ const errPtr = mod._east_wasm_last_error();
142
+ const detail = errPtr ? mod.UTF8ToString(errPtr) : 'unknown error';
143
+ throw new Error(`east-c-wasm compile: ${detail}`);
144
+ }
145
+ return handle;
146
+ },
147
+ call(handle) {
148
+ new DataView(mod.HEAPU8.buffer, resultLenPtr, 4).setUint32(0, RESULT_BUF_SIZE, true);
149
+ new DataView(mod.HEAPU8.buffer, errorLenPtr, 4).setUint32(0, ERROR_BUF_SIZE, true);
150
+ const rc = mod._east_wasm_call(handle, resultBufPtr, resultLenPtr, errorBufPtr, errorLenPtr);
151
+ if (rc !== 0) {
152
+ const errLen = new DataView(mod.HEAPU8.buffer, errorLenPtr, 4).getUint32(0, true);
153
+ const errBytes = new Uint8Array(mod.HEAPU8.buffer, errorBufPtr, errLen);
154
+ throw new Error(`east-c-wasm: ${new TextDecoder().decode(errBytes)}`);
155
+ }
156
+ const resLen = new DataView(mod.HEAPU8.buffer, resultLenPtr, 4).getUint32(0, true);
157
+ if (resLen === 0)
158
+ return null;
159
+ return new Uint8Array(mod.HEAPU8.buffer, resultBufPtr, resLen).slice();
160
+ },
161
+ callWithArgs(handle, argsBytes) {
162
+ const argsPtr = writeBytes(argsBytes);
163
+ new DataView(mod.HEAPU8.buffer, resultLenPtr, 4).setUint32(0, RESULT_BUF_SIZE, true);
164
+ new DataView(mod.HEAPU8.buffer, errorLenPtr, 4).setUint32(0, ERROR_BUF_SIZE, true);
165
+ const rc = mod._east_wasm_call_with_args(handle, argsPtr, argsBytes.length, resultBufPtr, resultLenPtr, errorBufPtr, errorLenPtr);
166
+ mod._free(argsPtr);
167
+ if (rc !== 0) {
168
+ const errLen = new DataView(mod.HEAPU8.buffer, errorLenPtr, 4).getUint32(0, true);
169
+ const errBytes = new Uint8Array(mod.HEAPU8.buffer, errorBufPtr, errLen);
170
+ throw new Error(`east-c-wasm: ${new TextDecoder().decode(errBytes)}`);
171
+ }
172
+ const resLen = new DataView(mod.HEAPU8.buffer, resultLenPtr, 4).getUint32(0, true);
173
+ if (resLen === 0)
174
+ return null;
175
+ return new Uint8Array(mod.HEAPU8.buffer, resultBufPtr, resLen).slice();
176
+ },
177
+ free(handle) {
178
+ mod._east_wasm_free(handle);
179
+ },
180
+ gc() {
181
+ mod._east_wasm_gc();
182
+ },
183
+ };
184
+ }
185
+ // ============================================================================
186
+ // Helpers
187
+ // ============================================================================
188
+ /** Decode args list from the packed format: [count:u32le][len1:u32le][data1]... */
189
+ function decodeArgsList(data) {
190
+ if (data.length < 4)
191
+ return [];
192
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
193
+ const count = view.getUint32(0, true);
194
+ const args = [];
195
+ let offset = 4;
196
+ for (let i = 0; i < count; i++) {
197
+ if (offset + 4 > data.length)
198
+ break;
199
+ const len = view.getUint32(offset, true);
200
+ offset += 4;
201
+ if (offset + len > data.length)
202
+ break;
203
+ args.push(data.slice(offset, offset + len));
204
+ offset += len;
205
+ }
206
+ return args;
207
+ }
208
+ /** Convert Uint8Array to hex string (for cache keys) */
209
+ function bufToHex(buf) {
210
+ if (buf.length === 0)
211
+ return '';
212
+ const hex = [];
213
+ for (let i = 0; i < buf.length; i++) {
214
+ hex.push(buf[i].toString(16).padStart(2, '0'));
215
+ }
216
+ return hex.join('');
217
+ }
218
+ export default createEastWasm;
219
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var createEastWasmModule=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};if(typeof __filename!="undefined"){_scriptName=__filename}else if(ENVIRONMENT_IS_WORKER){_scriptName=self.location.href}var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var isFileURI=filename=>filename.startsWith("file://");var readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["j"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){return locateFile("east-c.wasm")}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);function __gmtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}var __timegm_js=function(tmPtr){var ret=(()=>{var time=Date.UTC(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var date=new Date(time);HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;return date.getTime()/1e3})();return BigInt(ret)};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.codePointAt(i);if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffset<winterOffset){stringToUTF8(winterName,std_name,17);stringToUTF8(summerName,dst_name,17)}else{stringToUTF8(winterName,dst_name,17);stringToUTF8(summerName,std_name,17)}};var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var printCharBuffers=[null,[],[]];var UTF8Decoder=globalThis.TextDecoder&&new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU32[pnum>>2]=num;return 0};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func(...cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret};var cwrap=(ident,returnType,argTypes,opts)=>{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;function js_platform_call(name,type_params_buf,type_params_len,args_buf,args_len,out_buf,out_len){if(Module.js_platform_call){return Module.js_platform_call(name,type_params_buf,type_params_len,args_buf,args_len,out_buf,out_len)}return 1}var _east_wasm_last_error,_east_wasm_init,_malloc,_east_wasm_register_platform,_free,_east_wasm_compile,_east_wasm_call,_east_wasm_call_with_args,_east_wasm_free,_east_wasm_gc,_east_wasm_malloc,_east_wasm_free_buf,_east_wasm_set_platform_context,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,memory,__indirect_function_table,wasmMemory;function assignWasmExports(wasmExports){_east_wasm_last_error=Module["_east_wasm_last_error"]=wasmExports["k"];_east_wasm_init=Module["_east_wasm_init"]=wasmExports["l"];_malloc=Module["_malloc"]=wasmExports["m"];_east_wasm_register_platform=Module["_east_wasm_register_platform"]=wasmExports["n"];_free=Module["_free"]=wasmExports["o"];_east_wasm_compile=Module["_east_wasm_compile"]=wasmExports["p"];_east_wasm_call=Module["_east_wasm_call"]=wasmExports["q"];_east_wasm_call_with_args=Module["_east_wasm_call_with_args"]=wasmExports["r"];_east_wasm_free=Module["_east_wasm_free"]=wasmExports["s"];_east_wasm_gc=Module["_east_wasm_gc"]=wasmExports["t"];_east_wasm_malloc=Module["_east_wasm_malloc"]=wasmExports["u"];_east_wasm_free_buf=Module["_east_wasm_free_buf"]=wasmExports["v"];_east_wasm_set_platform_context=Module["_east_wasm_set_platform_context"]=wasmExports["w"];__emscripten_stack_restore=wasmExports["x"];__emscripten_stack_alloc=wasmExports["y"];_emscripten_stack_get_current=wasmExports["z"];memory=wasmMemory=wasmExports["i"];__indirect_function_table=wasmExports["__indirect_function_table"]}var wasmImports={c:__gmtime_js,d:__timegm_js,e:__tzset_js,b:_emscripten_resize_heap,f:_environ_get,g:_environ_sizes_get,a:_fd_write,h:js_platform_call};function run(){preRun();function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})}
2
+ ;return moduleRtn}})();if(typeof exports==="object"&&typeof module==="object"){module.exports=createEastWasmModule;module.exports.default=createEastWasmModule}else if(typeof define==="function"&&define["amd"])define([],()=>createEastWasmModule);
Binary file
@@ -0,0 +1 @@
1
+ { "type": "commonjs" }
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@elaraai/east-c-wasm",
3
+ "version": "0.1.1-beta.5",
4
+ "description": "WebAssembly build of east-c for fast East IR execution",
5
+ "main": "dist/src/index.js",
6
+ "types": "dist/src/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/src/index.d.ts",
10
+ "default": "./dist/src/index.js"
11
+ },
12
+ "./east-c.wasm": "./dist/wasm/east-c.wasm"
13
+ },
14
+ "files": [
15
+ "dist/src",
16
+ "dist/wasm",
17
+ "!dist/src/**/*.spec.*",
18
+ "LICENSE.md",
19
+ "CLA.md",
20
+ "CONTRIBUTING.md"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "test": "npm run build && node --enable-source-maps --test 'dist/test/**/*.spec.js'",
25
+ "lint": "eslint .",
26
+ "package": "npm run build && mkdir -p .package && npm pack --pack-destination .package"
27
+ },
28
+ "author": "Elara AI Pty Ltd",
29
+ "license": "SEE LICENSE IN LICENSE",
30
+ "type": "module",
31
+ "engines": {
32
+ "node": ">=22.0.0"
33
+ },
34
+ "devDependencies": {
35
+ "@elaraai/east": "beta",
36
+ "@types/node": "^22.18.1",
37
+ "typescript": "^5.8.3"
38
+ }
39
+ }