feat: support signed by iteration steps - #32
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR extends QuickCoffee’s for … by iteration semantics to support signed, non-zero finite integer steps for arrays and Unicode-scalar string iteration, aligning implementation, tests, RFCs, and regenerated manuals.
Changes:
- VM: store
bystep as signedi64, start reverse iteration from the last element/scalar, and advance position safely without wraparound. - Tests: add coverage for negative
bysteps and “actual index” behavior in reverse iteration for arrays and strings. - Spec/docs: add RFC 0100 and update related RFCs, syntax docs, and executable manuals (plus regenerated HTML outputs).
Reviewed changes
Copilot reviewed 25 out of 25 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tests/rfc_core.rs | Adds assertions for negative by steps over arrays and Unicode strings; updates test naming to reflect signed steps. |
| src/vm.rs | Implements signed-step enumerable iteration and position advancement for arrays/strings. |
| RFCs/0100-signed-by-iteration.md | New RFC defining signed by iteration contract and acceptance criteria. |
| RFCs/0095-string-iteration-by-step.md | Updates string-step RFC text to allow non-zero signed steps and references RFC 0100. |
| RFCs/0070-string-iteration.md | Updates core string iteration RFC to describe signed, non-zero step semantics. |
| RFCs/0029-stepped-array-iteration.md | Updates stepped array iteration RFC to include negative steps and VM behavior notes. |
| RFCs/0001-language-core.md | Updates language core description to reflect signed non-zero by for arrays/strings. |
| RFCs/0000-project-scope.md | Extends implemented RFC range through RFC 0100. |
| README.md | Updates RFC coverage link to RFC 0100 as the latest. |
| manuals/manual.zh-CN.qc | Updates executable manual text to describe signed non-zero by steps. |
| manuals/manual.latin.qc | Updates executable manual text to describe signed non-zero by steps. |
| manuals/manual.en.qc | Updates executable manual text to describe signed non-zero by steps. |
| manuals/manual.devanagari-sa.qc | Updates executable manual text to describe signed non-zero by steps. |
| manuals/manual.classical-zh.qc | Updates executable manual text to describe signed non-zero by steps. |
| docs/syntax.zh-CN.md | Updates syntax documentation for signed non-zero by iteration behavior. |
| docs/syntax.en.md | Updates syntax documentation for signed non-zero by iteration behavior. |
| docs/manual.zh-CN.md | Updates rendered manual markdown to describe signed non-zero by steps. |
| docs/manual.zh-CN.html | Regenerated HTML manual reflecting updated signed-step docs. |
| docs/manual.latin.html | Regenerated HTML manual reflecting updated signed-step docs. |
| docs/manual.en.md | Updates rendered English manual markdown for signed-step iteration. |
| docs/manual.en.html | Regenerated HTML manual reflecting updated signed-step docs. |
| docs/manual.devanagari.sa.md | Updates rendered Devanagari manual markdown for signed-step iteration. |
| docs/manual.devanagari-sa.html | Regenerated HTML manual reflecting updated signed-step docs. |
| docs/manual.classical-zh.md | Updates rendered classical Chinese manual markdown for signed-step iteration. |
| docs/manual.classical-zh.html | Regenerated HTML manual reflecting updated signed-step docs. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
tiye
force-pushed
the
feat/not-bang-alias
branch
from
August 22, 2026 18:41
32b02f0 to
39c7972
Compare
tiye
force-pushed
the
feat/signed-by-iteration
branch
from
August 22, 2026 18:46
b7f7e34 to
2b4eae7
Compare
tiye
force-pushed
the
feat/not-bang-alias
branch
from
August 22, 2026 18:47
39c7972 to
0bca4ee
Compare
tiye
force-pushed
the
feat/signed-by-iteration
branch
from
August 22, 2026 18:52
2b4eae7 to
749366b
Compare
tiye
force-pushed
the
feat/not-bang-alias
branch
from
August 23, 2026 04:32
0bca4ee to
c82f920
Compare
Base automatically changed from
feat/not-bang-alias
to
feat/program-fingerprint
August 23, 2026 04:33
tiye
force-pushed
the
feat/signed-by-iteration
branch
from
August 23, 2026 04:35
726246c to
b5544c7
Compare
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.
Summary
bysteps for arrays and Unicode stringsbyValidation
make checkmake docsgit diff --checkPart of the RFC-driven PR chain; do not merge automatically.