곧 우리는 마침내 JavaScript를 ShadowRealm으로 추방할 수 있게 된다
JavaScript의 단일 스레드 특성을 넘어, TC39에서 제안한 ShadowRealms API는 코드 격리를 위한 새로운 개념을 소개했습니다.
ShadowRealm은 독립된 글로벌 환경과 내장 객체를 가지지만, 별도의 실행 스레드는 없고 기존 스레드 내에서 코드가 실행됩니다.
이를 통해 기존의 다중 스레드 통신 한계 없이, 외부 전역 객체나 다른 Realm과 간섭 없이 코드를 안전하게 분리할 수 있습니다.
ShadowRealm 내에서 실행된 코드는 외부 Realm에 영향을 주지 않으며, 반대로 외부 코드도 ShadowRealm 내부 상태에 직접 접근할 수 없습니다.
제안된 API는 evaluate와 importValue 두 가지 메서드로 구성되어, 동적으로 코드를 평가하거나 모듈을 불러올 수 있습니다.
현재 이 제안은 TC39 Stage 2.7 단계로, 표준화 및 브라우저 구현 전이며 향후 변경 가능성이 존재합니다.
ShadowRealms는 전역 범위 오염 문제를 해결하고, 안전한 코드 실행 환경을 제공하는 새로운 방식으로 주목받고 있습니다.
향후 이 기능이 도입되면 JavaScript 애플리케이션의 모듈화와 보안성이 크게 향상될 전망입니다.
