@@ -95,24 +95,28 @@ edit-run cycle. It scans the source once and emits GNU C while consuming tokens.
9595not create a flat AST and does not run imports, type checking, transform, type annotation, or
9696mark-used. Bundled TinyCC compiles the emitted translation unit immediately.
9797
98- FastC currently emits primitive functions and parameters, inferred local declarations, ordinary
99- expressions, ` if ` /` else ` , and condition, C-style, infinite, and integer-range ` for ` loops. GNU
100- ` typeof ` carries ` := ` declarations into C without V type inference. Unsupported syntax silently
101- selects the normal C backend. A TinyCC error is also discarded and the original V source is
102- reparsed by the normal C backend, so the user receives V parser or type-checker diagnostics rather
103- than a speculative C diagnostic. A successfully compiled ` run ` program keeps its exit status and
104- is never retried.
98+ FastC's direct lane currently emits primitive functions and parameters, inferred local
99+ declarations, ordinary expressions, ` if ` /` else ` , and condition, C-style, infinite, and
100+ integer-range ` for ` loops. GNU
101+ ` typeof ` carries ` := ` declarations into C without V type inference. Unsupported syntax promotes
102+ the source to fastc's complete lane, which uses the parser, checker, transformer, and mark-used
103+ pass, then emits C with its own ` v3.gen.fastc.FlatGen ` backend. That backend is a full fork of the
104+ V3 C generator rather than an alias or a runtime switch to ` v3.gen.c ` . A TinyCC error is also
105+ discarded and the original V source is compiled by the checked fastc lane, so the user receives V
106+ parser or type-checker diagnostics rather than a speculative C diagnostic. The complete lane has
107+ the same language and ownership/autofree coverage as the C backend. A successfully compiled ` run `
108+ program keeps its exit status and is never retried.
105109
106110The direct path is limited to host-target, non-production, non-test, non-shared single-file builds.
107- Other modes select the normal C backend before source scanning. ` -o file.c ` emits the standalone
108- fast C translation unit without invoking TinyCC.
111+ Compiler/self-host and other non-direct modes enter the complete lane before source scanning.
112+ ` -o file.c ` emits the standalone fast C translation unit when the direct lane supports the input;
113+ otherwise it emits the complete ` v3.gen.fastc ` translation unit.
109114
110115` v self -b fastc ` and direct compiler builds such as ` v -b fastc -o v2 cmd/v ` are routed to V3.
111- The compiler source is outside the direct subset, so fastc immediately selects the checked V3 C
112- backend for that build. The resulting self-hosted compiler retains fastc and can use the direct
113- path for supported user programs, including when its output has a custom filename in the V checkout.
114- The fastc integration test self-hosts the standalone V3 compiler through five successive generations
115- and verifies that the fifth generation still compiles and runs a direct-fastc program.
116+ Self-host builds enter fastc's complete lane directly. The checked frontend feeds the independent
117+ ` v3.gen.fastc.FlatGen ` implementation, so the resulting compiler supports the full V3 source tree
118+ and retains both fastc lanes for user programs, including when its output has a custom filename in
119+ the V checkout. The fastc integration test exercises five successive self-host generations.
116120
117121Generated C represents ` thread ` values with a typed wrapper around ` pthread_t ` . ` spawn ` and
118122detached standard-library workers use the target's default thread stack (8 MiB on 64-bit targets
0 commit comments