마이크로소프트, 타입스크립트 7.0 RC 공개...컴파일러 'Go'로 다시 짜 속도 10배 끌어올렸다
마이크로소프트가 6.0보다 약 10배 빠른 타입스크립트 7.0 RC를 공개했다.
[한국정보기술신문] 마이크로소프트(Microsoft)가 자사 프로그래밍 언어 '타입스크립트(TypeScript)' 7.0의 출시 후보(RC)를 현지시간 6월 18일 공개했다고 밝혔다. 회사는 이번 버전이 컴파일러의 바탕을 완전히 새로 만든 것이 핵심이며, 기존 6.0보다 흔히 약 10배 빠르다고 설명했다. 타입스크립트는 자바스크립트(JavaScript)에 자료의 형태를 미리 정해 두는 '타입(type)' 기능을 더한 프로그래밍 언어로, 큰 규모의 웹 프로그램을 안정적으로 만드는 데 널리 쓰인다. 출시 후보(RC·Release Candidate)는 정식 출시 직전 단계로, 큰 문제가 없으면 그대로 정식판이 되는 시험용 막바지 버전을 말한다.
컴파일러(compiler)는 사람이 작성한 프로그램을 컴퓨터가 실행할 수 있는 형태로 바꿔 주는 도구다. 타입스크립트로 짠 코드는 이 컴파일러를 거쳐 자바스크립트로 변환되며, 그 과정에서 타입이 어긋나지 않았는지 검사까지 맡는다. 코드가 커질수록 이 검사와 변환에 걸리는 시간이 늘어나기 때문에, 컴파일러의 속도는 개발자가 체감하는 작업 효율과 직결된다.

