release: 0.23.1 (deferred-queue spin and two related defects) - #84
Merged
Conversation
Bumps __version__ to 0.23.1, promotes Unreleased to [0.23.1], adds the tag link definition. #82 resolve_deferred() spun forever when the device a deferred spec was waiting for had already been built by an equal-but-distinct DeviceSpec. My regression: 0.23.0 moved add()'s bookkeeping to the resolved device id and did not move the deferred paths with it, so the id short-circuit returned before the identity-based queue removal. Triggered by exactly the pattern id-keying was introduced to enable, and it hangs rather than misbehaves, on what is typically a single dispatch thread. A stale id resolver could orphan its device. remove() re-resolved through the spec's callable, which commonly reads the producer's own model and stops answering once teardown begins, so remove() got None and returned silently with the device still live. The builder now latches the id a spec resolved to when built. The python_type disagreement check from 0.23.0 is removed. It guarded a difference with no runtime consequence, misfired on the normal case of a model using a richer type than the datatype-derived default, and raised mid-materialization leaving half a device. Patch: three fixes, no new API. Cut promptly rather than batched because 0.23.0 is live with an infinite loop. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Bumps
__version__to 0.23.1, promotes[Unreleased], adds the tag link. No code changes.resolve_deferred()spun forever when the device a deferred spec awaited had already been built by an equal-but-distinctDeviceSpec. My regression: 0.23.0 movedadd()'s bookkeeping to the resolved device id and did not move the deferred paths with it.remove()re-resolved through the spec's callable, which commonly reads the producer's own model and stops answering once teardown begins, so it gotNoneand returned silently with the device still live and its retained topics in place.python_typedisagreement check from 0.23.0 is removed. It guarded a difference with no runtime consequence, misfired on 30 of 134 definitions in one real declaration set, and raised mid-materialization.Patch, and cut promptly rather than batched. I know each bump costs a Yocto rebuild, and I would normally hold a patch to ride with the next minor — but 0.23.0 is live with an infinite loop on a path that is typically a single dispatch thread, so it stops everything a producer publishes.
Verification
ruff check/ruff format --checkclean; markdownlint cleanpython -m buildproduces both artifacts; wheelMETADATAreadsVersion: 0.23.1🤖 Generated with Claude Code