타입은 그대로다: TypeScript 7이 Go로 이식된 이유

Microsoft는 2026년 7월 8일 TypeScript 7.0을 Go 네이티브 포트로 올렸고, 공식 표는 전체 빌드가 보통 8–12배 빨라진다고 했다. 타입과 구조는 그대로 두고 속도를 바꿨지만 프로그램 API는 7.1까지 없으며, 8월 22일 GitHub Daily에서 microsoft/TypeScript가 6위에 다시 앉았다.

타입은 그대로다: TypeScript 7이 Go로 이식된 이유

핵심 요약 (TL;DR)

타입은 그대로다: TypeScript 7이 Go로 이식된 이유

Microsoft는 2026년 7월 8일 TypeScript 공식 블로그 Announcing TypeScript 7.0을 올렸다. 글쓴이는 Daniel Rosenwasser, Principal Product Manager. 부제는 a 10x faster native port of TypeScript다. 이 글은 GitHub Daily 톱10 라운드업이 아니다. 8월 22일 트렌딩에서 microsoft/TypeScript가 6위에 다시 앉은 날을 계기로, 7.0 포트를 따로 읽는다.

Announcing TypeScript 7.0 공식 히어로
공식 글 히어로. Announcing TypeScript 7.0. 출처: TypeScript 공식 블로그

컴파일러는 소스 코드를 실행 가능한 형태로 바꾸는 프로그램이다. TypeScript 7은 그 컴파일러를 Go로 옮긴 네이티브 포트다. 네이티브 바이너리는 JS 런타임 없이 CPU가 바로 실행하는 기계어 파일이다. 공식 글은 구조와 논리를 가능한 한 그대로 두고, 네이티브 속도와 공유 메모리 멀티스레드를 얹었다고 적는다. 전체 빌드에서 보통 8배에서 12배 빠르다고 한다. 이 글이 다시 잰 값이 아니다.

설치는 공식 글의 한 줄은 npm install -D typescript다. 워크스페이스에 새 tsc 실행 파일이 들어온다. 편집기는 LSP를 탄다. LSP는 Language Server Protocol이다. 편집기가 오류 표시와 자동완성 같은 언어 기능을 별도 서버에 맡기는 표준이다. VS Code는 TypeScript 7 전용 확장이 있다. Visual Studio는 워크스페이스를 보고 7을 켠다고 적는다.

공식 표의 전체 빌드는 vscode 125.7초에서 10.6초(11.9배), sentry 139.8초에서 15.7초(8.9배), bluesky 24.3초에서 2.8초(8.7배), playwright 12.8초에서 1.47초(8.7배), tldraw 11.2초에서 1.46초(7.7배)다. 메모리는 vscode 5.2GB에서 4.2GB(18퍼센트 감소), sentry 6퍼센트 감소, bluesky 26퍼센트 감소, playwright 11퍼센트 감소, tldraw 15퍼센트 감소다. VS Code 코드베이스에서 오류 있는 파일을 열면 첫 오류가 17.5초에서 1.3초 미만으로 줄어든다. 약 13배다.

7.0은 프로그램 API를 싣지 않는다. 7.1에 새롭고 다른 API를 기대한다고 적는다. 그전까지 typescript-eslint 같은 도구는 6.0이 필요하다. 호환 패키지 @typescript/typescript6가 tsc6과 6.0 API 재수출을 준다. Vue, MDX, Astro, Svelte, Angular 임베디드 도구도 같은 이유로 당분간 6.0에 남는다.

배경 및 맥락

공식 글의 첫 약속은 스케일이다. TypeScript는 처음부터 JavaScript that scales를 걸었다. 작년 팀이 다음 단계로 올린 것은 도구 전체를 한 자릿수 배 빠르게 만드는 일이었다. 미션은 Go로 짠 네이티브 포트다. 현대 하드웨어를 쓰겠다는 문장이다. 포트를 가능한 한 충실하게 했다고 적는다. 새 코드를 쓰되 원래 코드베이스의 구조와 논리를 유지한다. 두 컴파일러의 결과를 맞추기 위해서다. 차이는 네이티브 속도, 공유 메모리 멀티스레드, 새 최적화다.

