Inside ECMAScript: JavaScript Standard Gets an Extra Stage

https://thenewstack.io/inside-ecmascript-javascript-standard-gets-an-extra-stage/

GN

  • TC39 위원회가 자바스크립트 업데이트 프로세스를 더 빠르고 원활하게 만들기 위해 새로운 스테이지 "2.7"을 추가함
  • 업데이트 배경
    • ECMAScript 2015 이후 자바스크립트는 매년 새로운 업데이트를 받음
    • TC39 위원회는 언어의 개선을 위해 표준화 작업에 큰 노력을 기울였음
    • 새로운 기능의 철저한 설계, 테스트, 구현을 보장하기 위해 다단계 프로세스를 도입함

품질과 호환성을 위한 단계별 프로세스

  • Stage 0: 새로운 기능 아이디어 탐구 및 문제 정의
  • Stage 1: 명확한 설명과 잠재적 이슈를 포함, 기능의 유용성을 설명하는 리포지토리와 "챔피언"이 있어야 함
  • Stage 2: 명세에 대한 초기 설계 Draft. 위원회는 해당 기능이 언어의 일부가 될 것으로 기대함
  • Stage 3: 후보 제안으로 거의 기능이 완료되었지만 브라우저나 서버 측 런타임에서의 구현을 통해 실제 경험이 필요함
  • Stage 4: 명세에 대한 모든 작업이 완료되었으며 전체 언어 명세에 포함될 준비가 되었음을 의미함. 최종 승인 단계

명시적 마일스톤으로서의 테스트

  • 원래의 프로세스에서는 Stage 3에 도달하면 테스트를 다시 작성해야 하는 경우가 있었음
  • 이는 설계를 변경해야 하는 경우 특히 큰 제안에 대해 Stage 3로 돌아가는 것보다 Stage 2로 돌아가는 것이 더 고통스러웠음
  • 테스트 작성은 상당한 작업량이 필요하므로 두 번 수행해야 하는 경우 단계 간 이동이 의도한 것보다 고통스러워짐
  • 새로운 Stage 2.7은 테스트 단계를 구현에서 분리하기 위해 도입됨

Stage 2.7의 요구사항

  • "원칙적으로" 승인되었지만 검증이 필요함
  • 테스트 작성은 기능 설계의 모든 결과를 고려할 수 있는 가장 좋은 방법 중 하나임. 일부 기능은 설계가 완료되기 전에도 테스트 작성이 필요할 수 있음
  • 전체 테스트 모음과 프로토타입을 개발하고 구현할 수 있음을 보여주는 충분한 경험을 얻어야 함
  • 기능 명세에 대한 텍스트가 완성되어 있으며, TC39 위원회는 테스트, 구현 및 사용을 통해 발생하는 변경 사항 외에는 변경을 요구하지 않음
  • Stage 2.7은 불필요한 중복 작업을 줄이고, 제안서가 스테이지 3으로 바로 넘어갈 수 있게 도움
  • Stage 3은 이제 구현 경험을 얻고 웹 호환성 또는 통합 문제를 발견하는 것에 관한 것임

Stage 2.7의 실제 적용

  • TC39 위원회는 Stage 2.7을 추가할 때 기존의 모든 Stage 3 제안을 검토했으며, 일부 프로젝트는 모든 테스트를 체크인하지 않았지만 준비가 거의 완료되어 Stage 3로 유지됨
  • 지연된 가져오기 제안(deferred import)과 Math.sumPrecise 메서드와 같은 몇 가지 제안이 이미 Stage 2.7에 도달함
  • 정규 표현식 내에서 문자열 이스케이프를 지원하는 Regexp.escape은 Stage 2.7에 도달했으며 테스트 모음과 함께 Stage 3로 이동함
  • 반면에 "microwaits" 제안(현재 atomics.pause로 명명됨)은 유용한 테스트를 작성하기 어려운 것으로, Stage 2.7로 최근 이동했으며 구현을 위한 명세에 어떤 참고 사항을 넣을지에 대한 논의가 대부분이었음