zerovoids.dev
zerovoids.dev

Ø NEWS

런타임 · JavaScript

Deno 2.9 — 데스크톱 앱, 그리고 npm에서 이주

Deno 2.9가 웹뷰 기반 데스크톱 앱 빌드를 실험 기능으로 넣고, npm·pnpm·yarn·Bun 락파일을 그대로 읽어 이주할 수 있게 했다.

키워드denojavascriptpackage-managernodetesting

Deno 2.9의 deno desktop은 웹 기술로 네이티브 데스크톱 앱을 만든다. UI는 웹뷰에서 그리고 로직은 Deno가 돌린 뒤 전체를 단일 바이너리로 컴파일하는 실험 기능이다. 기본 백엔드는 OS에 이미 있는 웹뷰 엔진(윈도우 WebView2, macOS·리눅스 WebKit)이라 따로 번들하는 용량이 없고, 크로스플랫폼 렌더링을 똑같이 맞추려면 Chromium을 포함하는 CEF 백엔드를 골라 수십 MB를 더한다. 창·트레이·독을 다루는 Deno.BrowserWindow·Deno.Tray·Deno.Dock API가 함께 왔다.

두 번째 축은 이주다. deno install이 바뀌어, package-lock.json·pnpm-lock.yaml·yarn.lock·bun.lock을 다시 해석하지 않고 그대로 읽는다. 확정된 버전과 무결성 해시가 새 deno.lock으로 넘어오고, pnpm의 pnpm-workspace.yaml은 package.json으로 합쳐지며, node 바이너리를 기대하는 도구엔 shim이 주어진다.

락파일을 다시 풀지 않고 그대로 읽어, 확정된 버전과 무결성 해시가 deno.lock으로 넘어온다.

테스트와 호환

테스트 러너엔 스냅샷과 파라미터 테스트가 내장됐다. t.assertSnapshot()은 임포트 없이 쓰고 결과를 __snapshots__ 폴더에 저장하며, Deno.test.each()는 입력 표에서 독립적으로 필터되는 테스트를 만든다. 재시도·반복·커버리지 임계값, --shard, 바뀐 파일만 도는 --changed도 왔다. CSS 파일을 import ... with { type: "css" }로 불러 constructable stylesheet로 받는 것도 --unstable-raw-imports 뒤에서 된다. 런타임은 Node.js 26에 맞춰졌고 process.version은 v26.3.0을 보고한다.

지금 써도 되나

이주·테스트·Node 26 호환은 바로 쓸 수 있고, 데스크톱 앱과 CSS 모듈 임포트는 실험 플래그 뒤라 프로토타입 정도가 적당하다. 2.9.0은 6월 25일, 현재 패치 2.9.4는 7월 23일 릴리스다. 성능은 2.8.0 대비 콜드 스타트가 34.2ms에서 17.3ms로 약 두 배 빨라졌고, 실사용 워크로드의 메모리 사용도 함께 줄었다.

References