Phase 8.3: Fix spawn to use bux_task_spawn for non-async functions

- Added exprSpawnAsync flag to AST ekSpawn
- Sema checks if callee is async and sets the flag
- HIR hSpawn carries spawnAsync flag
- C backend uses bux_task_spawn for non-async (OS threads) and bux_async_spawn for async (coroutines)
- Added concurrency example to test suite
This commit is contained in:
2026-06-01 11:58:17 +03:00
parent cefd2a8442
commit 8b2179ccf9
7 changed files with 25 additions and 9 deletions
+1
View File
@@ -832,6 +832,7 @@ proc lowerExpr(ctx: var LowerCtx, expr: Expr): HirNode =
for arg in expr.exprSpawnArgs:
args.add(ctx.lowerExpr(arg))
return HirNode(kind: hSpawn, spawnCallee: calleeName, spawnArgs: args,
spawnAsync: expr.exprSpawnAsync,
typ: makePointer(makeVoid()), loc: loc)
of ekAwait: