terminal
Weekly Digest // JS_FRAMEWORKS — Week 28-2026
codeWeekly Report

Bun을 Rust로 다시 쓰기 — 2026년 28주 자바스크립트

JS frameworks, React/Vue/Svelte, and runtime updates

calendar_todaysummarizeWeek 28-2026
런타임

Bun을 Rust로 다시 쓰기

2,200만 다운로드를 기록하는 JavaScript 런타임 Bun535,496줄의 Zig 코드베이스를 11일 만에 Rust로 재작성했습니다. 64개의 Claude 에이전트가 동시에 동적 워크플로를 실행하는 방식으로 진행되었으며, 배경에는 Zig의 수동 메모리 모델로는 근본적으로 해결하기 어려운 use-after-free, double-free, 메모리 누수 문제가 있었습니다. Rust의 borrow checker와 Drop trait이 자동 정리를 보장하여 v1.3.14에 존재하던 128개의 버그를 수정했습니다. Bun.build() 호출마다 3 MB씩 누수되던 문제는 이제 2,000번 실행 후에도 약 609 MB에서 안정화됩니다. 바이너리 크기는 Linux와 Windows에서 약 20% 감소했고, HTTP 처리량은 2~5% 향상되었습니다. API 토큰 비용은 약 16만 5천 달러로, 엔지니어 3명1년을 투자하는 대안보다 훨씬 경제적입니다. Bun v1.4.0이 Rust 포트를 탑재하며, v1.3.14는 마지막 Zig 릴리스입니다.

Bun을 Rust로 다시 쓰기
Read Articlearrow_forward
Video · 타입스크립트

React의 TypeScript — 전체 튜토리얼

freeCodeCamp의 Rachel Johnson 강사가 진행하는 이 튜토리얼은 'Assembly Endgame'이라는 실제 행맨 스타일 게임 프로젝트를 통해 React에서 TypeScript를 실전적으로 활용하는 방법을 다룹니다. Vite + TypeScript 프로젝트 스캐폴딩, useState 제네릭 타이핑(예: useState<string[]>), 임포트한 JSX.Element 타입으로 함수형 컴포넌트 반환값 타이핑, ComponentName + Props 명명 규칙을 사용한 커스텀 prop 타입 정의를 순서대로 학습합니다. 화살표 함수 문법을 이용한 함수 prop 타이핑, TypeScript의 Omit 유틸리티 타입으로 기존 타입의 부분 집합 도출, 모듈화된 타이핑을 위한 파일 간 타입 임포트 등 고급 패턴도 포함됩니다. GameStatus, LanguageChips, WordLetters, Keyboard 등 실제 컴포넌트에 대한 직접 실습 챌린지로 각 개념을 강화하며, 더 이상 권장하지 않는 React.FC 패턴 대신 명시적인 JSX.Element 어노테이션을 사용합니다.

AI_INFOGRAPHIC
React의 TypeScript — 전체 튜토리얼 — infographicWATCH_VIDEOarrow_forward
Article · 리액트READ TIME: 16m

React Compiler 해설

2025년 10월 7일 v1.0에 도달한 React Compiler는 빌드 타임에 컴포넌트를 자동으로 메모이제이션하는 Babel 플러그인으로, 소스 코드에서 useMemo, useCallback, React.memo를 직접 작성할 필요를 없앱니다. 컴파일러는 useMemo 호출 대신 내부 _c 훅을 기반으로 한 슬롯 방식의 캐시를 생성하며, 이는 렌더링마다 클로저와 의존성 배열을 할당하는 것보다 비용이 적습니다. JSX 엘리먼트 객체 자체를 캐싱하여 부모가 동일한 엘리먼트 참조를 React에 전달하면 memo 래퍼 없이도 전체 서브트리의 리렌더링을 건너뜁니다. Meta Quest Store는 최대 12% 빠른 페이지 로드를, Sanity는 1,411개 컴포넌트 중 1,231개에서 렌더 시간 20-30% 감소를, Wakelet은 LCP 2.6s → 2.4s, INP 275ms → 240ms 개선을 보고했습니다. Next.js 16+ 에서는 설정 한 줄, Expo SDK 54+에서는 기본값으로 활성화됩니다.

READ_FULL_LOGarrow_forward
Article · ECMAScriptREAD TIME: 5m

ECMAScript 2026의 새로운 기능

Ecma International2026년 6월 30일 ECMAScript 2026 사양을 공식 승인하며 7가지 기능이 추가되었습니다. Array.fromAsync는 비동기 이터레이터를 배열로 변환하는 정적 메서드로 Array.from의 비동기 버전입니다. Error.isErrorinstanceof Error보다 안전한 타입 확인 수단입니다. Math.sumPreciseArray.reduce 합산에서 발생하는 부동소수점 오차를 해결합니다. Uint8ArraytoBase64, toHex, fromBase64, fromHex 메서드를 기본 탑재하여 서드파티 인코딩 라이브러리 의존성을 제거합니다. Iterator.concat은 커스텀 제너레이터 없이 여러 이터레이터를 이어 붙입니다. JSON.parse의 reviver 콜백이 세 번째 인자로 원본 소스 텍스트를 받아 BigInt의 손실 없는 직렬화를 지원합니다. 마지막으로 MapWeakMapgetOrInsert 메서드가 추가되어 has-then-set 패턴을 대체합니다.

