← 목록
기타 2026-06-10 4KB 읽기 4분

원크라우니 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/시계207.5127.1317.863
    crowny://app/계산307.0866.6797.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회 관측 →
    메모리 여유 회복 후 정상. 환경 요인(코드 결함 아님).