언제 필요한가요?
실행을 비교하거나 재생하거나 감사해야 할 때 이 계약을 사용하세요. 소스 바이트와 실행기 동일성, 자원 프로필, 관측 채널을 모두 명시하기 전까지는 “같은 입력”이라는 표현만으로는 부족합니다. 자원 프로필은 실행 한 번이 지켜야 할 한도와 보고 항목에 이름을 붙여 둔 묶음입니다.
예제 읽기
결정적 실행이 모든 프로그램이 끝난다는 약속은 아닙니다. 현재 리스펙스를 실행하는 방식마다 입력, 출력, 전이, 제어 한도가 정의되어 있습니다. 다만 그 한도가 모든 순회, 정확한 수 연산, 할당, 렌더링, 진단을 일일이 세지는 않습니다. 따라서 적대적인 무한 반복이나 할당이 많은 규칙은 현재 프로필이 다루는 의미 범위를 벗어날 수 있습니다. 벽시계 시간은 운영상의 관측일 뿐 게스트의 의미 값이 아닙니다.
이 순서로 생각하세요
- 관측 채널은 표준 출력 바이트, 진단 바이트, 종료 상태, 경고 순서, 자원 보고, 결과 값을 기록한 형태이며, 해당하는 경우 아티팩트나 출처 동일성까지 포함합니다.
- 네이티브와 WebAssembly는 고정해 둔 한도가 서로 다를 수 있습니다. 그러면서도 프로필별 자원 결과는 명확하게 보고할 수 있습니다.
- 재생은 바이트를 비교하기 전에 소스와 실행기 동일성, 한도, 그리고 어떤 관측을 셀지를 먼저 고정합니다.
빠르게 고르기
| 비교 전에 고정할 항목 | 중요한 이유 | 관측 예시 |
|---|---|---|
| 소스와 입력 바이트 | 텍스트 정규화도 동일성을 변경함 | 값 또는 진단 바이트 |
| 실행기와 프로필 | 한도와 다루는 언어 범위에 이름을 지정함 | 종료 상태와 자원 보고 |
| 어떤 관측을 셀지 | 관측하지 않은 호스트 상세는 주장 범위를 벗어남 | 표준 출력과 경고 순서 |
| 코퍼스와 기준선 | 결과가 시험 집합을 선택하면 안 됨 | 일치, 불일치, 비교 불가 |
| 필요한 아티팩트 동일성 | 증거가 무엇을 검사했는지 밝혀야 함 | 영수증 또는 엔진 바이트의 짧은 지문 |
흔한 오해
벽시계 시간 초과 하나만으로는 의미론적 자원 보고가 되지 않습니다.
현재 경계
- 정해진 비교 묶음에서 결과가 일치했다고 해서 전체 언어가 동등하다거나 불일치가 없다는 증명이 되지는 않습니다.
- 소스를 그대로 읽어 실행하는 내장 인터프리터도, 미리 만들어 둔 명령을 실행하는 가상 머신도 규칙 소스를 신뢰한다는 전제 위에 있습니다. 둘 다 적대적인 소스를 가두어 두도록 만들어지지 않았고, 전체 작업량이나 전체 논리적 할당량을 결정적으로 세는 계수기도 없습니다.
- 시간 초과, 작업자 프로세스 강제 종료, 호스트 메모리 고갈, 패닉, 트랩은 운영 중단이거나 엔진 결함입니다. 결정도, 남에게 건넬 수 있는 영수증도 만들지 않습니다.
다음으로
실행기마다 어디에서 왔는지는 런타임 백엔드에서 설명합니다. 유지되는 비교가 정확히 어디까지 미치는지는 검사된 표면에서 확인하세요.