미리보기는 @typescript/native-preview였다. 공식 글은 주간 다운로드가 850만 건을 넘었다고 적는다. 7.0부터 나이틀리는 표준 typescript 패키지의 next 태그로 돌아간다고 한다. 실험이 패키지 이름을 바꿔 들어간 자리가 아니라, 같은 tsc로 들어온 자리다.

8월 22일 GitHub Daily 트렌딩에서 microsoft/TypeScript는 6위였다. 페이지가 주 언어를 Go로 표시했다. 오늘 스타는 65, 누적은 110445, 포크는 13746이었다. 그 숫자는 그날 트렌딩 페이지 값이다. 7월 8일 공지가 한 달 반 뒤에 다시 보드에 앉은 것이다. 이 글은 그 라운드업을 다시 쓰지 않는다. 포트 자체를 읽는다.

공식 글이 그리는 하루는 편집기를 열고, 파일을 열고, find-all-references를 돌리고, 자동완성과 빨간 줄을 보고, tsc를 돌리는 루프다. 괄호 안에 and more recently, perhaps an AI agent가 있다. 사람이든 에이전트든 같은 tsc를 친다는 문장이다. 빠른 TypeScript는 그 루프의 대기만 줄인다고 한다. 새 타입 체계를 약속하는 글이 아니다.

주요 내용 분석

표가 속도의 상품이다

공식 글은 큰 오픈소스 코드베이스에서 TypeScript 6과 7의 전체 빌드를 나란히 둔다. 기본 checkers는 4다. checkers는 타입 검사 워커 수다.

코드베이스TypeScript 6TypeScript 7배속출처
vscode125.7초10.6초11.9배공식 글 표
sentry139.8초15.7초8.9배공식 글 표
bluesky24.3초2.8초8.7배공식 글 표
playwright12.8초1.47초8.7배공식 글 표
tldraw11.2초1.46초7.7배공식 글 표

표의 배속은 7.7에서 11.9다. 10배는 제목의 자리이고, 본문 표는 코드베이스마다 갈린다. vscode가 가장 크고, tldraw가 가장 작다. 공식 차트는 줄 수도 같이 적는다. vscode 2.3M, sentry 1.9M, bluesky 628K, playwright 528K, tldraw 345K LoC다. 큰 저장소에서 배속이 더 크게 열린다. 작은 저장소도 7배 아래로 떨어지지는 않는다. 이 글이 재현하지 않는다.

Compile Times Between TypeScript 6 and 7
공식 속도 차트. 주황이 6, 파랑이 7. vscode 11.9배에서 tldraw 7.7배. 출처: TypeScript 공식 블로그

메모리는 속도를 산 대가가 아니다. 공식 글은 전체 빌드 구간의 합산 메모리가 보통 더 적다고 적는다.

코드베이스TypeScript 6TypeScript 7증감출처
vscode5.2GB4.2GB18퍼센트 감소공식 글 표
sentry4.9GB4.6GB6퍼센트 감소공식 글 표
bluesky1.8GB1.3GB26퍼센트 감소공식 글 표
playwright1.0GB0.9GB11퍼센트 감소공식 글 표
tldraw0.6GB0.5GB15퍼센트 감소공식 글 표
Aggregate Memory Usage in TypeScript 6 and 7
공식 메모리 차트. bluesky 26퍼센트 감소가 가장 크고, sentry 6퍼센트 감소가 가장 작다. 출처: TypeScript 공식 블로그

