Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/index.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/index.js.map

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion esm/interpreter/micropython.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import fetch from '@webreflection/fetch';
import { createProgress, writeFile } from './_utils.js';
import { getFormat, loader, loadProgress, registerJSModule, run, runAsync, runEvent } from './_python.js';
import { stdio, buffered } from './_io.js';
import { absoluteURL, fixedRelative } from '../utils.js';
import { absoluteURL, fixedRelative, js_modules } from '../utils.js';
import mip from '../python/mip.js';
import { zip } from '../3rd-party.js';

Expand Down Expand Up @@ -37,6 +37,7 @@ export default {
url = url.replace(/\.m?js$/, '.wasm');
progress('Loading MicroPython');
const interpreter = await get(loadMicroPython({ linebuffer: false, stderr, stdout, url }));
globalThis[js_modules].set('-T-', this.transform.bind(this, interpreter));
const py_imports = importPackages.bind(this, interpreter, baseURL);
loader.set(interpreter, py_imports);
await loadProgress(this, progress, interpreter, config, baseURL);
Expand Down
3 changes: 2 additions & 1 deletion esm/interpreter/pyodide.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createProgress, writeFile } from './_utils.js';
import { getFormat, loader, loadProgress, registerJSModule, run, runAsync, runEvent } from './_python.js';
import { stdio } from './_io.js';
import { IDBMapSync, isArray, fixedRelative } from '../utils.js';
import { IDBMapSync, isArray, fixedRelative, js_modules } from '../utils.js';

const type = 'pyodide';
const toJsOptions = { dict_converter: Object.fromEntries };
Expand Down Expand Up @@ -124,6 +124,7 @@ export default {
const interpreter = await get(
loadPyodide({ stderr, stdout, ...options }),
);
globalThis[js_modules].set('-T-', this.transform.bind(this, interpreter));
if (config.debug) interpreter.setDebug(true);
const py_imports = importPackages.bind(interpreter);
if (index_urls) indexURLs.set(interpreter, index_urls);
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,6 @@
"to-json-callback": "^0.1.1"
},
"worker": {
"blob": "sha256-9Jm1+L4Uur4gkfKpJGU+YQkR+/qFKhZtxE3UMQEjUbw="
"blob": "sha256-793NDYXZ46XOi7y/2zZMFwpOtxJESk/tvuGnDaYZotI="
}
}
4 changes: 3 additions & 1 deletion rollup/build_xworker.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ const PACKAGE_JSON = resolve(join(__dirname, "..", "package.json"));

const coincident = [
"import coincident from 'coincident/window/main';",
'const { Worker } = coincident({ transfer: false });',
"const js_modules = Symbol.for('polyscript.js_modules');",
"let transform;",
'const { Worker } = coincident({ transfer: false, transform: value => (transform || (transform = globalThis[js_modules]?.get("-T-")))?.(value) ?? value });',
];

for (const file of readdirSync(DIST_DIR)) {
Expand Down
23 changes: 23 additions & 0 deletions test/worker/sync.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<title>python workers</title>
<script type="module">
import "/dist/index.js";
</script>
</head>
<body>
<script type="micropython">
from polyscript import XWorker

def handle_data(data):
print("main", data)
return (1, 2, 3)

w = XWorker('./sync.py', type='pyodide')
w.sync.data = handle_data
</script>
</body>
</html>
3 changes: 3 additions & 0 deletions test/worker/sync.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from polyscript import xworker

print("worker", xworker.sync.data(memoryview(b"hello")))