원크라우니 Wave4 T2 — 브라우저 GUI 통합 (crowny:// 전용앱 + 일반웹 병행 + 벤치)
개요
크라우니브라우저 실제 창에서
crowny:// 전용앱을 VM 렌더+실행하고, 일반 https 웹을
WebKit 엔진으로 병행 로딩하는 통합 + crowny:// VM 실행 지연 벤치마크 하니스.
기존 Wave3 자산(crowny_vm_bridge.m)을 재작성하지 않고 얇게 확장했다.
무엇을 했는가
주 산출 /Users/ef/CrownyBrowser/native/crowny_browser_vm.m (신규):
앱 레지스트리: crowny://app/<키> → vm-samples/<키>.toau(없으면 .한선) 해석.
경로분리자/
.. 거부. 미등록 앱은
[crownyVM 미등록] 거부.
랜딩 HTML 생성(landingHTML): crowny://app/ 링크 + https:// 링크 공존.
크림 #FFF8F0 / 골드 #C9A961 / 코랄 #D97757 / Pretendard / TOAU(▲) 표준 적용.
CrownyAppSchemeHandler(WKURLSchemeHandler, CROWNY_VM_WEBKIT 빌드 시):
crowny://start → 랜딩, crowny://app/<키> → VM 실행 후 결과 HTML.
앱 stdout 이
<로 시작하면 HTML 그대로, 아니면
<pre> 래핑.
벤치 하니스(-DCROWNY_VM_BENCH main): mach_absolute_time 으로
.toau 로드+crownyc run+stdout 캡처 지연을 N회 측정해 평균/최소/최대 출력.
실행측 코어(격리실행/캡처/신뢰4상)는 CrownyVMBridge 를 링크 재사용(재정의 없음).
브라우저 배선: crowny-browser.m 에서 crowny:// 핸들러를 CrownyAppSchemeHandler
우선 등록(없으면 기존 CrownyVMSchemeHandler 폴백). 기존 동작 보존.
- 앱 샘플 2종: vm-samples/시계.{한선,toau}, vm-samples/계산.{한선,toau} (HTML 조각 출력).
- 동반 한선씨: crowny_browser_vm.한선 (앱경로해석 + 통계출력 로직, 컴파일 검증).
- Makefile:
make bench 타깃 추가, make(브라우저)에 crowny_browser_vm.m 합류.
자가검증 (헤드리스 — 시각 렌더는 미실측)
- (빌드)
make EXIT=0 (CrownyBrowser 150,640 bytes), make bench EXIT=0,
make bridge-test EXIT=0. 동반 한선씨 컴파일 EXIT=0.
- (스모크) crowny_vm_bridge_test: 티 3 / 타 0 (실행+캡처 "crowny VM 실행 OK",
비신뢰 경로 거부, 잘못된 확장자 거부 모두 PASS).
- (벤치, 실측) 동일 머신/메모리 여유 회복 후:
| 앱 | N | 평균(ms) | 최소(ms) | 최대(ms) |
|---|
| crowny://app/시계 | 20 | 7.512 | 7.131 | 7.863 |
| crowny://app/계산 | 30 | 7.086 | 6.679 | 7.971 |
- (레지스트리) crowny://app/없는앱 →
[crownyVM 미등록] 거부(의도된 실패 경로).
- 시각 GUI 렌더(WKWebView 실제 표시)는 디스플레이 필요로 미실측.
feedback_headless_gui_verify 기준(스크린샷 반복 금지, 헤드리스 검증) 준수.
일반웹 비교 (날조 없음 — 측정한 것만)
crowny:// 는 위 네이티브 VM 실행 지연(평균 ~7 ms)을 실측. 일반웹(https://)은
WebKit 엔진에 위임되어 동일 엔진으로 로딩(동등)되며, MotionMark/Speedometer 등
외부 벤치 수치는 실측 불가하여 기재하지 않는다(외부브랜드 수치 날조 금지).
관련 파일
- /Users/ef/CrownyBrowser/native/crowny_browser_vm.m (주 산출)
- /Users/ef/CrownyBrowser/native/crowny_browser_vm.한선 (동반)
- /Users/ef/CrownyBrowser/native/crowny-browser.m (핸들러 배선 수정)
- /Users/ef/CrownyBrowser/native/Makefile (bench 타깃)
- /Users/ef/CrownyBrowser/native/vm-samples/{시계,계산}.{한선,toau}
- /Users/ef/CrownyBrowser/native/crowny_vm_bridge.m (Wave3, 재사용·미수정)
잔여 이슈
- 시각 GUI 렌더 미실측(디스플레이 필요). 디스플레이 환경에서 crowny://start 랜딩 →
app 링크 클릭 → VM 결과 표시 흐름 수동 확인 필요.
- win32(crowny_vm_bridge_win32.c)는 소스 동기화만, 맥에서 빌드 불가(미빌드).
- 벤치 첫 실행 시 동시 세션 메모리 압박으로 crownyc SIGKILL(137) 1회 관측 →
메모리 여유 회복 후 정상. 환경 요인(코드 결함 아님).