규칙 6.11
이 페이지에서

규칙 6.11

6장, 선언과 리소스 테스트

The compiler adds one binding an author did not write for a console call, and only when a compile asks for GPU recording (compile(src, { console: 'gpu' })): _console, a read_write storage buffer of struct _Console { cursor: atomic<u32>, dropped: atomic<u32>, words: array<u32> }, at group 0, the first binding past the module’s own group-0 bindings, the slot the _fp64 guard takes by the same rule (the guard, when there is one, comes one past it). reflect(m, { console: 'gpu' }) must report it, as it reports _fp64, and CompileResult.console must say where it is.

규칙 본문과 그 아래 항목은 설계 문서에 적힌 컴파일러 원문이라 한국어 페이지에서도 영어로 둡니다.

근거

a binding the author did not declare is one the host must still bind, so it has to be where the host already looks for the compiler’s own binding, and absent from every compile that did not ask for it, so that no host meets a layout it did not expect.

출처

changes/0014-gpu-console.md (“the slot”); the _fp64 guard’s placement in src/core/passes/fp64-lower.ts; surface §66.

검증 방식

테스트로 확인합니다. 테스트나 게이트 스크립트, CI 워크플로가 이 규칙을 가리키고, 아래 파일 가운데 하나라도 규칙을 더는 가리키지 않으면 추적 검사가 실패합니다.

컴파일러가 이 규칙을 적용하는 곳을 규칙이 직접 적은 내용입니다.

src/core/passes/console-buffer.test.ts (binds the buffer at group 0 past the module bindings, and reflect reports it when asked; adds nothing and moves no byte under the default option).

커밋 c66579bf에서 이 규칙을 확인하는 파일입니다. 파일마다 규칙을 처음 가리키는 줄로 연결했습니다.

설명하는 절

커밋 c66579bf의 표면 문서에서 이 규칙을 설명하는 절입니다.

함께 보기

소스

커밋 c66579bf의 규칙 원문:

이 페이지 편집 문제 보고