@remix_labs/machine-starter 2.3101.0-dev → 2.3105.0-dev

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/common.js CHANGED
@@ -5,31 +5,18 @@ import { MixcoreTauri, filterFFINames } from "./mixcore.lib.mjs";
5
5
  let workers = {};
6
6
  let children = {};
7
7
  let ffiLoops = {};
8
- let blobs = {};
9
- let blobsLoops = {};
10
8
 
11
9
  function terminateAll() {
12
10
  console.log("[groovebox-starter] terminate all VMs");
13
11
  for (let [vmID, worker] of Object.entries(workers)) {
14
12
  worker.terminate();
15
13
  };
16
- for (let [vmID, blobs] of Object.entries(blobs)) {
17
- for (let blob_url of blobs) {
18
- console.log("[groovebox-starter] revoke ", blob_url);
19
- URL.revokeObjectURL(blob_url);
20
- }
21
- };
22
14
  for (let ffiLoop of Object.values(ffiLoops)) {
23
15
  ffiLoop.terminate();
24
16
  }
25
- for (let blobsLoop of Object.values(blobsLoops)) {
26
- blobsLoop.terminate();
27
- }
28
17
  workers = {};
29
18
  children = {};
30
19
  ffiLoops = {};
31
- blobs = {};
32
- blobsLoops = {};
33
20
  }
34
21
 
