AI 요약
자바스크립트 런타임 'Bun'의 개발사인 Oven의 창립자 자레드 서머너(Jarred Sumner)가 웹킷(WebKit)의 자바스크립트 엔진인 '자바스크립트코어(JavaScriptCore, JSC)'에 공유 메모리 스레드를 추가하는 혁신적인 풀 리퀘스트(PR)를 제출했습니다. 이번 제안의 핵심은 기존 웹 워커(Web Worker)의 한계를 극복하고, 별도의 메시지 전송(Message Passing)이나 구조화된 복제(Structured Clone) 없이 동일한 힙(Heap) 메모리 내에서 객체를 직접 공유하는 new Thread(fn) API의 도입입니다. 이 기술은 글로벌 락(Global Lock) 없이 4단계의 JIT 컴파일러 레이어 전체에서 자바스크립트를 병렬로 실행할 수 있게 하며, 현재 관련 테스트 스위트를 통과한 상태입니다. 개발자는 복잡한 번들러 설정이나 블롭(Blob) URL 생성 없이, 외부 변수나 임포트된 모듈을 그대로 참조하는 실제 '클로저(Closure)'를 다른 스레드에서 직접 실행할 수 있습니다. 비록 아직 상용화 전 단계이고 웹킷 메인스트림에 최종 병합되지 않을 가능성도 존재하지만, 이 시도는 자바스크립트의 고성능 멀티스레딩 프로그래밍 패러다임을 완전히 바꿀 수 있는 잠재력을 지니고 있습니다.
핵심 인사이트
- 자레드 서머너(Jarred Sumner)의 제안 (2026년 6월 6일): Bun의 제작자인 자레드 서머너가 WebKit 공식 포크 저장소(
oven-sh/WebKit)에 자바스크립트코어(JSC) 성능 향상을 위한 공유 메모리 스레드 지원 PR을 제출했습니다. - 글로벌 락 없는 병렬 실행: 4개의 모든 JIT(Just-In-Time) 컴파일러 티어에서 글로벌 락(Global Lock) 없이 병렬로 자바스크립트가 실행되는 아키텍처를 구현했습니다.
- 동일 힙(Heap) 내 객체 공유: 기존
SharedArrayBuffer방식의 한계를 넘어, 데이터 복사나 직렬화 과정 없이 하나의 힙 메모리 안에서 객체를 직접 공유하여 통신 비용을 제로화합니다. - 진정한 클로저(Closure) 스레딩: 다른 코어(Core)에서 실행되는 스레드 함수가 자신이 선언된 스코프의 변수, 클래스, 임포트된 모듈을 그대로 인지하고 참조할 수 있습니다.
주요 디테일
- 단순하고 강력한 API 디자인:
const t = new Thread(fn, x, y)형태로 호출하며, 동기식 대기를 위한t.join()과 비동기 프라미스 반환을 위한await t.asyncJoin()을 지원합니다. 호출된 스레드에서 발생한 에러는 실제 에러 객체와 스택 트레이스를 그대로 호출 스레드로 재던집니다(Rethrow). - 원자적 연산(Atomics) 지원: 일반 자바스크립트 객체의 프로퍼티에 원자적 연산을 수행할 수 있어, 다중 스레드가 동기화 문제없이 안전하게 카운터(
Atomics.add(next, "i", 1)) 등을 조작하며 데이터를 처리할 수 있습니다. - 개발자 경험(DX)의 혁신적 개선: 코드를 문자열로 변환해 임시 Blob으로 만들고
onmessage이벤트 핸들러를 덕테이프로 붙여야 했던 기존 웹 워커(Web Worker)의 번거롭고 깨지기 쉬운 우회 로직을 완벽히 대체합니다. - 아직 해결해야 할 기술적 과제: 현재 스레드 테스트 스위트는 통과했으나, 스레드 새니타이저(Thread-sanitizer) 정리, 퍼징(Fuzzing) 테스트 수행, 특정 벤치마크 오버헤드 해결 및 장기 안정성 검증(Soak Test) 단계가 남아 있습니다.
- 하위 호환성 유지: 공유 스레드 기능이 비활성화되거나 락이 걸린 폴백(Fallback) 모드 환경에서도 기존 시스템이 문제없이 검증되고 작동하도록 설계되었습니다.
향후 전망
- 자바스크립트 고성능 연산의 대중화: 이미지/비디오 처리, 인공지능(AI) 추론, 대규모 데이터 트랜스포메이션 등 복잡한 CPU 집약적 연산을 브라우저와 서버 자바스크립트 환경에서 네이티브 언어(C++, Rust 등) 수준의 효율로 작성할 수 있게 될 것입니다.
- 엔진 진화 압박 및 웹 표준 변화 유도: 만약 이 기술이 WebKit 생태계에 성공적으로 안착한다면, 구글 V8(Node.js, Chrome) 및 모질라 스파이더몽키(Firefox) 진영 역시 진정한 멀티스레딩 지원을 위한 아키텍처 개편 압박을 강하게 받게 될 것입니다.
