--- model: claude-fable-5 service: claude session: b6b42e23-0454-4d9b-be1c-0a89d65aed1b timestamp: 2026-07-02T15:56:26Z git_ref: 65bf9df5 scope: code substantive: true raw_file: 20260702T155626Z_65bf9df5_prompt_io.raw.md --- ## Prompt From `ai/prompt-io/prompts/issue_470.md`: > attempt to resolve > https://github.com/goodboy/tractor/issues/470 > do it with /open-wkt, ensure you /run-tests on all > changes (plus a hard pause-for-human-review deadline of 12:50PM EST.) Issue #470 asks to trim the ~0.42s `import tractor` cost — which dominates per-actor spawn latency on the `trio` backend — by lazy-importing heavy/optional deps (`pdbp`, `stackscope`, `multiaddr`, + audit of `colorlog`/`bidict`/`wrapt`/`setproctitle`). ## Response summary Profiling showed the issue's dep-list only accounted for ~20ms; the dominant cost (~244ms) was `log.get_logger()`'s `get_caller_mod()` calling `inspect.stack()` at module level in ~39 modules — each call walks every stack frame (deep during nested imports) and scans `sys.modules` per frame via `inspect.getmodule()`. Changes, in impact order: 1. `get_caller_mod()` -> `sys._getframe()` + `f_globals['__name__']` `sys.modules` lookup (~240ms saved). 2. Issue's lazy-import checklist: `bidict`, `multiaddr`, `colorlog`, `wrapt` moved to `TYPE_CHECKING`/function-local imports; `platformdirs` function-local; `asyncio` + `.to_asyncio` deferred out of the `devx.debug` + `spawn._entry` eager paths (~15ms saved). 3. PEP 562 `__getattr__` on `tractor/__init__.py` preserving public `tractor.to_asyncio` attr access. Results: `import tractor` 0.42s -> ~0.145s (~65%); sequential `start_actor` latency 0.40-0.44s -> ~0.179s/actor. `pdbp` (needs `_repl.py` class-base restructure) + `platformdirs` (needs `UDSAddress.def_bindspace` protocol rework) documented as follow-ups. ## Files changed - `tractor/log.py` — `get_caller_mod()` perf fix + lazy `colorlog` - `tractor/__init__.py` — PEP 562 lazy `to_asyncio` - `tractor/discovery/_addr.py` — `bidict` -> `TYPE_CHECKING` - `tractor/discovery/_multiaddr.py` — lazy `multiaddr` - `tractor/ipc/_tcp.py`, `tractor/ipc/_uds.py` — `Multiaddr` -> `TYPE_CHECKING` - `tractor/runtime/_state.py` — lazy `platformdirs` - `tractor/devx/_frame_stack.py` — lazy `pdbp` + `wrapt` - `tractor/devx/debug/_trace.py`, `tractor/devx/debug/_tty_lock.py` — lazy `asyncio` + `.to_asyncio` - `tractor/spawn/_entry.py` — lazy `run_as_asyncio_guest` ## Human edits None yet — pending user review at the 12:50PM EST pause gate (test-suite results reported in-session).