Rust로 작성된 임베디드 JavaScript 엔진으로, 렉서·파서·인터프리터를 제공하며 ECMAScript 사양을 폭넓게 지원합니다.
stencil-hq/dquickts
실행 중인 JavaScript를 일시 중지하고 전체 힙을 스냅샷으로 저장한 뒤 다른 프로세스에서 재개할 수 있으며, TypeScript를 기본 지원하는 QuickJS 포크입니다.
- 스타
- 482
- 포크
- 11
- 열린 이슈
- 3
- 마지막 커밋
- 4일 전
어떤 프로젝트인가요?
dquickts는 Fabrice Bellard의 임베디드용 QuickJS 엔진을 포크한 프로젝트입니다. 주요 추가 기능은 내구성 있는 실행입니다. 동기 루프 한가운데를 포함해 실행 중인 프로그램을 일시 중지하고 바이트로 직렬화한 다음, 나중에 다른 프로세스에서 재개할 수 있습니다. 스냅샷에는 객체, 클로저, 대기 중인 promise 작업, 로드된 모듈, 중단된 호출 스택을 비롯해 런타임 전체가 담깁니다.
이 포크는 .ts, .mts, .cts 파일도 바로 실행합니다. 파싱 중에 타입 주석을 제거하므로 별도의 트랜스파일 단계가 필요 없고, enum, namespace, 매개변수 속성, 데코레이터는 일반 바이트코드로 컴파일됩니다. `qjs --drepl FILE` REPL은 명령을 실행할 때마다 세션을 저장하므로, 재시작해도 함수와 변수가 유지됩니다.
프로젝트에는 Rust 바인딩인 rquickjs 포트도 포함되어 있으며, 이를 통해 일시 중지, 스냅샷, TypeScript 평가 기능을 사용할 수 있습니다. 증분 스냅샷을 사용하면 호스트에서 공유된 기준 스냅샷을 바탕으로 작은 변경분만 저장할 수 있습니다.
핵심 기능
- 01세이프포인트에서 실행 중인 JavaScript를 일시 중지하고 정확히 중단된 명령어부터 나중에 재개합니다.
- 02전체, 기준 또는 변경분 힙 스냅샷을 기록하고 새 런타임이나 프로세스에서 읽어 들입니다.
- 03파싱 시 타입을 제거하므로 번들러 없이 TypeScript 파일을 바로 실행합니다.
- 04내구성 있는 호스트 호출을 통해 스크립트가 재시작 후 도착하는 C 함수의 결과를 기다릴 수 있습니다.
- 05종료와 재시작을 거쳐도 세션 상태가 유지되는 내구성 있는 REPL을 제공합니다.
- 06일시 중지, 스냅샷, TypeScript를 지원하는 Rust 바인딩을 제공합니다.
활용 사례
- 오래 실행되거나 유휴 상태인 스크립트를 휴면시켜 메모리를 확보한 뒤 나중에 재개하기.
- 스크립트가 외부 결과를 몇 시간 동안 기다린 다음 다른 프로세스에서 실행을 이어 가는 워크플로 구축하기.
- 긴 계산을 여러 구간으로 나누어 서로 다른 워커 프로세스에서 실행하기.
- 빌드 단계 없이 TypeScript를 사용해야 하는 애플리케이션에 스크립팅 엔진 임베드하기.
빠른 시작
- 1
저장소를 클론합니다
git clone https://github.com/stencil-hq/dquickts - 2
프로젝트 디렉터리로 이동합니다
cd dquickts - 3
qjs, qjsc, libquickjs.a를 빌드합니다
make - 4
qjs로 TypeScript 파일을 실행합니다
./qjs hello.ts
사용 전 알아둘 점
- 라이선스가 자동으로 감지되지 않았습니다. 사용하기 전에 저장소의 라이선스 약관을 확인하세요.
- 스냅샷 파일과 세션 파일은 해당 파일을 작성한 것과 동일한 qjs 빌드에서만 로드할 수 있습니다.
- 지속형 REPL에서는 std 및 os 모듈을 제공하지 않습니다.
토픽
자주 묻는 질문
- dquickts은(는) 무엇인가요?
- 실행 중인 JavaScript를 일시 중지하고 전체 힙을 스냅샷으로 저장한 뒤 다른 프로세스에서 재개할 수 있으며, TypeScript를 기본 지원하는 QuickJS 포크입니다. dquickts는 Fabrice Bellard의 임베디드용 QuickJS 엔진을 포크한 프로젝트입니다. 주요 추가 기능은 내구성 있는 실행입니다. 동기 루프 한가운데를 포함해 실행 중인 프로그램을 일시 중지하고 바이트로 직렬화한 다음, 나중에 다른 프로세스에서 재개할 수 있습니다. 스냅샷에는 객체, 클로저, 대기 중인 promise 작업, 로드된 모듈, 중단된 호출 스택을 비롯해 런타임 전체가 담깁니다.
- dquickts은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- dquickts은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- dquickts은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. dquickts의 마지막 커밋은 2026년 11월 3일입니다.
- dquickts은(는) 어디에 사용할 수 있나요?
- 오래 실행되거나 유휴 상태인 스크립트를 휴면시켜 메모리를 확보한 뒤 나중에 재개하기. 스크립트가 외부 결과를 몇 시간 동안 기다린 다음 다른 프로세스에서 실행을 이어 가는 워크플로 구축하기. 긴 계산을 여러 구간으로 나누어 서로 다른 워커 프로세스에서 실행하기. 빌드 단계 없이 TypeScript를 사용해야 하는 애플리케이션에 스크립팅 엔진 임베드하기.
- dquickts는 어떻게 설치하나요?
- 저장소를 클론합니다: git clone https://github.com/stencil-hq/dquickts 프로젝트 디렉터리로 이동합니다: cd dquickts qjs, qjsc, libquickjs.a를 빌드합니다: make qjs로 TypeScript 파일을 실행합니다: ./qjs hello.ts
- dquickts은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/stencil-hq/dquickts
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
Clang과 LLVM 기반의 인터랙티브 C++ 인터프리터로, REPL에서 C++ 코드를 한 줄씩 실행할 수 있습니다.
앱에 스프레드시트, 문서, 프레젠테이션 편집 기능을 임베드하고 에이전트용 headless Node.js 실행을 지원하는 오픈 소스 TypeScript SDK입니다.
Rust에서 딥러닝 모델을 만들고 학습 및 실행할 수 있도록 PyTorch(libTorch) C++ API를 바인딩합니다.
CLI나 웹 UI에서 찾아보고 복원할 수 있는 암호화·중복 제거·검증 가능한 스냅샷을 만드는 오픈소스 백업 엔진입니다.
Memcache, Redis/Valkey, HTTP, Postgres 프로토콜을 지원하고 단일 C 파일로 임베드할 수 있는 저지연 C 캐싱 서버입니다.