READ_FULL_LOGarrow_forward
Article · 타입스크립트READ TIME: 8m

TypeScript 7은 TypeScript로 작성되지 않았다

TypeScript 7은 TypeScript 컴파일러를 Go로 네이티브 포팅한 결과물로, 타입 시스템이나 언어 의미론을 변경하지 않고 약 10배의 처리량 향상을 달성했습니다. 팀이 Rust 대신 Go를 선택한 이유는 TypeScript의 내부 자료구조인 AST, 심볼 테이블, 타입 관계가 순환 참조로 가득 차 있어 Rust의 소유권 모델과 충돌하기 때문입니다. Go의 가비지 컬렉터와 고루틴 덕분에 전면 재설계 없이 충실한 포팅이 가능했습니다. Anders Hejlsberg는 Go를 네이티브 출력, 데이터 레이아웃 제어, 순환 자료구조를 모두 지원하는 가장 저수준의 언어로 묘사했습니다. VS Code 타입 체킹은 17.5초에서 1.3초로, Slack CI 타입 체킹은 7.5분에서 2분 이하로 단축되었으며, 언어 서버의 실패 명령 수는 80% 감소했습니다. 마이그레이션은 TypeScript 6.0을 거쳐야 하며, @typescript/typescript6 호환 패키지로 모노레포 점진적 전환이 가능합니다. Vue, Svelte, Astro, Angular가 필요로 하는 프로그래매틱 컴파일러 API는 TypeScript 7.1에서 제공될 예정입니다.

READ_FULL_LOGarrow_forward
Article · 개발 도구READ TIME: 4m

Tales from the Void: 2026년 6월 돌아보기

VoidZero의 2026년 6월 월간 요약에서는 Vite+의 베타 출시가 주요 소식입니다. Vite+는 Vite, Vitest, Rolldown, tsdown, Oxlint, Oxfmt를 vp dev, vp test, vp build 등 단일 CLI로 통합한 웹 툴체인으로, 알파 이후 12개 이상의 버전을 출시하고 500개 이상의 PR을 병합했으며 1,300개 이상의 공개 저장소에서 의존하고 있습니다. Vite 8.1은 개발 서버 시작 속도를 높이는 실험적 번들 개발 모드를 도입했습니다. Rolldown은 진단 렌더링 성능을 개선하고 .vue.svelte 파일에서 tsconfig.path 별칭 해석을 지원합니다. Oxc 변환기는 약 2.5% 빨라졌고 Oxlint는 Rust 기반 React Compiler lint 규칙을 실험적으로 지원합니다. 커뮤니티 소식으로는 Astro 7.0의 Vite 8 탑재, Next.js 호환 Vite 프레임워크 Vinext의 첫 베타 공개, ViteConf 202610월 15일 온라인 개최 확정이 있습니다.

READ_FULL_LOGarrow_forward
Article · 개발 도구READ TIME: 9m

Knip으로 미사용·Ghost Dependency 찾기

미사용 의존성은 코드에서 더 이상 임포트하지 않는데도 package.json에 남아 있는 패키지이고, 고스트(팬텀) 의존성은 소스 코드에서 임포트하지만 선언하지 않은 패키지로 다른 패키지의 전이적 설치가 node_modules에 호이스팅해줘서 우연히 동작합니다. 두 가지 모두 의존성 그래프를 오염시키고 공급망 공격 표면을 넓히며 빌드를 불안정하게 만듭니다. Knip은 진입점, 임포트, 익스포트, 매니페스트, 워크스페이스 경계 등 저장소 전체를 분석하여 ESLint 같은 파일 단위 도구가 놓치는 두 종류의 문제를 모두 발견하는 프로젝트 수준의 린터입니다. npx knip --include unlisted로 고스트 의존성을, --include dependencies로 미사용 의존성을 확인할 수 있으며, --fix로 피처 브랜치에서 제거를 적용합니다. CI에서는 고스트 의존성을 블로킹으로, 미사용 의존성을 권고(--no-exit-code)로 처리하면 점진적 도입이 가능합니다. --production 모드는 테스트 및 개발 전용 노이즈를 걸러내 프로덕션 분석을 강화합니다.

READ_FULL_LOGarrow_forward
Article · Node.jsREAD TIME: 8m

Node.js 26.5.0(현재 버전)

