docs: update ROADMAP + PHASE8 for for-in loops

- Mark range-based for-in as done
- Note collection-based for-in blocked by generic monomorphization
This commit is contained in:
2026-06-09 21:55:40 +03:00
parent 74db8a5790
commit b3141dbcd5
2 changed files with 8 additions and 4 deletions
+2
View File
@@ -296,6 +296,8 @@ Crates.io е непреодолимо предимство. Ние се конк
- ✅ Basic borrow checker (`@[Checked]`) — готово - ✅ Basic borrow checker (`@[Checked]`) — готово
- ✅ Closures (capture-less anonymous functions) — готово - ✅ Closures (capture-less anonymous functions) — готово
- ✅ Closures with captures — готово - ✅ Closures with captures — готово
-`for i in lo..hi` / `for i in lo..=hi` range loops — готово
- 🔄 `for x in collection` (Array/Map/Channel) — чака generic monomorphization
- 🎯 Target: Можеш да напишеш `bux` package manager на Bux - 🎯 Target: Можеш да напишеш `bux` package manager на Bux
### Milestone B: "Използваем за systems programming" (2 месеца) ### Milestone B: "Използваем за systems programming" (2 месеца)
+6 -4
View File
@@ -173,11 +173,13 @@ for msg in channel {
``` ```
**Implementation Steps:** **Implementation Steps:**
1. Parser: extend `for` to accept `for <ident> in <expr> { ... }` 1. Parser: extend `for` to accept `for <ident> in <expr> { ... }`
2. Desugar to while loop using `Iter_HasNext` / `Iter_Next` or trait-based iterator 2. ✅ Range-based: `for i in lo..hi` and `for i in lo..=hi` — desugared to `while` loop with counter
3. C backend: generate standard while loop with iterator state 3. 🔄 Collection-based: `for x in arr` — needs `Iter<T>` desugaring or trait-based iterator
- Blocked by: generic monomorphization in selfhost C backend
- Once unblocked: desugar to `let __iter = Array_Iter(&arr); while Iter_HasNext(&__iter) { let x = Iter_Next(&__iter); body }`
**Complexity:** Medium — needs either trait system enhancement or hardcoded desugaring. **Complexity:** Medium — range-based done; collection-based needs generic monomorphization first.
--- ---