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 assets/apps/signal_gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
# hero-runtime.js already sets these to 480x480 in production; set them here
# too so this square-canvas app also renders correctly under bin/wasm.py's
# generic (default 320x480) local test harness.
from displaydev import env_set
from boarddev import env_set

env_set("PYDEVICES_WIDTH", "480")
env_set("PYDEVICES_HEIGHT", "480")
Expand Down
2 changes: 1 addition & 1 deletion assets/apps/watch.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import lvgl as lv
from board_config import display_drv
from display_driver import app
from displaydev import env_int
from boarddev import env_int

# MicroPython's time.localtime() has no timezone support — it's always UTC.
# hero-runtime.js sets this from the browser's Date.getTimezoneOffset() (same
Expand Down
2 changes: 1 addition & 1 deletion assets/chrome/docs-runtime.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ os.chdir("/")
const source = JSON.stringify(editor.value);
const canvasId = JSON.stringify(canvas.id);
await mp.runPythonAsync(`
from displaydev import env_set
from boarddev import env_set
env_set("PYDEVICES_CANVAS_ID", ${canvasId})
CANVAS_ID = ${canvasId}
_source = ${source}
Expand Down
2 changes: 1 addition & 1 deletion assets/chrome/hero-runtime.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ if "/" not in sys.path: sys.path.insert(0, "/")
os.chdir("/")
# The PyDevices stack and the desktop board_config are frozen into the
# runtime; nothing is installed. A runtime without them fails right here.
from displaydev import env_set
from boarddev import env_set
env_set("PYDEVICES_CANVAS_ID", ${JSON.stringify(canvasId)})
env_set("PYDEVICES_WIDTH", ${JSON.stringify(String(canvasWidth))})
env_set("PYDEVICES_HEIGHT", ${JSON.stringify(String(canvasHeight))})
Expand Down
54 changes: 27 additions & 27 deletions vendor/micropython/micropython.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5822,9 +5822,9 @@ function js_then_continue(jsref,py_resume,resolve,reject,out) { const py_resume_
function create_promise(out_set,out_promise) { const out_set_js = proxy_convert_mp_to_js_obj_jsside(out_set); const promise = new Promise(out_set_js); proxy_convert_js_to_mp_obj_jsside(promise, out_promise); }

// Imports from the Wasm binary.
var _pydevices_timer_dispatch = Module['_pydevices_timer_dispatch'] = makeInvalidEarlyAccess('_pydevices_timer_dispatch');
var _free = Module['_free'] = makeInvalidEarlyAccess('_free');
var _malloc = Module['_malloc'] = makeInvalidEarlyAccess('_malloc');
var _free = Module['_free'] = makeInvalidEarlyAccess('_free');
var _pydevices_timer_dispatch = Module['_pydevices_timer_dispatch'] = makeInvalidEarlyAccess('_pydevices_timer_dispatch');
var _mp_sched_keyboard_interrupt = Module['_mp_sched_keyboard_interrupt'] = makeInvalidEarlyAccess('_mp_sched_keyboard_interrupt');
var _mp_js_init = Module['_mp_js_init'] = makeInvalidEarlyAccess('_mp_js_init');
var _mp_js_deinit = Module['_mp_js_deinit'] = makeInvalidEarlyAccess('_mp_js_deinit');
Expand Down Expand Up @@ -5869,7 +5869,6 @@ var dynCall_viii = makeInvalidEarlyAccess('dynCall_viii');
var dynCall_iiiiii = makeInvalidEarlyAccess('dynCall_iiiiii');
var dynCall_di = makeInvalidEarlyAccess('dynCall_di');
var dynCall_v = makeInvalidEarlyAccess('dynCall_v');
var dynCall_viiiiii = makeInvalidEarlyAccess('dynCall_viiiiii');
var dynCall_vii = makeInvalidEarlyAccess('dynCall_vii');
var dynCall_viiii = makeInvalidEarlyAccess('dynCall_viiii');
var dynCall_jji = makeInvalidEarlyAccess('dynCall_jji');
Expand All @@ -5878,6 +5877,7 @@ var dynCall_viiiiiii = makeInvalidEarlyAccess('dynCall_viiiiiii');
var dynCall_viiiffiii = makeInvalidEarlyAccess('dynCall_viiiffiii');
var dynCall_viiiiiiii = makeInvalidEarlyAccess('dynCall_viiiiiiii');
var dynCall_viiiiiiiii = makeInvalidEarlyAccess('dynCall_viiiiiiiii');
var dynCall_viiiiii = makeInvalidEarlyAccess('dynCall_viiiiii');
var dynCall_viiif = makeInvalidEarlyAccess('dynCall_viiif');
var dynCall_vif = makeInvalidEarlyAccess('dynCall_vif');
var dynCall_viff = makeInvalidEarlyAccess('dynCall_viff');
Expand All @@ -5898,9 +5898,9 @@ var wasmMemory = makeInvalidEarlyAccess('wasmMemory');
var wasmTable = makeInvalidEarlyAccess('wasmTable');

function assignWasmExports(wasmExports) {
assert(typeof wasmExports['pydevices_timer_dispatch'] != 'undefined', 'missing Wasm export: pydevices_timer_dispatch');
assert(typeof wasmExports['free'] != 'undefined', 'missing Wasm export: free');
assert(typeof wasmExports['malloc'] != 'undefined', 'missing Wasm export: malloc');
assert(typeof wasmExports['free'] != 'undefined', 'missing Wasm export: free');
assert(typeof wasmExports['pydevices_timer_dispatch'] != 'undefined', 'missing Wasm export: pydevices_timer_dispatch');
assert(typeof wasmExports['mp_sched_keyboard_interrupt'] != 'undefined', 'missing Wasm export: mp_sched_keyboard_interrupt');
assert(typeof wasmExports['mp_js_init'] != 'undefined', 'missing Wasm export: mp_js_init');
assert(typeof wasmExports['mp_js_deinit'] != 'undefined', 'missing Wasm export: mp_js_deinit');
Expand Down Expand Up @@ -5945,7 +5945,6 @@ function assignWasmExports(wasmExports) {
assert(typeof wasmExports['dynCall_iiiiii'] != 'undefined', 'missing Wasm export: dynCall_iiiiii');
assert(typeof wasmExports['dynCall_di'] != 'undefined', 'missing Wasm export: dynCall_di');
assert(typeof wasmExports['dynCall_v'] != 'undefined', 'missing Wasm export: dynCall_v');
assert(typeof wasmExports['dynCall_viiiiii'] != 'undefined', 'missing Wasm export: dynCall_viiiiii');
assert(typeof wasmExports['dynCall_vii'] != 'undefined', 'missing Wasm export: dynCall_vii');
assert(typeof wasmExports['dynCall_viiii'] != 'undefined', 'missing Wasm export: dynCall_viiii');
assert(typeof wasmExports['dynCall_jji'] != 'undefined', 'missing Wasm export: dynCall_jji');
Expand All @@ -5954,6 +5953,7 @@ function assignWasmExports(wasmExports) {
assert(typeof wasmExports['dynCall_viiiffiii'] != 'undefined', 'missing Wasm export: dynCall_viiiffiii');
assert(typeof wasmExports['dynCall_viiiiiiii'] != 'undefined', 'missing Wasm export: dynCall_viiiiiiii');
assert(typeof wasmExports['dynCall_viiiiiiiii'] != 'undefined', 'missing Wasm export: dynCall_viiiiiiiii');
assert(typeof wasmExports['dynCall_viiiiii'] != 'undefined', 'missing Wasm export: dynCall_viiiiii');
assert(typeof wasmExports['dynCall_viiif'] != 'undefined', 'missing Wasm export: dynCall_viiif');
assert(typeof wasmExports['dynCall_vif'] != 'undefined', 'missing Wasm export: dynCall_vif');
assert(typeof wasmExports['dynCall_viff'] != 'undefined', 'missing Wasm export: dynCall_viff');
Expand All @@ -5970,9 +5970,9 @@ function assignWasmExports(wasmExports) {
assert(typeof wasmExports['asyncify_stop_rewind'] != 'undefined', 'missing Wasm export: asyncify_stop_rewind');
assert(typeof wasmExports['memory'] != 'undefined', 'missing Wasm export: memory');
assert(typeof wasmExports['__indirect_function_table'] != 'undefined', 'missing Wasm export: __indirect_function_table');
_pydevices_timer_dispatch = Module['_pydevices_timer_dispatch'] = createExportWrapper('pydevices_timer_dispatch', 1);
_free = Module['_free'] = createExportWrapper('free', 1);
_malloc = Module['_malloc'] = createExportWrapper('malloc', 1);
_free = Module['_free'] = createExportWrapper('free', 1);
_pydevices_timer_dispatch = Module['_pydevices_timer_dispatch'] = createExportWrapper('pydevices_timer_dispatch', 1);
_mp_sched_keyboard_interrupt = Module['_mp_sched_keyboard_interrupt'] = createExportWrapper('mp_sched_keyboard_interrupt', 0);
_mp_js_init = Module['_mp_js_init'] = createExportWrapper('mp_js_init', 2);
_mp_js_deinit = Module['_mp_js_deinit'] = createExportWrapper('mp_js_deinit', 0);
Expand Down Expand Up @@ -6017,7 +6017,6 @@ function assignWasmExports(wasmExports) {
dynCall_iiiiii = dynCalls['iiiiii'] = createExportWrapper('dynCall_iiiiii', 6);
dynCall_di = dynCalls['di'] = createExportWrapper('dynCall_di', 2);
dynCall_v = dynCalls['v'] = createExportWrapper('dynCall_v', 1);
dynCall_viiiiii = dynCalls['viiiiii'] = createExportWrapper('dynCall_viiiiii', 7);
dynCall_vii = dynCalls['vii'] = createExportWrapper('dynCall_vii', 3);
dynCall_viiii = dynCalls['viiii'] = createExportWrapper('dynCall_viiii', 5);
dynCall_jji = dynCalls['jji'] = createExportWrapper('dynCall_jji', 3);
Expand All @@ -6026,6 +6025,7 @@ function assignWasmExports(wasmExports) {
dynCall_viiiffiii = dynCalls['viiiffiii'] = createExportWrapper('dynCall_viiiffiii', 9);
dynCall_viiiiiiii = dynCalls['viiiiiiii'] = createExportWrapper('dynCall_viiiiiiii', 9);
dynCall_viiiiiiiii = dynCalls['viiiiiiiii'] = createExportWrapper('dynCall_viiiiiiiii', 10);
dynCall_viiiiii = dynCalls['viiiiii'] = createExportWrapper('dynCall_viiiiii', 7);
dynCall_viiif = dynCalls['viiif'] = createExportWrapper('dynCall_viiif', 5);
dynCall_vif = dynCalls['vif'] = createExportWrapper('dynCall_vif', 3);
dynCall_viff = dynCalls['viff'] = createExportWrapper('dynCall_viff', 4);
Expand Down Expand Up @@ -6220,98 +6220,98 @@ function invoke_ii(index,a1) {
}
}

function invoke_iiii(index,a1,a2,a3) {
function invoke_iiiii(index,a1,a2,a3,a4) {
var sp = stackSave();
try {
return dynCall_iiii(index,a1,a2,a3);
return dynCall_iiiii(index,a1,a2,a3,a4);
} catch(e) {
stackRestore(sp);
if (!(e instanceof EmscriptenEH)) throw e;
_setThrew(1, 0);
}
}

function invoke_vi(index,a1) {
function invoke_v(index) {
var sp = stackSave();
try {
dynCall_vi(index,a1);
dynCall_v(index);
} catch(e) {
stackRestore(sp);
if (!(e instanceof EmscriptenEH)) throw e;
_setThrew(1, 0);
}
}

function invoke_iiiiii(index,a1,a2,a3,a4,a5) {
function invoke_vii(index,a1,a2) {
var sp = stackSave();
try {
return dynCall_iiiiii(index,a1,a2,a3,a4,a5);
dynCall_vii(index,a1,a2);
} catch(e) {
stackRestore(sp);
if (!(e instanceof EmscriptenEH)) throw e;
_setThrew(1, 0);
}
}

function invoke_v(index) {
function invoke_iiii(index,a1,a2,a3) {
var sp = stackSave();
try {
dynCall_v(index);
return dynCall_iiii(index,a1,a2,a3);
} catch(e) {
stackRestore(sp);
if (!(e instanceof EmscriptenEH)) throw e;
_setThrew(1, 0);
}
}

function invoke_iii(index,a1,a2) {
function invoke_viii(index,a1,a2,a3) {
var sp = stackSave();
try {
return dynCall_iii(index,a1,a2);
dynCall_viii(index,a1,a2,a3);
} catch(e) {
stackRestore(sp);
if (!(e instanceof EmscriptenEH)) throw e;
_setThrew(1, 0);
}
}

function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {
function invoke_vi(index,a1) {
var sp = stackSave();
try {
dynCall_viiiiii(index,a1,a2,a3,a4,a5,a6);
dynCall_vi(index,a1);
} catch(e) {
stackRestore(sp);
if (!(e instanceof EmscriptenEH)) throw e;
_setThrew(1, 0);
}
}

function invoke_viii(index,a1,a2,a3) {
function invoke_iiiiii(index,a1,a2,a3,a4,a5) {
var sp = stackSave();
try {
dynCall_viii(index,a1,a2,a3);
return dynCall_iiiiii(index,a1,a2,a3,a4,a5);
} catch(e) {
stackRestore(sp);
if (!(e instanceof EmscriptenEH)) throw e;
_setThrew(1, 0);
}
}

function invoke_iiiii(index,a1,a2,a3,a4) {
function invoke_iii(index,a1,a2) {
var sp = stackSave();
try {
return dynCall_iiiii(index,a1,a2,a3,a4);
return dynCall_iii(index,a1,a2);
} catch(e) {
stackRestore(sp);
if (!(e instanceof EmscriptenEH)) throw e;
_setThrew(1, 0);
}
}

function invoke_vii(index,a1,a2) {
function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {
var sp = stackSave();
try {
dynCall_vii(index,a1,a2);
dynCall_viiiiii(index,a1,a2,a3,a4,a5,a6);
} catch(e) {
stackRestore(sp);
if (!(e instanceof EmscriptenEH)) throw e;
Expand Down
Binary file modified vendor/micropython/micropython.wasm
Binary file not shown.
85 changes: 45 additions & 40 deletions vendor/micropython/micropython.wasm.provenance
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"binary": {
"mtime": "2026-10-05T17:03:35-05:00",
"mtime": "2026-10-08T04:29:32-05:00",
"name": "micropython.wasm",
"sha256": "4cc43ae8a82e709e3bfbc56272bab1396ea73e0c5b433bd93d39e49e9993bb39",
"size": 6714453
"sha256": "8318c76c2d21453fe48323363bbc40e5fdd0928a6837e42036863dbf21d86faf",
"size": 6826651
},
"format": 1,
"install_only": false,
Expand All @@ -24,87 +24,92 @@
"0014-micropython-esp32-tinyusb-0.21.patch",
"0015-micropython-windows-timing-module-and-idle-console.patch",
"0016-micropython-esp32-machine-timer-fire-during-reinit.patch",
"0017-micropython-py-makeqstrdefs-incremental-build-header-qstr.patch"
"0017-micropython-py-makeqstrdefs-incremental-build-header-qstr.patch",
"0018-micropython-esp32-drop-missing-usermod-include-dirs.patch",
"0019-micropython-tools-makemanifest-c-modules-forward-slashes.patch",
"0020-micropython-py-mkrules-qstr-response-file-on-windows.patch",
"0021-micropython-tools-makemanifest-mpy-tool-response-file-on-windows.patch",
"0022-micropython-py-mkrules-link-response-file-on-windows.patch"
],
"sources": {
"audiodsp": {
"committed": "2026-10-05T15:26:05-05:00",
"describe": "v0.0.3-309-g79616ba",
"committed": "2026-10-08T04:19:08-05:00",
"describe": "v0.0.3-322-g1b56554",
"dirty": false,
"head": "79616bae165b63069ccecc6d335c00ca334b193c",
"path": "/home/brad/gh/pydevices/audiodsp"
"head": "1b56554e65dc340ffd4ebefecfd5fa4d3e73b6c6",
"path": "audiodsp"
},
"audioif": {
"committed": "2026-10-05T16:59:29-05:00",
"describe": "v0.1.1-1-gb6b35a4",
"dirty": false,
"head": "b6b35a48a0cd23ddc549f8c0643d77ffe778da28",
"path": "/home/brad/gh/pydevices/audioif"
"path": "audioif"
},
"cameraif": {
"committed": "2026-09-23T20:35:43-05:00",
"describe": "8c0244f",
"committed": "2026-10-08T04:18:36-05:00",
"describe": "028be76",
"dirty": false,
"head": "8c0244fed64d42a2dcb6616d1c37d7426de24315",
"path": "/home/brad/gh/pydevices/cameraif"
"head": "028be768197d7f40b918e61dc6ae048da8fb5e1d",
"path": "cameraif"
},
"circuitpython": {
"committed": "2026-08-28T15:55:13-04:00",
"describe": "v1.25.0-24997-gd897c15-dirty",
"dirty": true,
"head": "d897c15f24b2a6de6529f138aed4705327020dab",
"path": "/home/brad/gh/pydevices/circuitpython"
"path": "circuitpython"
},
"displayif": {
"committed": "2026-10-05T15:58:30-05:00",
"describe": "370dad6",
"committed": "2026-10-08T03:19:01-05:00",
"describe": "38acfed",
"dirty": false,
"head": "370dad6fb7119ed80a35d782302d4ae52a0f50c5",
"path": "/home/brad/gh/pydevices/displayif"
"head": "38acfed2c41d84a8facefb004d361b5880e8d996",
"path": "displayif"
},
"lvgl-circuitpython": {
"committed": "2026-09-26T18:07:40-05:00",
"describe": "caaf6dc",
"dirty": false,
"head": "caaf6dc8e3c5975fe61488814a9176bcd2cf138f",
"path": "/home/brad/gh/pydevices/lvgl-circuitpython"
"path": "lvgl-circuitpython"
},
"lvgl-micropython": {
"committed": "2026-10-05T16:59:29-05:00",
"describe": "821fc45",
"committed": "2026-10-07T17:14:08-05:00",
"describe": "04d0f77",
"dirty": false,
"head": "821fc459e6210cf0ee441fc9a65a13a223ab8d84",
"path": "/home/brad/gh/pydevices/lvgl-micropython"
"head": "04d0f77943d3935f9f0906c6a2a5465e79abdfc2",
"path": "lvgl-micropython"
},
"micropython": {
"committed": "2026-10-05T16:10:55-05:00",
"describe": "v1.29.0-1-g8a22473",
"committed": "2026-10-08T04:04:37-05:00",
"describe": "v1.29.0-1-gc0eeee0",
"dirty": false,
"head": "8a224736515fca0ef6288059fa9635560858d5a5",
"path": "/home/brad/gh/pydevices/micropython"
"head": "c0eeee029e20230a68488df34589565d6f7e90b5",
"path": "micropython"
},
"micropython-pydevices": {
"committed": "2026-10-05T16:59:10-05:00",
"describe": "3fa0688",
"committed": "2026-10-08T04:21:52-05:00",
"describe": "59cb3bd",
"dirty": false,
"head": "3fa068873cb135566356386d2810ed0e86a6758e",
"path": "/home/brad/gh/pydevices/micropython-pydevices"
"head": "59cb3bd346028fc531ce5d9d4b5e0d0b245c35be",
"path": "micropython-pydevices"
},
"pygraphics": {
"committed": "2026-09-26T19:35:02-05:00",
"describe": "v0.0.32-86-gb4d4c49",
"committed": "2026-10-08T03:15:51-05:00",
"describe": "v0.0.32-94-g4fb4d8b",
"dirty": false,
"head": "b4d4c49cc2a22cdd2632f2eea2593b4cc4df4db1",
"path": "/home/brad/gh/pydevices/pygraphics"
"head": "4fb4d8b5f1ca3ef4d35c7665ed8e9300930c6297",
"path": "pygraphics"
},
"usbif": {
"committed": "2026-09-26T17:28:03-05:00",
"describe": "4c01722",
"committed": "2026-10-07T23:07:45-05:00",
"describe": "4ddddfb",
"dirty": false,
"head": "4c01722e9e0474697dcb2734fb0953bb3019e99c",
"path": "/home/brad/gh/pydevices/usbif"
"head": "4ddddfb67a6c2229bc39d3c2ca243b26f466bae1",
"path": "usbif"
}
},
"stamped": "2026-10-05T17:03:35-05:00",
"stamped": "2026-10-08T04:29:33-05:00",
"target": "mp-wasm"
}