35
22
  function terminateVM(vmID) {
@@ -37,20 +24,12 @@ function terminateVM(vmID) {
37
24
  let worker = workers[vmID];
38
25
  if (worker) {
39
26
  let vmChildren = children[vmID];
40
- let blobList = blobs[vmID] || [];
41
27
  let ffiLoop = ffiLoops[vmID];
42
- let blobsLoop = blobsLoops[vmID];
43
28
  delete workers[vmID];
44
29
  delete children[vmID];
45
30
  delete ffiLoops[vmID];
46
- delete blobsLoops[vmID];
47
31
  worker.terminate();
48
32
  ffiLoop.terminate();
49
- blobsLoop.terminate();
50
- for (let blob_url of blobList) {
51
- console.log("[groovebox-starter] revoke ", blob_url);
52
- URL.revokeObjectURL(blob_url);
53
- };
54
33
  if (vmChildren) {
55
34
  for (let subID of vmChildren) {
56
35
  terminateVM(subID)
@@ -122,7 +101,6 @@ async function StartWASM2(hub, config) {
122
101
  localFFIkind["$vm_stop"] = vm_kind;
123
102
  localFFIfuns["$vm_stop"] = ffi_vm_stop;
124
103
  ffiLoops[config.vmID] = setupLocalFFIs(hub, config, localFFIfuns);
125
- blobsLoops[config.vmID] = setupBlobs(hub, config);
126
104
  let config_msg =
127
105
  { "_rmx_type": "msg_vm_configure",
128
106
  "baseURL": config.baseURL,
@@ -344,35 +322,6 @@ async function localFFIsMessageLoop(hub, config, localFFIs, terminate) {
344
322
  }
345
323
  }
346
324
 
347
- function setupBlobs(hub, config) {
348
- let vmID = config.vmID;
349
- let terminate = Promise.withResolvers();
350
- blobsMessageLoop(hub, config, terminate.promise); // don't wait
351
- return {terminate: terminate.resolve};
352
- }
353
- async function blobsMessageLoop(hub, config, terminate) {
354
- let vmID = config.vmID;
355
- let channel = await hub.newChannel();
356
- let comm = new FFIComm(vmID, hub, channel);
357
- let sub = await channel.subscribe("/local/" + vmID + "/blobs");
358
- while (true) {
359
- let {msg, terminated} = await Promise.race([
360
- sub.next().then((msg) => ({msg})),
361
- terminate.then(() => ({terminated: true})),
362
- ]);
363
- if (terminated) {
364
- console.log("[groovebox-starter] terminate blobs loop", vmID);
365
- return;
366
- }
367
- let name = msg.payload.name;
368
- let url = msg.payload.url;
369
- let blobList = blobs[vmID];
370
- if (!blobList) blobList = [];
371
- blobList.push(url);
372
- blobs[vmID] = blobList;
373
- }
374
- }
375
-
376
325
  class FFIComm {
377
326
  constructor(vmID, hub, channel) {
378
327
  this.vmID = vmID;
@@ -1,2 +1,2 @@
1
- var GROOVEBOX_BUILD = "3451";
1
+ var GROOVEBOX_BUILD = "3455";
2
2
  export { GROOVEBOX_BUILD }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remix_labs/machine-starter",
3
- "version": "2.3101.0-dev",
3
+ "version": "2.3105.0-dev",
4
4
  "description": "start the groove",
5
5
  "main": "node.js",
6
6
  "browser": "index.js",
@@ -11,7 +11,7 @@
11
11
  "author": "Remixlabs staff",
12
12
  "license": "ISC",
13
13
  "dependencies": {
14
- "@remix_labs/hub-client": "2.3101.0-dev",
14
+ "@remix_labs/hub-client": "2.3105.0-dev",
15
15
  "nanoid": "^5.0.2",
16
16
  "web-worker": "^1.2.0"
17
17
  },
package/start.js CHANGED
@@ -1,16 +1,6 @@
1
1
  import Process from "process";
2
2
  import { StartWASM2, Hub } from "./node.js";
3
- import { MixcoreWasm, MixcoreWasmApi } from "./mixcore.lib.mjs";
4
- import { mixcoreWasmCode } from './mixcore-wasm.js';
5
- import { WASI, OpenFile, File, Directory, PreopenDirectory, ConsoleStdout } from "@bjorn3/browser_wasi_shim";
6
- function importCode(base64) {
7
- let binstr = atob(base64);
8
- let code = new Uint8Array(binstr.length);
9
- for (let i = 0; i < binstr.length; i++)
10
- code[i] = binstr.charCodeAt(i);
11
- return code;
12
- }
13
- let mixcoreWasm = importCode(mixcoreWasmCode);
3
+ import { mixcoreWasmBase64, mixcoreJsBase64 } from './mixcore-wasm.js';
14
4
 
15
5
  if (Process.stdout._handle)
16
6
  Process.stdout._handle.setBlocking(true);
@@ -42,46 +32,43 @@ let noOutputViaMQTT = Process.env["MIX_MQTT_NO_OUTPUT"] !== undefined;
42
32
  console.log("Machine params: variant=" + variant + " baseURL=" + baseURL, " mqttURL=" + mqttURL, " mqttUser=" + mqttUser, " mqttToken=" + mqttToken, " id=" + id, " noOutputViaMQTT=" + noOutputViaMQTT);
43
33
  let w = new Hub.Worker();
44
34
  globalThis.GROOVEBOX_ALLOW_INSECURE_HTTP = true;
45
-
46
- let DB_DIR = "db";
47
- let wasi = new WASI([], [], [
48
- new OpenFile(new File([])),
49
- ConsoleStdout.lineBuffered(msg => console.log(`[WASI stdout] ${msg}`)),
50
- ConsoleStdout.lineBuffered(msg => console.warn(`[WASI stderr] ${msg}`)),
51
- new PreopenDirectory(".", new Map([[DB_DIR, new Directory(new Map())]]))
52
- ]);
53
- MixcoreWasmApi.create(mixcoreWasm, wasi).then(mixcoreWasmApi => {
54
- let mixcore = MixcoreWasm.create(DB_DIR, "compiler-testing", "test@user", mixcoreWasmApi);
55
- let mixcoreConfig = { kind: "mixcore", mixcore };
56
- w.configure({wsURL: mqttURL, user:mqttUser, token:mqttToken}).then(resp => {
57
- if (variant == "BYTE") variant = "QCODE";
58
- switch(variant) {
59
- case "WASM":
60
- case "WAT":
61
- case "QCODE":
62
- let startVM = (_ => {
63
- MixSetMask(64 + 256 + 512 + 1024);
64
- StartWASM2(w, {
65
- baseURL: baseURL,
66
- org: "local",
67
- workspace: "local",
68
- vmID: id,
69
- user: mqttUser,
70
- token: mqttToken,
71
- noOutputViaMQTT: noOutputViaMQTT,
72
- machType: variant,
73
- localFFIs: {},
74
- mixcore: mixcoreConfig,
75
- });
35
+ let mixcore = {
36
+ kind: "wasm-opfs",
37
+ mixcoreWasmUrl: "data:application/wasm;base64," + mixcoreWasmBase64,
38
+ mixcoreJsUrl: "data:text/javascript;charset=utf-8;base64," + mixcoreJsBase64,
39
+ dbDir: "/databases",
40
+ dbUser: "test@user",
41
+ dbName: "compiler-testing",
42
+ createDbs: ["compiler-testing"],
43
+ };
44
+ w.configure({wsURL: mqttURL, user:mqttUser, token:mqttToken}).then(resp => {
45
+ if (variant == "BYTE") variant = "QCODE";
46
+ switch(variant) {
47
+ case "WASM":
48
+ case "WAT":
49
+ case "QCODE":
50
+ let startVM = (_ => {
51
+ MixSetMask(64 + 256 + 512 + 1024);
52
+ StartWASM2(w, {
53
+ baseURL: baseURL,
54
+ org: "local",
55
+ workspace: "local",
56
+ vmID: id,
57
+ user: mqttUser,
58
+ token: mqttToken,
59
+ noOutputViaMQTT: noOutputViaMQTT,
60
+ machType: variant,
61
+ localFFIs: {},
62
+ mixcore,
76
63
  });
77
- if (globalThis.EnableAndStartMixCompiler) {
78
- EnableAndStartMixCompiler(w).then(startVM);
79
- } else {
80
- startVM()
81
- };
82
- break
83
- default:
84
- throw(new Error("unknown MIX_MACHINE_VARIANT: " + variant))
85
- }
86
- })
64
+ });
65
+ if (globalThis.EnableAndStartMixCompiler) {
66
+ EnableAndStartMixCompiler(w).then(startVM);
67
+ } else {
68
+ startVM()
69
+ };
70
+ break
71
+ default:
72
+ throw(new Error("unknown MIX_MACHINE_VARIANT: " + variant))
73
+ }
87
74
  });