전체 빌드만의 이야기가 아니다. 같은 컴퓨터에서 VS Code 코드베이스의 오류 파일을 열면, 편집기를 연 뒤 첫 오류까지 예전 약 17.5초, 지금은 1.3초 미만이다. 공식 글은 13배가 넘는다고 적는다. CI 숫자와 편집기 숫자가 한 포트의 두 칸이다.

워커를 늘리면 표가 다시 열린다

7.0은 파싱, 타입 검사, 방출을 병렬로 돌린다. 파싱과 방출은 파일 단위로 거의 독립이다. 타입 검사는 파일이 같은 의존과 전역을 나눠 가진다. 워커를 완전히 따로 돌리면 계산과 메모리가 낭비된다. 반대로 순서에 기대는 정보가 있어서, 처음부터 검사할 때는 같은 파일을 같은 순서로 봐야 결과가 같다. 그래서 고정된 수의 타입 검사 워커가 자기 세계관을 가진다. 같은 입력이면 파일을 항상 같이 나눈다.

기본은 4다. checkers 플래그로 바꾼다. 공식 글은 같은 기계에서 checkers 8을 다시 잰다. vscode 7.51초(16.7배), sentry 12.08초(11.6배), bluesky 2.01초(12.1배), playwright 1.16초(11배), tldraw 1.06초(10.6배). 코어를 더 주면 배속이 커진다. 메모리는 같이 커진다고 못 박는다. CI처럼 코어와 메모리가 적은 곳에서는 숫자를 낮추라고 한다. checkers 1이면 타입 검사가 사실상 단일 스레드다.

builders 플래그는 프로젝트 참조를 병렬로 빌드하는 수다. build 모드 아래의 모노레포 칸이다. checkers와 곱해진다. 4와 4면 타입 검사기가 최대 16개다. 과할 수 있다고 적는다. singleThreaded 플래그는 병렬을 끈다. 디버깅, 6과 7 비교, 바깥에서 병렬을 조율할 때, 자원이 매우 적은 환경용이다.

API가 없는 7이다

속도 표와 같이 읽어야 하는 칸이 이것이다. 7.0은 API를 싣지 않는다. 공식 글은 7.1에 새롭고 다른 API를 기대한다고 적는다. typescript-eslint처럼 컴파일러에 프로그램으로 붙는 유틸은 그동안 6.0이 필요하다. 호환 패키지는 @typescript/typescript6다. 실행 파일 이름은 tsc6이다. 7의 tsc와 이름이 안 겹친다. 패키지는 6.0 API도 다시 수출한다.

typescript-eslint는 typescript를 피어 의존으로 직접 가져온다. 공식 글은 레지스트리 별칭을 권한다. typescript를 @typescript/typescript6에 붙이면 tsc6만 남는다. 7의 tsc를 같이 쓰려면 @typescript/native를 7 줄에 별칭한다. 공식 예제의 버전 구간은 7.0.2와 6.0.2다.

임베디드 언어도 같은 벽에 선다. Vue, MDX, Astro, Svelte, Angular 템플릿은 7을 아직 못 탄다고 적는다. Volar 같은 도구가 TypeScript를 자기 컴파일러 안에 넣기 때문이다. 안정 프로그램 API가 없다. 시점의 문제이고, 유지관리자와 같이 풀겠다고 한다. 그전까지 VS Code에서는 Disable TypeScript 7 Language Server로 6.0으로 되돌린다. Angular는 CLI의 tsc는 7, 편집기는 6.0을 섞으라고 한다.

7.0은 6.0의 타입 검사와 명령줄 동작과 맞춘다고 적는다. stableTypeOrdering을 켜고 ignoreDeprecations를 안 켠 채 6.0에서 깨끗이 컴파일되는 코드는 7.0에서도 같아야 한다. 동시에 6.0의 새 기본값을 받아들이고, 6.0에서 폐기된 플래그와 구문은 하드 에러가 된다. strict 기본 true, module 기본 esnext, target은 esnext 직전 안정 ECMAScript. 가장 놀랄 칸으로 rootDir과 types를 고른다. rootDir은 이제 현재 폴더가 기본이고, types는 빈 배열이 기본이다. 6.0을 먼저 받으라고 한다. 이 글은 폐기 목록을 전부 다시 적지 않는다. 공식 글과 CHANGES.md가 그 표다.

