Repolode
stencil-hq

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. 1

    저장소를 클론합니다

    git clone https://github.com/stencil-hq/dquickts
  2. 2

    프로젝트 디렉터리로 이동합니다

    cd dquickts
  3. 3

    qjs, qjsc, libquickjs.a를 빌드합니다

    make
  4. 4

    qjs로 TypeScript 파일을 실행합니다

    ./qjs hello.ts

사용 전 알아둘 점

  • 라이선스가 자동으로 감지되지 않았습니다. 사용하기 전에 저장소의 라이선스 약관을 확인하세요.
  • 스냅샷 파일과 세션 파일은 해당 파일을 작성한 것과 동일한 qjs 빌드에서만 로드할 수 있습니다.
  • 지속형 REPL에서는 std 및 os 모듈을 제공하지 않습니다.

토픽

#javascript-engine#typescript#embeddable#snapshots#serialization#repl#rust-bindings#durable-execution#hibernation#interpreter

자주 묻는 질문

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 통계는 매일 갱신됩니다.

관련 프로젝트