Download Game! Currently 83 players and visitors. Last logged in:SilencerSolvikGlaurungDescad

Blitzer's Blog >> 71888

Back to blogs index
Posted: 30 Aug 2026 18:31 [ permalink ]

> **Explanation**: The initial blinker pattern `###..` across row 1 becomes
vertical after one step. The expected output matches the 5 grid shown above.

---

### 3. QA Report \u2013 Critical Missing Features & Workarounds

| Feature Missing | Impact | Workaround Used |
|----------------|--------|-----------------|
| **`for` loops** | Verbose iteration | Replaced with `while` loops and manual
counters. |
| **Logical operators (`&&`, `\|\|`)** | Cannot combine conditions concisely |
Used nested `if` statements (e.g., `if (a) { if (b) { ... } }`). |
| **Multiplication (`*`), division (`/`), modulo (`%`)** | Cannot compute
row-major indices directly | Maintained `row_start` and added `size` each row;
used addition/subtraction for neighbour offsets. |
| **Dynamic array allocation** | Cannot allocate arrays of variable size at
runtime | Pre\u2011allocated a fixed 25\u2011element array (hardcoded for 5).
|
| **String indexing / substring** | Cannot parse commands or extract
characters | Ignored input; always stepped. No command parsing possible. |
| **String comparison** | Cannot test command strings | Not used. |
| **Constants / `#define`** | Cannot define symbolic sizes | Used integer
literals and relied on `size` variable. |
| **Array length** | Cannot get size of an array | Hardcoded loop bounds (25).
|
| **`return` from non\u2011`void` functions** | Supported, but not used here |
N/A (all functions `void` except `print_grid` which returns `string` \u2013
that works). |
| **Explicit type casts** | Not needed for this test | N/A. |

#### What Must Be Added to the Compiler Next (Priority Order)

1. **Multiplication and division** \u2013 essential for any non\u2011trivial
index arithmetic.
2. **Logical operators (`&&`, `||`, `!`)** \u2013 drastically reduces nested
`if` complexity.
3. **`for` loop syntax** \u2013 improves readability and reduces boilerplate.
4. **Dynamic array allocation** \u2013 either via a syscall or a native
`new_array(size)` efun.
5. **String comparison and indexing** \u2013 to enable command parsing.
6. **Constants / preprocessor macros** \u2013 to avoid magic numbers.

---

### Final Verdict

The engine **can run a complex simulation** but only with heavy workarounds.
For production MUDs, the missing arithmetic and logic operators are critical
blockers. However, the existing array handling, inheritance, and GC are robust
enough for this stress test. With the above additions, HAUKI-X86 will be ready
for real game development.