실사용자 반응

공식 글이 이름을 올린 파트너는 Bloomberg, Canva, Figma, Google, Lattice, Linear, Miro, Notion, Sentry, Slack, Vanta, Vercel, VoidZero 등이다. 내부는 Loop, Office, PowerBI, Teams, Xbox다. 인용은 회사가 팀에 전한 말이다. 독립 측정이 아니다. 이 글은 공식 페이지에 적힌 숫자만 옮긴다.

Slack 엔지니어는 머지 큐 시간의 40퍼센트가 없어졌고, CI 타입 검사가 약 7.5분에서 1.25분이 되었다고 했다. 로컬 편집기는 언어 서버 로딩 때문에 거의 unusable이었고, 전체 타입 검사는 CI에 맡겼다. 7은 같은 코드베이스를 몇 초에 올리고 로컬 타입 검사를 다시 가능하게 했다고 한다. Canva는 편집기에서 첫 오류까지 약 58초에서 약 4.8초라고 했다. Microsoft News Services는 CI를 기다리던 시간을 한 달에 400시간 줄였다고 했다.

Vanta는 가장 큰 프로젝트 하나에서 최대 9배라고 했다. PowerBI는 에디터 경험을 life-saving이라고 했고, rename이 VS Code에 들어오기 전에도 기본으로 썼다고 한다. Loop 모노레포는 예전 편집기를 unusable, 7을 amazing이라고 했다.

안정성 숫자도 공식 데이터다. 새 언어 서버는 TypeScript 6.0 대비 실패하는 언어 서버 명령을 80퍼센트 넘게 줄이고, 서버 크래시를 60퍼센트 넘게 줄였다. 미리보기의 크래시를 이 글이 다시 세지 않는다. 팀이 보고한 7.0 대비다.

공개 토론의 중심은 Hacker News다. 공식 글 스레드 item 48833715다. 제출자는 DanRosenwasser. 이 글을 확인하는 2026-08-23 아침(한국 시간) 기준 720점, 댓글 301이다. 점수는 관심이지, 점수의 합의가 아니다.

첫 댓글 m3h는 공식 속도 표를 옮기고, 책임 있는 마이그레이션을 해냈다고 축하한다. 괄호 안에 Bun을 둔다. 같은 가지에서 tsdown과 esbuild가 7과 같이 쓰이는지를 묻는다. Rosenwasser는 esbuild는 TypeScript에 의존하지 않는다고 답한다. tsdown은 isolatedDeclarations를 안 쓰면 6을 옆에 깔라고 한다. 그 안내는 블로그에 있다고 적는다. paulddraper는 공식 글의 Vue, MDX, Astro, Svelte, Angular 문장을 그대로 붙인다. API 없는 7이 HN에서도 같은 칸이다.

InfoQ는 공식 블로그 댓글을 옮긴다. webpack 로더를 쓰는 프로젝트는 7.0에 로더가 붙을 API 표면이 없어 7.1을 기다린다는 글이다. 벤더 인용이 아니다. 도구 체인이 6에 묶인 사람의 문장이다. 공식 글이 별칭으로 열어 둔 길과, 로더가 아직 못 들어가는 길이 같이 있다.

같은 스레드의 다른 가지는 타입 논쟁과 Bun 이식 비교로 길다. 그 가지는 7.0 포트의 숫자가 아니다. 이 글은 그 가지를 다시 쓰지 않는다. 오늘 읽을 칸은 속도 표와 API 공백과, 이름이 올라간 팀의 인용이다.

의미와 시사점

