블로그
16 posts
Auto-Update, a Live Inspector, and the Compiler That Halved Itself
· updater · devtools · refactor지난 글은 v0.5.306에서 gen-GC + JSON + 벤치마크 이야기로 마무리됐습니다. 4일이 지난 지금 Perry는 v0.5.359에 와 있고 — 그 사이 53번의 패치 릴리스 — 이야기는 또 달라집니다. 그 릴리스들 중 어느 하나도 벤치마크 숫자를 헤드라인으로 내건 것은 없습니다. 거의 전부가 트래커의 이슈가 닫히는 이야기입니다.
tvOS, Cross-Compile iOS from Linux, and Perry Login
· tvOS · cross-compilation · billing5일, 120개 커밋, Perry가 v0.4.0에서 v0.4.24로 도약했습니다. 하이라이트: tvOS가 10번째 컴파일 대상이 되고, iOS와 macOS 앱을 이제 Linux에서 완전히 빌드할 수 있으며, perry login으로 사용량 기반 과금이 도입되고, Windows UI가 전면 개편되었습니다. 출시된 모든 내용을 소개합니다.
True Multi-Threading, Compile-Time i18n, and watchOS
· threading · i18n · watchOSPerry v0.4.0은 프로젝트 시작 이래 가장 큰 릴리스입니다. 한 사이클에서 세 번의 버전 점프 — v0.3.0 (i18n), v0.3.2 (watchOS), v0.4.0 (멀티스레딩) — 그리고 컴파일러 자체도 이제 병렬입니다. 출시된 모든 내용을 소개합니다.
The Full Pipeline: Docs, Distribution, and WidgetKit
· distribution · documentation · WidgetKit7일 동안 82개의 커밋. 49페이지의 문서 사이트. 자동화된 App Store와 Play Store 게시. Homebrew와 APT 패키지. TypeScript에서 컴파일된 네이티브 WidgetKit 확장. 셀프 호스팅 LLVM 컴파일러. 그리고 모든 플랫폼에 걸친 수십 개의 버그 수정.
Plugin Systems Are a Performance Tax
· architecture · performance · compilerVS Code를 설치합니다. 빠릅니다. 확장 15개를 추가합니다. 이제 시작에 4초가 걸리고 Extension Host가 800 MB RAM을 소모합니다. 무슨 일이 일어난 걸까요?
Optimizing Everything: One Week, 68 Releases, and a 547x JSON Speedup
· performance · llvm · JSON지난 블로그 글은 Perry v0.5.12와 함께 공개되었습니다. 오늘은 v0.5.80입니다. 7일 동안 68개의 패치 릴리스를 쏟아냈으며, 거의 전적으로 하나의 목표에 집중했습니다. 남아 있는 모든 느린 경로를 빠른 경로로 바꾸는 것입니다.
npm Distribution, perry dev, and Winning Every Benchmark
· npm · developer-experience · performance지난 글은 Perry v0.5.80과 함께, 벤치마크 표에서 완강히 남아 있던 한 가지 패배로 끝났습니다. JSON.parse/stringify 라운드트립이 여전히 Node보다 1.6배 느렸던 것입니다. 6일 후 Perry는 v0.5.174가 되었고 — 즉 94개의 패치 릴리스를 의미합니다 — 다른 무엇보다 먼저 짚고 넘어갈 가치가 있는 세 가지가 바뀌었습니다:
Introducing Perry
· announcement · compiler · TypeScriptPerry를 소개합니다. Perry는 Rust로 작성된 네이티브 TypeScript 컴파일러로, TypeScript를 독립 실행 파일로 직접 컴파일합니다. Node.js 런타임 없이, Electron 래퍼 없이, 타협 없이. 여러분의 코드가 즉시 시작되고 어디서든 실행되는 네이티브 바이너리로 컴파일됩니다.
Generational GC, Lazy JSON, and Benchmarks That Hold Up to Scrutiny
· GC · JSON · performance지난 글은 v0.5.174에서 한 가지 헤드라인과 함께 마무리되었습니다. Perry가 마침내 인트리(in-tree) 스위트의 모든 벤치마크에서 Node와 Bun을 모두 이기고 있다는 것이었죠. 사흘간의 작업과 GC + JSON 커밋의 백로그를 거친 후, Perry는 v0.5.306에 도달했습니다 — 즉 132개의 패치 릴리스입니다 — 그리고 이야기는 다른 것입니다. 헤드라인은 547배 속도 향상이나 새로운 승리 컬럼이 아닙니다. 그 승리들을 변호 가능하게(defensible)
From Compiler to Ecosystem: React, Databases, and Cloud Builds
· ecosystem · perry/ui · databases일주일 전, Perry는 UI 툴킷을 갖춘 컴파일러였습니다. TypeScript를 작성하고, 네이티브 바이너리로 컴파일하고, 6개 플랫폼에 배포할 수 있었습니다. 그것이 이야기였습니다. 오늘 이야기는 더 커졌습니다: Perry는 에코시스템으로 진화하고 있습니다. 3개의 데이터베이스 ORM, 유니버설 푸시 알림, App Store와 Play Store 게시를 포함한 분산 빌드, React 호환 레이어, 그리고 자동화된 앱 검증 — 모두 지난 한 주 동안 출시되었습니다.
Cross-Platform Native UI from TypeScript
· architecture · UI · cross-platformPerry의 가장 야심찬 목표 중 하나는 단일 TypeScript 코드베이스에서 진정한 네이티브 GUI 애플리케이션을 제공하는 것입니다. 네이티브 셸로 감싼 웹 뷰가 아닙니다. 자체 픽셀을 그리는 커스텀 렌더링 엔진도 아닙니다. 각 플랫폼 고유의 UI 프레임워크가 렌더링하는 실제 네이티브 위젯을, 빌드 시점에 TypeScript에서 컴파일합니다.
Cross-Compile to Windows, iOS Game Loops, and 100% Test Parity
· compiler · cross-compilation · infrastructure이번 주 Perry 컴파일러에 103개의 커밋이 있었습니다. 주요 기능: Linux에서 Windows 실행 파일을 크로스 컴파일할 수 있게 되었고, iOS 앱에서 블로킹 게임 루프를 실행할 수 있으며, 컴파일러가 텔레메트리를 위한 크래시를 보고하고, 셀프 호스팅 컴파일러가 모든 결정론적 테스트를 통과합니다. 또한 주요 Hub 인프라 업그레이드와 50개 이상의 버그 수정이 포함되어 있습니다.
From Cranelift to LLVM: How Perry Got 24x Faster
· compilers · llvm · craneliftPerry의 Cranelift에서 LLVM으로의 백엔드 마이그레이션이 완료되었습니다. v0.5.12 기준으로 LLVM이 유일한 코드 생성 백엔드이며, Perry는 이제 모든 벤치마크에서 Node.js를 능가합니다. 그 차이는 1.7배에서 24.6배에 이릅니다(2개는 동점).
Compiling Hono, tRPC, and Strapi to Native Binaries
· compiler · frameworks · progressPerry는 이제 세 가지 주요 TypeScript 프레임워크 — Hono, tRPC, Strapi — 를 네이티브 ARM64 실행 파일로 컴파일합니다. 1초 미만으로 컴파일하고, 2 MB 미만의 바이너리를 생성하며, 크래시 없이 실행됩니다.
Building Pry: A Native JSON Viewer in TypeScript
· tutorial · showcase · PryPry는 TypeScript로 완전히 구축되고 Perry로 컴파일된 네이티브 JSON 뷰어입니다. 기술 데모가 아닙니다 — API 응답, 설정 파일, 데이터 덤프를 검사하는 데 매일 사용하는 실제 도구입니다. 이 글에서는 어떻게 구축되었고, 어떻게 컴파일되며, TypeScript가 네이티브 앱으로 컴파일될 때 개발 경험이 어떤지를 안내합니다.
All Six Platforms, Full Feature Parity
· UI · cross-platform · releasePerry의 네이티브 UI 시스템 첫 번째 버전을 출시했을 때, "크로스 플랫폼"이란 macOS가 잘 작동하고 나머지 5개 플랫폼은 스텁이라는 의미였습니다. v0.2.162인 오늘, 더 이상 그렇지 않습니다. 6개 플랫폼 모두 — macOS, iOS, iPadOS, Android, Linux, Windows — 가 완전한 기능 동등성을 공유합니다. 동일한 TypeScript 코드가 모든 타겟에서 네이티브 위젯으로 컴파일됩니다.