Skip to content

Commit cae47b8

Browse files
Technologicatclaude
andcommitted
briefs/2.2.0-remaining-issues: record myield_from completion
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 839953b commit cae47b8

1 file changed

Lines changed: 18 additions & 13 deletions

File tree

briefs/2.2.0-remaining-issues.md

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,24 @@ ordering is preserved below; status flags mark what's done.
3131
which lets us align with the stdlib idiom now without breaking 2.x
3232
callers — #102 retained as the 3.0.0 "drop the `TypeError` base"
3333
tracker.
34-
5. ~~**#80**~~**done** this session. `@multishot`/`myield` macros
35-
and `MultishotIterator` adapter shipped in
36-
`unpythonic.syntax.multishot`. Promoted from the `test_conts_multishot.py`
37-
proof-of-concept, with the multi-phase scaffolding dropped and the
38-
adapter extended to v1 surface (gi_frame always None, gi_code as the
39-
liveness signal, gi_running always False, gi_yieldfrom None,
40-
`__copy__` shallow fork, `__deepcopy__` raises TypeError, `__del__`
41-
calls `close`). Brief: `briefs/multishot-implementation.md`.
42-
Tests: `unpythonic/syntax/tests/test_multishot.py` (45 passing).
43-
Doc: new "Multi-shot generators with `@multishot` and `myield`"
44-
subsection in `doc/macros.md`. Issue closed. **`myield_from`
45-
follow-up** flagged in the brief as the immediate post-v1 changeset
46-
while CI engines are still warm.
34+
5. ~~**#80**~~**done** across two slots. v1 (`@multishot`, `myield`,
35+
`MultishotIterator`) shipped earlier this session; `myield_from`
36+
follow-up landed in `839953b`. Final v1 surface: `gi_frame` always
37+
None, `gi_code` as the liveness signal, `gi_running` always False,
38+
`gi_yieldfrom` tracks the inner iterator while delegating, `__copy__`
39+
shallow fork, `__deepcopy__` raises TypeError, `__del__` calls
40+
`close`. `myield_from` architecture: let/cc-style rest-of-outer
41+
capture (`_rest = call_cc[get_cc()]`) + tail-called driver +
42+
cut-the-tail `_yieldf` to escape each `(captured_cc, value)` to the
43+
user's trampoline. Bonus refactor (commit `839953b`): shared
44+
`_step(k, mode, value)` helper + send-to-bare-myield bug fix +
45+
`throw` capture-and-update. Misplaced `myield_from` raises
46+
`SyntaxError` symmetrically with `myield`. Brief:
47+
`briefs/multishot-implementation.md`. Tests:
48+
`unpythonic/syntax/tests/test_multishot.py` (72 passing).
49+
Doc: "Multi-shot generators with `@multishot` and `myield`" +
50+
"Delegating to another multi-shot: `myield_from`" subsections in
51+
`doc/macros.md`. Issue closed.
4752
6. **#83** — pending; `end_lineno` / `end_col_offset` sweep, last.
4853

4954
Only **#83** remains for 2.2.0. It's explicitly *do last* — cross-cutting,

0 commit comments

Comments
 (0)