본문으로 건너뛰기

TC39 규격 제정 프로세스

무료2020-06-27#JS#ES4规范#TC39的39是什么#JavaScript语言规范#JavaScript语言标准#JS新特性Stage

TC39, ECMAScript 와 JavaScript 는 어떤 관계가 있는가?

一.JavaScript 의 탄생

1995 년 5 월, Brendan Eich 라는 사람이 10 일 만에 JavaScript 를 창조했습니다

二.JavaScript 언어의 표준화

최초 JavaScript 언어에는 2 개의 표준이 있었습니다:

  • ECMA-262: 주 표준.ECMA 국제 조직 (Ecma International) 이 관리를 담당

  • ISO/IEC 16262: 제 2 표준.국제표준화기구 (ISO, International Organization for Standardization) 와 국제전기기술위원회 (IEC, International Electrotechnical Commission) 가 관리를 담당

상표 저작권의 이유로, 규격 표준 중에서는 이 언어를 ECMAScript 라고 부릅니다. 따라서원칙적으로 JavaScript 와 ECMAScript 는 같은 것을 가리킵니다가, 때로는 구분하기도 합니다:

  • JavaScript: 언어와 그 구현을 가리킴

  • ECMAScript: 언어 표준 및 언어 버전을 가리킴.예를 들어 ES6 은 언어 (표준) 의 제 6 버전을 나타냄

P.S.ECMAScript 중의 ECMA 는 주 표준을 관리하는 ECMA 국제 조직에서 취한 것으로, 이 조직은 당초 유럽 컴퓨터 제조업체 협회 (European Computer Manufacturers Association) 라고 불렸지만, 후에 영향 범위가 유럽에 한정되지 않게 되어, ECMA 국제 조직 (Ecma International) 으로 개명되었습니다

三.ES 규격 버전 이력

  • ECMAScript 1(1997 년 6 월): 규격 제 1 판

  • ECMAScript 2(1998 년 6 월): ISO 표준과 동기화하기 위해, 몇 가지 소규모 업데이트를 도입

  • ECMAScript 3(1999 년 12 월): 정규식, 문자열 처리, 제어문 (do-while, switch), 예외 처리 (try-catch) 등 많은 핵심 특성을 추가

  • ECMAScript 4(2008 년 7 월 폐지): 본래 대규모 업그레이드 (정적 타입, 모듈, 네임스페이스 등) 였지만, 도약이 너무 커서 의견 차이가 발생했고, 최종적으로 보급 사용되지 못함

  • ECMAScript 5(2009 년 12 월): 변화는 크지 않았으며, 몇 가지 표준 라이브러리 특성과 엄격 모드를 추가

  • ECMAScript 5.1(2011 년 6 월): 또 한 번의 소규모 업데이트.ISO 표준과 동기화하기 위해

  • [ECMAScript 6](/articles/es6 学习笔记 13 篇/)(2015 년 6 월):一大波의 업데이트.당년 ES4 의 많은 구상을 실현했고, 공식적으로 연도로 규격 버전을 명명하도록 변경

  • ECMAScript 2016(2016 년 6 월): 첫 번째 연도 버전.ES6 과 비교하여, 릴리스 사이클이 짧고, 새 특성도 상대적으로 적음

  • ECMAScript 2017(2017 년 6 월): 두 번째 연도 버전

  • 이후의 ECMAScript 버전 (ES2018, ES2019, ES2020 등) 은 모두 6 월에 공식적으로 비준生效

四.TC39 표준 제정 프로세스

ES6 에서 보면, 릴리스 사이클이 너무 길어서 2 가지 문제가 존재했습니다:

  • 버전 간의 시간 간격이 너무 김.조기에 확정된 특성은 매우 긴 시간을 기다려야 하며, 규격이 공식적으로 릴리스될 때까지 (구현和使用할 수 없음), 후반의 특성은 종종 최종 릴리스 기한 직전에야ようやく 확정되며, 리스크가 존재함

  • 언어 특성의 설계와 구현和使用가 격리가 너무 김.구현和使用 단계가 되어야 비로소 설계 결함을 발견하면 늦음