자바스크립트로 만든 컴파일러를 'Go'로 다시 짜
가장 큰 변화는 컴파일러를 만든 언어 자체를 바꾼 것이다. 그동안 타입스크립트 컴파일러는 타입스크립트로 작성돼 자바스크립트로 변환되는 구조였다. 마이크로소프트는 지난 1년에 걸쳐 이 코드를 구글이 만든 프로그래밍 언어 'Go(고)'로 옮겼다고 밝혔다. Go는 기계가 바로 실행하는 형태로 변환되는 데다 여러 작업을 동시에 처리하는 데 강점이 있어, 자바스크립트로 돌던 기존 방식보다 훨씬 빠르게 동작한다. 회사는 이렇게 기계어 수준의 실행 속도와 메모리 공유 병렬 처리를 결합해 약 10배의 속도를 얻었다고 설명했다. 병렬 처리란 하나의 일을 여러 갈래로 나눠 동시에 처리하는 방식을 말한다.
마이크로소프트는 코드를 처음부터 새로 작성한 것이 아니라 기존 구현을 그대로 옮겼다는 점을 강조했다. 이 때문에 타입을 검사하는 논리는 6.0과 구조적으로 동일하며, 개발자가 의지해 온 동작 방식이 그대로 유지된다는 것이다. 회사는 7.0이 10년간 쌓아 온 방대한 시험 묶음을 통과했고, 마이크로소프트 안팎의 수백만 줄짜리 코드베이스에서 이미 쓰이고 있다고 밝혔다. 코드베이스(codebase)는 한 프로그램이나 서비스를 이루는 소스코드 전체를 가리킨다.
새 컴파일러는 다른 버전과 마찬가지로 패키지 관리 도구 'npm(엔피엠)'에서 'typescript@rc' 형태로 내려받아 쓸 수 있다. 마이크로소프트는 블룸버그, 캔바, 피그마, 구글, 노션, 슬랙, 버셀 등 여러 회사와 1년 넘게 출시 전 버전을 함께 시험했으며, 빌드 시간이 크게 줄었다는 긍정적 반응이 많았다고 전했다. 빌드(build)는 작성한 코드를 실제 실행 가능한 프로그램으로 만들어 내는 과정을 말한다.
6.0과 나란히 쓸 수 있게...안정 API는 7.1로 미뤄
마이크로소프트는 7.0이 거의 실사용 가능한 수준이지만, 프로그램이 직접 불러 쓰는 안정적인 API는 7.1이 나오는 최소 몇 달 뒤에야 제공된다고 밝혔다. API는 한 프로그램이 다른 프로그램의 기능을 가져다 쓰도록 미리 정해 둔 약속을 말한다. 이에 따라 회사는 7.0과 기존 6.0을 충돌 없이 나란히 쓸 수 있게 하는 데 공을 들였다.
이를 위해 '@typescript/typescript6'라는 호환용 패키지를 새로 내놨다. 이 패키지는 'tsc6'라는 별도 실행 파일을 제공해, 7.0이 기본으로 쓰는 'tsc' 명령과 이름이 겹치지 않도록 했다. 일부 도구가 'typescript'라는 이름을 직접 불러 쓰는 점을 고려해, 마이크로소프트는 패키지 이름을 다르게 연결해 주는 'npm 별칭' 방식으로 두 버전을 함께 설치하도록 권장했다. 한편 정식 출시 전 매일 갱신되는 시험판(나이틀리)은 '@typescript/native-preview' 패키지로 계속 배포되며, 실행 파일 이름은 'tsgo'다.
병렬 처리와 새 파일 감시 기능 추가
7.0은 코드를 읽어들이고, 타입을 검사하고, 결과를 만들어 내는 여러 단계를 동시에 처리한다. 특히 타입 검사는 파일 간 의존 관계가 복잡해 단순히 나누기 어려운데, 7.0은 일정한 수의 검사 일꾼을 두어 같은 입력에는 항상 같은 결과가 나오도록 설계했다. 검사 일꾼 수는 기본 4개이며, 새로 추가된 '--checkers' 설정으로 조절할 수 있다. 일꾼을 늘리면 속도가 빨라지지만 메모리를 더 쓰게 되므로, 컴퓨터 성능에 맞춰 정하면 된다.
여러 프로젝트를 한꺼번에 처리하는 '--builders' 설정도 새로 생겼다. 이는 서로 연결된 여러 프로젝트를 한 저장소에 모아 두는 '모노레포(monorepo)' 환경에서 특히 쓸모가 있다. 반대로 모든 작업을 한 줄기로만 처리하도록 강제하는 '--singleThreaded' 설정도 추가됐다. 이 방식은 문제를 추적하거나 6.0과 성능을 비교할 때, 또는 자원이 매우 제한된 환경에서 유용하다.
파일이 바뀌면 자동으로 다시 컴파일해 주는 '--watch(워치)' 기능도 새로 만들었다. 마이크로소프트는 비주얼 스튜디오 코드(VS Code) 편집기가 오래 써 온 '파셀(Parcel)' 워처를 Go로 옮겨 와 이 기능의 바탕으로 삼았다고 밝혔다. 회사는 운영체제와 상관없이 파일 변화를 효율적이고 안정적으로 감시할 수 있게 됐다고 설명했다.
6.0 기본값 그대로...일부 옛 설정은 '오류' 처리
7.0은 6.0의 새 기본값을 그대로 받아들였다. 타입을 엄격하게 검사하는 'strict' 기능이 기본으로 켜지고, 코드 묶음 방식인 'module'의 기본값이 'esnext'로 정해지는 식이다. 동시에 6.0에서 사용을 권장하지 않게 된 옛 설정과 문법은 7.0에서 오류로 처리된다. 마이크로소프트는 이 가운데 소스 폴더 위치를 정하는 'rootDir'와 외부 타입 정의를 불러오는 'types' 설정의 변화가 가장 낯설 수 있다면서, 설정 파일에 해당 항목을 직접 적어 두면 쉽게 해결된다고 안내했다. 회사는 7.0으로 넘어가기 쉽도록 6.0을 먼저 도입할 것을 권했다.
이 밖에 문자열의 형태를 다루는 기능에서 이모지처럼 두 칸을 차지하던 특수 문자를 하나의 단위로 자연스럽게 처리하도록 바꿨고, 자바스크립트 파일을 분석하는 방식도 타입스크립트 파일과 더 일관되게 손봤다. 편집기 경험도 개선돼, 회사는 7.0에서 편집기 기능이 실패하는 경우가 6.0보다 20배 이상 줄었다고 밝혔다.
마이크로소프트는 한 달 안에 타입스크립트 7.0 정식판을 내놓는 것을 목표로, 그때까지 실제 프로젝트에서 써 본 사용자들의 의견을 받겠다고 밝혔다. 다만 이번 발표는 마이크로소프트가 자사 블로그를 통해 직접 알린 내용으로, 속도와 안정성에 관한 설명은 회사 측 발표에 근거한 것이다. 새 컴파일러가 실제 현장에서 얼마나 안정적으로 받아들여질지는 사용 사례가 쌓이면서 가려질 전망이다.
한국정보기술신문 정보기술분과 양한결 기자 news@kitpa.org











