Result: done Files: crates/nikaia/src/parser/mod.rs tests/compiler/tests/async_parse_admission_is_not_built_yet.nika tests/compiler/tests/async_parse_admission_is_not_built_yet.stderr tests/compiler/tests/async_parse_catch_is_not_built_yet.nika tests/compiler/tests/async_parse_catch_is_not_built_yet.stderr tests/compiler/tests/async_parse_deferred_is_not_built_yet.nika tests/compiler/tests/async_parse_deferred_is_not_built_yet.stderr tests/compiler/tests/async_parse_detached_lambda_with_an_argument.nika tests/compiler/tests/async_parse_detached_lambda_with_an_argument.stderr tests/compiler/tests/async_parse_detached_runs.nika tests/compiler/tests/async_parse_detached_runs.stdout tests/compiler/tests/async_parse_group_is_not_built_yet.nika tests/compiler/tests/async_parse_group_is_not_built_yet.stderr tests/compiler/tests/async_parse_handle_is_not_built_yet.nika tests/compiler/tests/async_parse_handle_is_not_built_yet.stderr tests/compiler/tests/async_parse_lambda_is_not_built_yet.nika tests/compiler/tests/async_parse_lambda_is_not_built_yet.stderr tests/compiler/tests/async_parse_limit_is_not_built_yet.nika tests/compiler/tests/async_parse_limit_is_not_built_yet.stderr tests/compiler/tests/async_parse_statement_is_not_built_yet.nika tests/compiler/tests/async_parse_statement_is_not_built_yet.stderr tests/compiler/tests/async_parse_value_is_not_built_yet.nika tests/compiler/tests/async_parse_value_is_not_built_yet.stderr tests/compiler/tests/async_parse_within_is_not_built_yet.nika tests/compiler/tests/async_parse_within_is_not_built_yet.stderr tests/specification/EXPECTED.txt tests/specification/COMPILES.txt assets/badges/self-hosted.svg Commit: parser: the async prefix forms parse; async(detached) fn is spawn, the others are refused as not built yet (ADR-async-5) Body: Step 2 of #984 (step 4 with it). async(detached) fn { … } parses into Expr::Spawn, the node spawn fn { … } has (D13), so it runs, and a lambda naming an argument meets the existing NK2103. Every other form is refused in the parser with a fail naming it, as immutable_item is (ADR-389 D4; supervisor decision 2026-11-03): async e as a value (D6) and as a statement (D9), async { … } (D9), async fn { … } (D10), the options handle, deferred, limit:, within:, admission: (D11-D15; a list of several names the first not built), a catch after the form (D22), async(detached) without a lambda, and an unknown option. No new Expr variant, no NK code. The parser reports the error that reached furthest, so each fail stands after async (or on the option it names), never on async itself; that is why the option scan skips only detached. async before let, a loop or fn name is left alone (the checker’s NK2115, a2). spawn is unchanged. Rust changed, for #557 / #125: in crates/nikaia/src/parser/mod.rs the grammar rules stmt and primary_expr_bare (one arm each); added the rules async_expr, async_named_fn, async_stmt, async_built_options, async_unbuilt_option, OPT_HANDLE, OPT_DEFERRED, OPT_DETACHED, OPT_LIMIT, OPT_WITHIN, OPT_ADMISSION; no Rust function outside the grammar, ast/mod.rs unchanged. The specification baselines move forward: blocks 108, 110, 111 and 71 of Part I and 29 of Part II, which write async(detached) fn, now lower and compile (109 is refused with NK1117 for its undeclared fetch). The self-hosted badge is regenerated from the committed tree (the parser grew in Rust). Part: #984 Tests: the 13 new async_parse_* programs plus the two of a1 pass via nikaia test –both-settings on a scratch project (15 passed); before the change every new one gave async is a reserved word (old binary); whole it binary 2885 passed, 2 failed (the two specification baselines, progress only, regenerated; specification:: then 5 passed); sequences guard passed; clippy 1.97 clean (1.99.1 not run: 4.1 GB free, a second target would not fit), cargo fmt clean; no .nika of tools changed, so no lower-std; tests/compiler full run and tests/errors left to the driver Gate: green Deviation: none Found: none Needs: none Changelog: none Owner: none Disk freed: none removed (5.0 GB free on /, above 3 GB); target/nikaia-project-tests 4.8G; new over 100 MB: run-bundle/c1ccf85af4afe566 306 MB Rs2nika: none Attribution: Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01GFeMqxRbtUMiGVyDMxsvEq Pushed: local 33d97ed5bfa4ef8e804490236996e1959cbbdd98

This site is open source. Improve this page.