이를 위해, TC39(ECMA 국제 조직 제 39 호 기술 위원회) 는 새로운 프로세스를 시작했습니다:

P.S.ECMA 국제 조직에는 많은 기술 위원회가 설치되어 있으며, TC39 ECMAScript 외에, TC43 Universal 3D (U3D), TC45 Office Open XML Formats 등이 있습니다.상세는 Ecma template for minutes - Ecma International 참조

주요 변화는:

  • ECMAScript 의 각 특성은 독립적으로 설계되며, 5 개의 단계를 거쳐, Stage 0(Strawman, 초고) 에서 시작하여, Stage 1(제안), Stage 2(초안), Stage 3(후보 제안) �� 거쳐, 마지막으로 Stage 4(Finished, 심사 통과 제안) 에서 종료

  • 후반의 몇 가지 단계에서 프로토타입 구현과 실제 테스트를 수행할 것을 요구 (Test 262 가 담당).설계와 구현 사이에 피드백 루프를 형성하기 위해

  • ECMAScript 는 매년 1 판을 릴리스하며, 최종 릴리스日期之前에 모두 제 4 단계에 들어간 모든 특성을囊括

따라서, ES2016 부터 (새로운 TC39 프로세스 시행 이후), ES 버전의 개념은 대폭으로弱化되었습니다.관심을 가져야 하는 것은 특성 제안이 제幾단계에 있는지로, 제 4 단계에 들어가면 이미 표준 특성으로 간주되며, 다음 6 월에 공식적으로 표준에 편입됩니다

P.S.TC39 프로세스 문서 에 따르면, 매년 7 월에 릴리스해야 합니다:

July: Approval of new standard by the ECMA General Assembly

하지만 실제 릴리스 시간은 매년 6 월입니다.역사상의那些 6 월에 릴리스된 원로 버전을 기념하기 위한 것일 수 있습니다

五.후방 호환 원칙

ES 규격의 각 판은 항상 완전히 이전의 모든 특성과 호환성이 있다는 것을 알 수 있습니다.예를 들어 ES6 은 let, const 를 제안했지만 var 를 삭제하지 않았습니다.이는 호환성이 없는新版本을推出하면, 몇 가지 문제를 일으키기 때문입니다:

  • JavaScript 엔진, IDE, 구축 도구는 모두 팽창합니다.신구 2 판의 규격을 지원해야 하기 때문

  • 개발자는 버전 간의 차이를 알아야 함

  • 기존의 코드를 모두新版本으로 이전하거나, (다른 프로젝트) 여러 버전을 혼용하는 중 하나로, 리팩토링이 매우 번거로워짐

  • 甚至 각段코드 의 소속 버전을标注할 필요가 있음.ES5 가 수동으로 엄격 모드를开启하는 것과 같으며, 당시 유행하지 않았던 하나의 이유는 파일 또는 함수의 선頭に 디렉티브를 추가하는 것도 번거로웠기 때문

이러한 문제를 회피하기 위해, ES6 은One JavaScript라는 전략을 채택했습니다:

-新版本은 항상 완전히 후방 호환 (다만 때때로 경미하고 눈에 띄지 않는 클린업이 있을 수 있음)

-旧특성은 삭제도 수정도 하지 않으며, 더 좋은 버전을 도입.예를 들어 letvar 의 개선판

  • 언어의某些方面에 변화가 있는 경우, 새로운 구문 구조 내에서만生效.즉 암묵적으로 선택.예를 들어, yieldgenerator 중에서만 키워드, 모듈과 클래스 중의 모든 코드는 기본적으로 엄격 모드를开启

참고 자료

댓글

아직 댓글이 없습니다

댓글 작성