Examples on the new multimer; the REPL proofs and the timing benchmarks - #149
Merged
Merged
Conversation
app.every() loses async_=; from multimer import auto as timer becomes import multimer; lv_test_timer reports the wake source instead of a mode. tools/prove_repl proves the REPL goal on a pty for CPython, MicroPython and (with multimer.repl()) CircuitPython, plus a Jupyter kernel and the direct wasm build under node. The kit's PYDEVICES_TIMER_ASYNC split is retired.
…esign doc, with the cloud session's raw results
This was referenced Sep 26, 2026
… are kept; bench lateness on multimer's clock CreateProcess duplicates a parent's redirected std handles into the child unless STARTF_USESTDHANDLES is set, so a child launched from a WSL shell never saw the pseudo console; with the flag and null handles it does, as node-pty does. The console keeps a program's last lines in its pipe until it is closed, so wait() now closes and drains before the transcript is read, or keepalive and crash checks fail on a truncated transcript with the right exit code. bench_timer measures lateness on multimer's own clock: time.ticks_ms and multimer.ticks_ms need not share a base (they do not on the windows port).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every example on the new
multimerAPI (notimer_async, noAsyncTimer,from multimer import auto as timerbecomesimport multimer),lv_timer_test_kit.pywith one mode, andprove_hostloopon the one-timer model. New undertools/:prove_repl/: the REPL goal as a check that can fail.prove.pyruns each interpreter's-ion a real pty, types statements, and checks the tick count grew andreport()answered;--planted-fault(no wake source, input hook off) must fail.prove_jupyter.pyandwasm_host.mjsdo the same where there is no prompt.prove_windows.pyruns the same three checks under a Windows pseudo console (ConPTY), where the REPL goal onpython.exeandmicropython.exeis decided.timing_bench/:bench_timer.py(jitter, callback latency, CPU, idle and busy main thread) andlv_pace.py(frame pacing), old layer against new, same script, with the raw.jsonlresults behind the design doc's tables.Needs PyDevices/pydevices#101 (and PyDevices/lvgl-bindings#22 for the LVGL examples). Design: docs/timing-design.md in pydevices. Companion: PyDevices/micropython-pydevices#24. Draft until the hardware phases are in the ledger.