1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# 068 — 문서 해석을 떼어낸 마이크로 실행 코어
2026-09-24. Linux AArch64, GCC 14.2, C17 `-O2`. [066](066-application-boundary.md)의
첫 경계 수정이다. 목적은 새 운영체제 기능을 늘리는 것이 아니라, 모든 앱이
링크해야 하는 실행 코어에서 문서 전용 연산을 제거하는 것이다.
`PureRuntime`은 이제 앱 정의를 불투명 포인터로 보관한다. 코어는 입력 접수,
작업 슬롯·바이트 예산, 완료, 결과 대여, 취소, 영역 간 전달을 관리한다.
문서의 필드 선택·응답 구간·splice 계산은 선택형 `store-port.c`가 해석한다.
코어 아카이브는 `runtime.o` 한 개이며 `evaluate.o`나 `PureProgram`을
포함하지 않는다. scalar 앱은 정의 포인터 없이 같은 코어를 쓴다.
비동기 효과는 원시 입력을 빌려 주고, 선택한 호스트가 문서 규칙을 적용한
뒤 입력 내부의 응답 구간을 돌려준다. 코어는 이 대여 범위를 검사한다.
| 비용 | 이전 067 | 이번 결과 | 차이 |
|---|---:|---:|---:|
| 기본 코어 오브젝트 `text` | 5,980 B | **4,632 B** | -1,348 B |
| 비동기 코어 오브젝트 `text` | 7,328 B | **5,724 B** | -1,604 B |
| 기본 영역 / 작업 슬롯 | 128 / 216 B | **120 / 216 B** | -8 / 0 B |
| 계측 영역 | 200 B | **192 B** | -8 B |
| 소스 CLI / HTTP 링크 `text` | 35,855 / 43,826 B | **35,743 / 43,950 B** | -112 / +124 B |
| 고정 CLI / HTTP 링크 `text` | 19,316 / 26,437 B | **19,204 / 26,625 B** | -112 / +188 B |
| 고정 / 소스 TUI 링크 `text` | 32,071 / 48,676 B | **31,959 / 48,572 B** | -112 / -104 B |
| 비동기 소스 HTTP 링크 `text` | 48,537 B | **48,241 B** | -296 B |
기본 코어의 `text`는 약 22.5% 줄었지만, **코어 절감량을 전체 앱 절감량으로
말할 수 없다.** 문서 해석은 선택한 호스트에 필요하고, 특히 고정 HTTP 실행물은
188 B 커졌다. 그래서 해당 호스트의 Linux/GCC 회귀 상한을 26,624→26,880 B로
검토해 조정했다. 코어 상한은 6,144→4,864 B, 비동기 코어 상한은
7,680→6,144 B로 낮췄다. 두 코어의 `data`/`bss`는 각각 0 B다.
이 수치는 오브젝트·링크 섹션이고 libc, 스택, 파일 매핑, payload와
전체 프로세스 메모리를 포함하지 않는다.
실제 1 MiB 문서 검사에서는 소스·고정 CLI 편집 피크가 모두 2,128 KiB,
고정/소스 TUI는 3,168/3,200 KiB였다. 고정 HTTP 호스트의 테스트 중 피크는
2,112 KiB였다. 이전 런과의 RSS 인과 차이는 주장하지 않는다. 입력의
할당·복사 계약도 이번 변경으로 자동 최적화된 것은 아니다.
`check-release`, `check-async`, `check-async-server`, `check-fixed-server`,
`check-mirror`, `check-tui`, `check-source-tui`, `check-portable`을 통과했다.
동기 고정·소스 HTTP와 선택형 비동기 소스 HTTP는 각각 1,024개 실제
8 KiB 문서, 8개 동시 클라이언트, 4,096개 작업에서 같은 최종 문서 해시를
만들었다. 각 호스트는 종료 시 활성 작업·보존 payload가 0이었고,
측정 피크 RSS는 고정 1,680 KiB, 소스 1,712 KiB, 비동기 소스 1,760 KiB였다.
이는 기능·자원 회귀 검사이며 처리량 우위의 증거는 아니다.
선택형 TLS 피어와 서버 전용 피어도 인증·외부 클라이언트·1 MiB 문서·
재시작 검사를 통과했다. 링크 `text`는 각각 46,894 / 43,422 B이고,
OpenSSL 공유 라이브러리의 코드·메모리는 이 섹션 크기에 포함되지 않는다.
ASan/UBSan을 적용한 C 계약 검사도 통과했다. 이 환경의 ptrace 아래에서는
LeakSanitizer가 실행되지 않아 해당 검사에서는 누수 탐지를 끄고 실행했다.
기존 해시의 Zig scalar 정적 라이브러리를 현재 C 호스트와 다시 링크한
세 인스턴스 입력·저장·복원 검사와 고정 정의 두 인스턴스 검사도 통과했다.
Zig 자체를 새로 빌드한
증거는 아니다.
[새 소스 묶음](../../prototypes/connections/results/2026-09-24-opaque-core/pure-source-preview.tar.gz)은
171개 파일, 334,682 B다. [깨끗한 추출 검사](../../prototypes/connections/results/2026-09-24-opaque-core/source-package-check.json)는
C·TUI·문서 RSS·수정한 `.pure` 동작·1 MiB 영역 간 전달·선택형 저장 형식
내보내기·Linux 릴리스 경로를 다시 실행했다.
[소스 CLI](../../prototypes/connections/results/2026-09-24-opaque-core/pure-document-source-cli-linux-aarch64.tar.gz),
[고정 CLI](../../prototypes/connections/results/2026-09-24-opaque-core/pure-document-fixed-cli-linux-aarch64.tar.gz),
[고정 CLI+TUI](../../prototypes/connections/results/2026-09-24-opaque-core/pure-document-fixed-cli-tui-linux-aarch64.tar.gz),
[소스 CLI+TUI](../../prototypes/connections/results/2026-09-24-opaque-core/pure-document-source-cli-tui-linux-aarch64.tar.gz)는
각각 이동 후 실제 문서 작업을 통과했다. 압축 크기는 순서대로
22,655 / 12,886 / 31,965 / 51,005 B다. 압축 크기는 RSS가 아니다.
이 변경으로 하나의 작성 가능한 앱 모델이 생긴 것은 아니다. 코어에는 여전히
문서에서 물려받은 64 B ASCII 키와 `READ`/`WRITE` 두 입력 종류가 있다.
scalar 규칙과 문서 효과는 서로 다른 작성 모델이며, 네트워크/RPC와 UI의
일반 연결도 아직 합쳐지지 않았다. 다음 검증은 실제 앱의 숫자 정책이 문서
수정을 허용·거절하는 한 경로를 동일한 작성 정의에서 실행하는 것이다.
그때도 문서·네트워크·UI 코드를 기본 코어에 넣지 않고, 선택한 앱의
전체 링크 비용·프로세스 RSS·작업별 보존 바이트를 함께 비교해야 한다.
macOS arm64 빌드와 실행은 아직 수행하지 않았다.
|