Node.js 26.5.0은 새로운 릴리스 관리자 Stewart X Addison과 함께 SEMVER-MINOR 추가 5개를 탑재합니다. buffer 모듈에 Blob에서 텍스트를 스트리밍하는 blob.textStream()이 추가되었고, ESM 로더에는 텍스트 파일을 ES 모듈로 임포트하는 --experimental-import-text 플래그가 도입되었습니다. perf_hooks 모듈은 이벤트 루프 반복당 지연을 샘플링하는 새 API를 지원하며, ReadableStreamTeestream 모듈에 노출되고 tls 모듈은 핸드셰이크 이후 협상된 TLS 그룹을 보고할 수 있습니다. 주요 수정 사항으로는 작은 차수의 EdDSA 포인트를 검증 시 거부하는 crypto 패치, 리터럴 IP 주소에 대해 dns.lookup을 건너뛰는 dgram 최적화, WHATWG 스트림 청크 오버헤드 감소, 다수의 VFS 버그 수정이 있습니다. undici 8.7.0, sqlite 3.53.3, nghttp3 1.17.0으로 의존성도 업데이트되었습니다.

READ_FULL_LOGarrow_forward
summarizeDigest_Summary

28주차는 두 가지 런타임 분야의 중요한 발표로 시작되었습니다. Bun v1.4.0535,496줄의 Zig 코드를 Rust로 완전히 재작성한 결과물을 탑재하고 출시되었습니다. 64개의 Claude 에이전트를 동시에 활용해 11일 만에 완료한 이 작업은 v1.3.14의 버그 128개를 수정하고, 호출당 3 MB씩 누수되던 Bun.build() 문제를 해결했으며, 바이너리 크기를 약 20% 줄이고 HTTP 처리량을 2~5% 향상시켰습니다. 총 API 토큰 비용은 약 16만 5천 달러로, 엔지니어 3명1년을 투자하는 대안에 비해 훨씬 경제적이었습니다. 별도로, TypeScript 7이 컴파일러를 Go로 네이티브 포팅한 결과물로 출시되어 약 10배의 처리량 향상을 달성했습니다. VS Code 타입 체킹은 17.5초에서 1.3초로, Slack CI 타입 체킹은 7.5분에서 2분 이하로 단축되었고, 언어 서버 오류는 80% 감소했습니다. Rust가 아닌 Go를 선택한 이유는 TypeScript의 AST와 심볼 테이블이 순환 참조로 가득 차 있어 Rust의 소유권 모델과 맞지 않기 때문이었습니다.

언어 및 도구 분야에서는 Ecma International6월 30일 ECMAScript 2026을 공식 승인하며 일곱 가지 기능(Array.fromAsync, Error.isError, Math.sumPrecise, Uint8Array base64/hex 메서드, Iterator.concat, JSON.parse raw-source reviver, Map/WeakMap.getOrInsert)이 추가되었습니다. React Compiler v1.0useMemo 래퍼 대신 슬롯 기반 _c 훅을 사용하여 실제 프로덕션 성과를 도출했습니다. Meta Quest Store는 페이지 로드 최대 12% 향상, Sanity는 렌더 시간 20~30% 감소, Wakelet은 LCP를 2.6초에서 2.4초로 개선했습니다. VoidZero의 Vite+ 툴체인은 베타에 진입해 Vite, Vitest, Rolldown, Oxlint, Oxfmt를 단일 CLI로 통합했습니다. Node.js 26.5.0blob.textStream(), --experimental-import-text ESM 플래그, 소차수 EdDSA 포인트를 거부하는 crypto 패치를 추가했습니다.

의존성 관리도 주요 주제로 떠올랐습니다. Knip 린터는 ESLint 같은 파일 단위 도구가 놓치는 미사용 의존성과 고스트(팬텀) 의존성을 프로젝트 수준에서 모두 발견할 수 있는 도구로 주목받았습니다. --production 모드와 CI 친화적인 --no-exit-code 플래그는 단계적 적용 경로를 제공합니다.

Key Takeaways
  • Bun v1.4.0은 Zig에서 Rust로의 전면 재작성으로 128개의 버그를 수정하고 바이너리 크기를 약 20% 줄였습니다. Claude 에이전트 API 토큰 비용 약 165천 달러로, 엔지니어 3명1년 작업을 대체했습니다.
  • TypeScript 7의 Go 포팅은 컴파일 속도를 약 10배 향상시켜 VS Code 타입 체킹을 17.5초에서 1.3초로 단축합니다. 마이그레이션은 TypeScript 6.0을 거쳐야 하며, Vue/Svelte/Astro/Angular의 프로그래매틱 API는 7.1에서 제공됩니다.
  • ECMAScript 2026이 공식 승인되었습니다. Math.sumPrecise, Uint8Array의 네이티브 base64/hex 인코딩, Map.getOrInsert 등 7가지 기능이 추가되어 일반적인 서드파티 유틸리티 패턴을 표준으로 대체합니다.