오늘 글이 새로 깐 칸은 언어 문법이 아니다. 타입은 그대로 두고 실행 층을 바꿨다는 칸이다. 충실한 포트라는 문장이 제목이다. 구조와 논리를 유지했기 때문에 6에서 깨끗이 도는 코드는 7에서도 같아야 한다. 속도는 네이티브 바이너리와 공유 메모리 스레드가 연다. 새 타입을 배우라는 글이 아니다. 같은 타입을 더 빨리 검사하라는 글이다.

그 속도의 값이 CI에만 있지 않다. Slack은 로컬이 불가능해서 CI에 검사를 맡겼다고 했다. 7이 로컬을 다시 열었다. Canva의 58초에서 4.8초와 VS Code의 17.5초에서 1.3초 미만이 같은 층이다. 공식 글이 에이전트를 괄호에 넣은 이유도 여기다. 에이전트가 tsc를 치는 루프에서, 대기 시간이 루프 길이를 가른다. 그 문장은 공식 글의 문장이다. 에이전트 벤치마크가 아니다.

실무자가 가져갈 경계는 셋이다. 첫째, 8배에서 12배는 공식 전체 빌드 표다. checkers 8이면 vscode는 16.7배다. 기본 4와 8을 한 줄로 평균 내지 않는다. 둘째, 7.0은 API가 없다. typescript-eslint, Volar, webpack 로더는 6.0 별칭이 기본 경로다. 속도만 보고 typescript를 7로 갈아끼우면 그 도구가 먼저 멈춘다. 셋째, LSP 크래시 60퍼센트 감소와 실패 명령 80퍼센트 감소는 6.0 대비 공식 데이터다. 미리보기 패키지를 쓰던 팀의 체감과 7.0 안정판의 보고를 같은 숫자로 읽지 않는다.

8월 22일 트렌딩 6위는 공지의 재방송이다. 오늘 스타 65는 같은 날 1위 스킬 레포의 3362보다 작다. 그래도 주 언어가 Go로 바뀐 대형 도구 저장소가 보드에 앉았다. 포트가 끝난 뒤에도 저장소가 다시 보이는 이유는 속도 표가 아니라, API가 아직 다음 버전이라는 미완의 칸이다. 7.1이 그 칸을 닫는다고 팀이 적는다. 그 전까지 할 일은 이름 외우기가 아니다. tsc와 tsc6을 같은 lockfile에 적어 두는 일이다.

마치며

Microsoft는 7월 8일 TypeScript 7.0을 올렸다. Go로 옮긴 네이티브 포트. 구조와 논리는 그대로, 속도는 네이티브와 멀티스레드. 공식 표는 vscode 125.7초에서 10.6초, 전체 빌드 보통 8배에서 12배, 오류 파일 17.5초에서 1.3초 미만이다. 설치는 같은 typescript 패키지다. 편집기는 LSP, VS Code는 전용 확장이다.

Slack은 머지 큐 40퍼센트 감소와 CI 7.5분에서 1.25분, Canva는 첫 오류 58초에서 4.8초, News Services는 한 달 400시간을 공식 글에 남겼다. LSP 크래시 60퍼센트 감소, 실패 명령 80퍼센트 감소도 공식 데이터다. 7.0은 프로그램 API를 안 싣는다. 7.1을 기다린다. 그사이 @typescript/typescript6가 6.0을 옆에 둔다. HN은 720점이다. 8월 22일 GitHub Daily는 이 저장소를 6위에 다시 올렸다. 다음으로 확인할 것은 수사다. 7.1 API가 언제 열리고, Volar와 typescript-eslint가 그 API에 붙는지. 그 전까지 할 일은 타입을 새로 배우는 일이 아니다. 같은 타입을 어느 tsc로 돌릴지를 lockfile에 적는 일이다.

출처

이 글은 AI가 작성하여 자동 발행된 콘텐츠입니다.