규칙 11.17
이 페이지에서

규칙 11.17

11장, 대상과 오라클 테스트

A raw row must name one documented escape hatch, and the escape hatches are exactly these: Frame.encoder, RenderPass.raw, Texture.texture, Sampler.sampler, Runtime.device, createRuntime({ device }), a host GPUBuffer, GPUTexture, GPUTextureView, GPUSampler, WebGLBuffer, WebGLTexture or WebGLSampler passed as a binding, a target or a geometry buffer, RenderPipeline.draw(pass, …) and ComputePipeline.dispatch(target, …) into the host’s own encoders, and Runtime.submit(…encoders). Each is documented in its JSDoc as an escape hatch. Removing one, or narrowing what it accepts, is a breaking change (Rule 13.9).

DeviceInfo (change 0083; Rules 11.8 and 11.11) contains copied metadata and no native handles. It neither replaces nor narrows an escape hatch. Wrapping a host device reads its own available identity and otherwise preserves unavailable identity; it never probes a different device to infer the host’s identity.

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

근거

an escape hatch is the promise that a capability the runtime does not spell is still reachable without leaving the runtime; a host builds on it, so it is part of the public surface and not a convenience that may go.

출처

Rule 11.11; src/runtime/runtime.ts (Frame.encoder, RenderPass.raw, Runtime.device), src/runtime/resources.ts (Texture.texture, Sampler.sampler), src/runtime/program.ts (the host objects a binding and a Geometry take); Rule 13.9.

검증 방식

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

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

capability-coverage.test.ts, which fails on a raw row that names nothing in the list, and src/api-surface.test.ts, which already fails on a removed export.

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

함께 보기

소스

커밋 91c2fe31의 규칙 원문:

이 페이지 편집 문제 보고