aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/038-fixed-http-document-host.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/research/038-fixed-http-document-host.md')
-rw-r--r--docs/research/038-fixed-http-document-host.md51
1 files changed, 51 insertions, 0 deletions
diff --git a/docs/research/038-fixed-http-document-host.md b/docs/research/038-fixed-http-document-host.md
new file mode 100644
index 0000000..5eeeaaf
--- /dev/null
+++ b/docs/research/038-fixed-http-document-host.md
@@ -0,0 +1,51 @@
+# 038 — 준비된 한 앱을 CLI와 HTTP 경계에서 실행하기
+
+2026-09-24. [037](037-build-time-prepared-runner.md)의 빌드 시 준비 경로를
+같은 문서 앱의 HTTP 호스트까지 확장했다. `pure-connections-fixed`는
+`editor.pure`에서 준비한 정적 `PureProgram`을 기존 실행 코어·파일 저장소와
+연결한다. 외부 HTTP 형식은 어댑터에서 처리하고, 실행 코어에 HTTP 타입이나
+파서를 넣지 않았다. 소스 작성용 `pure-connections`는 그대로 남는다.
+
+| Linux AArch64/GCC 14 `-O2` 구성 | 링크된 `text` | 직접 공유 의존성 |
+|---|---:|---|
+| 소스 정의 HTTP 호스트 | 43,009 B | libc |
+| 고정 정의 HTTP 호스트 | **25,228 B** | libc |
+
+같은 문서 기능의 호스트 실행물에서 파서 분리로 **17,781 B(41.3%)**를
+줄였다. 실행기 구조체도 41,528→40,848 B로 680 B 작아졌는데, 이는
+소스 호스트에 있던 `PureProgram` 인스턴스를 정적 상수로 공유한 결과다.
+[두 프로필의 코드·직접 의존성](../../prototypes/connections/results/2026-09-24-fixed-http/source-profile.json),
+[고정 호스트의 26 KiB 회귀 상한](../../prototypes/connections/results/2026-09-24-fixed-http/fixed-profile.json).
+압축 크기나 코드 섹션만으로 프로세스 메모리·네트워크 성능 향상을 주장하지 않는다.
+
+[실제 HTTP·CLI 교차 검사](../../prototypes/connections/results/2026-09-24-fixed-http/verified.json)에서는
+고정 HTTP로 만든 문서를 소스 HTTP가 읽고, 소스 HTTP의 수정을 고정 HTTP가
+읽었다. 오래된 버전과 잘못된 수정 범위를 양쪽에서 거절했고, 고정 HTTP에서
+1 MiB 문서를 생성한 뒤 소스 HTTP·고정 CLI가 같은 바이트를 읽었다.
+CLI에서 끝 1 B를 수정한 뒤 양쪽 HTTP가 새 버전을 복원했다. 고정 HTTP
+실행물에는 `pure_program_parse`·`pure_program_load` 심볼이 없다.
+
+같은 검사에서 느린 클라이언트가 1 MiB 응답을 한 바이트만 받은 동안,
+1 MiB 보유 예산 아래의 다른 읽기는 거절됐다. 첫 응답을 끝까지 소비하자
+다음 요청이 성공했고, 종료 시 보유량과 활성 작업은 모두 0이었다.
+이것은 응답 버퍼의 수명·예산·회수 검증이며 Kitex급 처리량을 증명하지 않는다.
+한 번 실행의 프로세스 RSS 표본은 고정 HTTP 유휴 1,520 KiB, 소스 HTTP
+유휴 1,552 KiB였다. 1 MiB 문서 작업 후 각각 1,648/1,680 KiB였다.
+고정 HTTP의 이 작업 중 최고 RSS는 2,128 KiB로 **4 MiB 회귀 상한**을
+통과했다. 소스 HTTP와의 작은 RSS 차이를 안정적인 RAM 이점으로 단정하지
+않는다. 이 상한은 단일 1 MiB 작업과 위 느린 수신자 흐름에 적용되며,
+동시 다중 클라이언트 전체 피크의 보증이 아니다.
+
+[CLI+HTTP 묶음](../../prototypes/connections/results/2026-09-24-fixed-http/pure-document-fixed-http-linux-aarch64.tar.gz)은
+31,733 B이고 libc 외 공유 라이브러리를 묶지 않는다.
+[다른 디렉터리에서 해제·동작 검사](../../prototypes/connections/results/2026-09-24-fixed-http/package.json)는
+패키지의 두 호스트가 같은 저장 파일을 수정·복원함을 확인했다. 소스 정의나
+컴파일러가 들어 있지 않아 실행 중 앱을 다시 작성할 수 없다. 기존 소스·HTTP
+패키지도 변경된 검사기로 재검증했다. 내부 Pure 피어의 TLS·정의 일치,
+macOS 빌드, 다중 앱·대규모 서비스는 이 결과의 범위 밖이다.
+
+재현 명령은 `make -C prototypes/connections fixed-editor fixed-server
+check-fixed-profile check-fixed-server`,
+`python3 prototypes/connections/package_native.py --fixed --with-http --output
+/tmp/pure-fixed-http.tar.gz`, `python3 prototypes/connections/check_package.py
+/tmp/pure-fixed-http.tar.gz`다.