Changelog#
The format is based on Keep a Changelog.
[0.0.5] - 2026-09-22#
Changed#
Nested
app.update()calls during an active Kit asyncio tick no longer dispatch any asyncio work, including plain callbacks, worker-thread wakeups and executor-completion callbacks. Synchronous waits such aswhile not future.done(): app.update()inside a task or callback must be migrated toawait; otherwise they can stall indefinitely. Top-level application update loops are unchanged. Seedocs/USAGE_PYTHON.md.Log a warning on the first suppressed nested tick in each outer tick, including with
keep_loop_running=false.
Fixed#
Prevent recursive Kit
run_onceticks when a task or callback callsapp.update(). Keep queued work for the outer tick instead of dropping task wakeups or corrupting its ready-queue iteration. This does not make nested application updates safe for all subsystems; scripts should use asynchronous update waits. Nestedasyncio.run(),loop.run_until_complete()andloop.run_forever()are not protected by this change. In particular, explicit same-loop reentry can still invalidate an outer ready-queue iteration. This is not a general asyncio reentrancy fix or a confirmed fix for NVBug 6783259’s native renderer crash.
[0.0.4] - 2026-09-02#
Added#
OMPE-92066:
maxRunOnceTimeMssetting, an optional soft budget in milliseconds for the time spent spinning the event loop during one update, checked between iterations. Defaults to zero, which keeps spinning until no ready tasks remain.
[0.0.3] - 2025-06-02#
Fixed#
Changes to the async engine’s
runmonkey-patch implementation to handle situations where an exception is thrown inside a separateasyncio.runcall that’s made inside the “top-level”runinvocation.
[0.0.2] - 2025-04-07#
Fixed#
OMPE-28324: Removed an unused argument in a lambda function to avoid creating extra Python objects that just need to be garbage collected later.
[0.0.1] - 2024-07-09#
Changed#
Updated documentation with AI agent.