구글의 한 엔지니어가 공식 표준화 위원회에서 자바스크립트를 두 가지 언어로 분리하는 제안을 발표했습니다. 하나는 런타임 엔진이 구현하는 코어, 그리고 다른 하나는 이 코어로 컴파일되는 도구에 의존하는 확장된 변형 언어 부분입니다.
이 발표는 2024년 10월 초 ECMA TC39 회의에서 진행되었습니다. TC39는 자바스크립트(공식적으로는 ECMAScript)의 명세를 발전시키는 ECMA International의 위원회입니다.
발표는 JIT, VM, 컴파일러 및 표준화를 전문으로 하는 구글의 스태프 소프트웨어 엔지니어인 Shu-yu Guo가 진행하였으며, Guo가 Mozilla, Apple, Moddable 및 Sony의 다른 엔지니어와 함께 작성한 발표 자료를 사용했습니다. Moddable은 XS 자바스크립트 엔진을 포함하여 임베디드 프로그래밍에 오픈 소스 SDK를 제공하는 회사입니다.
제안자들은 새로운 언어 기능은 대부분 사용자에게 부정적인 영향을 미친다고 주장합니다. 새로운 기능은 "거의 항상" 보안을 악화시키고, 성능에는 "보통이거나 부정적인 영향을 미치며", 때때로 안정성이 악화되고, 앱 기능은 개발자가 새롭게 추가된 기능을 채택한 경우에만 개선될 수 있습니다.
그들은 자바스크립트 VM(가상머신)은 "빨라야 한다는 압박 때문에 이미 너무 복잡하다"며, 이로 인해 보안이 저하되는 문제가 발생하며 새로운 기능이 채택되지 않을 때는 "특히 더 심각하게 느껴진다"고 말합니다. 그들은 Symbol.species의 MDN 문서에서 이미 "엔진 개발자들이 이 기능을 제거하는 것을 고려 중"이라는 것을 보고한 사례와, BigInt를 예로 들며 큰 숫자 값을 다루기 위해 도입되었지만 "사용 사례가 실현되지 않았다"고 주장합니다.
제안서에 따르면 보안 측면의 결함과 런타임의 "복잡성 비용"은 수십억의 사용자에게 영향을 미치지만, 그 혜택은 이 복잡성을 유리하게 이용하는 개발자와 애플리케이션에만 국한되기 때문에 자바스크립트의 기반이 되는 기술은 간단해야 한다고 주장합니다.
여러 조직이 참여하고 있지만, 어느 정도는 구글에서 주도하는 것으로 보입니다. 한 발표 슬라이드에는 "이 솔루션은 구글이 선호하는 것이고, 반드시 다른 구현자의 솔루션은 아니다"라는 면책 조항을 포함하고 있습니다.
이 새로운 제안에 따르면 자바스크립트 개발자는 주로 컴파일러를 사용합니다 - 그러나 일부 개발자들은 이 모델로 부터 벗어나고 싶어 합니다
제안된 솔루션은 기존 기능을, 특히 이미 후반 단계에 있는 새 기능을 되돌리자는 것이 아니라, 대부분의 새로운 기능이 자바스크립트 엔진이 아닌 툴에 구현되도록 앞으로의 접근 방식을 바꾸는 것입니다. 엔진을 통해 구현된 언어는 "JS0"라고 하는 반면, 툴을 통해 구현된 언어는 "JSSugar"라고 합니다. 이 네이밍은 솔루션 제안을 위해 사용된 것이며 확정이 아닙니다.
이러한 툴을 사용하는 아이디어는 자바스크립트에 적합합니다. 많은 개발자들이 실제로 타입스크립트 코드를 작성하고, 자바스크립트 결과물을 도출하기 위해 Babel, Webpack 그리고 타입스크립트 컴파일러와 같은 컴파일러에 의존하기 때문입니다. 개발자의 관점에서 보면, 자바스크립트는 JSSugar이며, 런타임 엔진은 JS0만 구현하면 됩니다. 이는 툴 간에 더 높은 표준 준수성을 요구한다는 의미를 내포합니다.
만약 이 제안이 채택된다면, 앞으로 구문은 JSSugar에 추가되고, API와 엔진 제공 기능만 JS0에 추가됩니다. 호환 엔진은 JS0만 지원하면 됩니다. 대신 JSSugar를 지원하는 부담은 툴 구현자에게 전가되며, 이 부작용으로 툴 구현자가 표준화 프로세스에 더 적극적으로 참여해야하고, 아마도 새로운 기술 그룹을 구성해야 할 수도 있습니다.
이 제안은 이미 논란이 되고 있습니다. "자바스크립트 툴들에 공식적인 지위를 부여하지 말아주세요.. 저를 포함한 많은 자바스크립트 개발자들은 이러한 툴들에 더 의존하고 싶지 않습니다"라고 한 개발자가 말했습니다.
보안과 성능, 안정성을 우선시하는 것에 대해서는 일반적으로 동의하는 것 같지만, 자바스크립트를 특정 툴에 의존하도록 하는 의견은 큰 지지를 받지 못하고 있습니다. 다른 한 개발자는 다음과 같이 말했습니다. "삼가 자바스크립트의 명복을 빕니다."
좋은 글입니다