In a subagent per implementation, list (don't apply) code that could use newer idioms — but nothing that:
- adds ternaries/switch/match (only Cell#to_char), endless/expression bodies, or
combined/flattened
ifs - changes make_key's
keylocal, Odin param groups, C/C++auto, F#<> null, orunless minimalon its own line - removes commented-out-code imports (grep first), tuple/Pair DIRECTIONS,
existing,_f, Play/World/Cell, or Kotlinpublic - breaks add_cell→bool, optional next_state, or the active "fastest" variant
- reformats untouched code, drops struct trailing commas, or skips updating commented render/alive_neighbours variants (see AGENTS.md/IMPLEMENTATION.md)
Won't compile / not an improvement — don't propose:
- AssemblyScript: no
Mapget-or-null (Map.getOrNull); unsigned cast breaks the negative-offset bounds check (<u32>dir[0]). - Ballerina: no
??null-coalescing (x ?? false);+=doesn't preserveint:Unsigned32(self.tick += 1). - Fortran:
pureonly works onmake_key(pure function cell_at). - Groovy: no for-header destructuring (
for ((rel_x, rel_y) in DIRECTIONS)). - Inko: can't call an ownership-taking method on a borrowed field (
cell.next_state.or(false)). - Kotlin: no native fixed-precision float formatting (
String.format("%.3f", ...)). - Navi: no for-header destructuring (
for (let [rel_x, rel_y] in DIRECTIONS)). - OCaml:
Random.self_initnot deprecated. - Odin:
or_elseneeds the.?assertion (next_state or_else false). - Perl: n-at-a-time
foreachdoesn't fit list-of-pairs DIRECTIONS (foreach my ($rel_x, $rel_y) (...)). - Pony: no optional shorthand (
Bool?); named args needwhere; no+=(x += 1). - SQL: SQLite
generate_seriesrejects a column alias (generate_series(...) AS gx(value)). - V: no
osenv-presence check (os.is_env_set); optional map lookup needsor {}; no infinity literal (math.inf(1)). - Zig: can't bit-cast
i96to 64-bit (@bitCasttou64).