QuickJS로 런타임 빌드하기
QuickJS 기반의 경량 JavaScript 런타임을 직접 구현하여, console.log, process.uptime(), setTimeout, clearTimeout, fs.readFileSync, fs.readFile 등의 Node.js 유사 API를 제공합니다.
이벤트 루프와 작업 큐, 워커 풀을 포함해 비동기 파일 I/O를 지원하며, 워커 스레드가 파일 읽기 작업을 처리하고 메인 스레드가 결과를 받아 프로미스의 resolve/reject를 호출하는 구조입니다.
JSRuntime에 사용자 정의 상태를 연결해 프로세스 시작 시간 추적, 타이머 관리, 작업 큐 동기화 등을 수행하며, select()와 파이프를 활용해 효율적인 이벤트 대기 및 처리 방식을 구현했습니다.
벤치마크 결과, QuickJS 엔진 기반의 이 런타임은 Node.js 대비 빠른 시작 속도를 보이며, 파일 읽기 성능도 근접해 경량화된 JavaScript 실행 환경 구축에 실용적 가치를 지닙니다.