4P by neo 13시간전 | ★ favorite | 댓글 2개
  • 최근 TC39 108차 회의에서 JavaScript의 미래를 이끌 9개 제안이 각 표준화 단계별로 진전됨
  • Stage 4(최종 승인) 에는 using, Array.fromAsync, Error.isError 등 개발 생산성 및 안전성을 높이는 기능이 포함됨
  • Stage 3~1에는 불변 ArrayBuffer, 시드 랜덤, clamp, NumberFormat 개선, Random 함수 등 다양한 유용 기능 제안이 논의 중임
  • Deno는 최신 표준 도입 및 실험에 적극적이며, 일부 기능은 이미 Deno와 최신 브라우저에서 사용 가능함
  • 향후 표준화 논의가 이어질 예정이며, JavaScript 생태계가 더 안전하고 간결하게 진화할 것으로 기대됨

TC39 최신 표준화 동향 및 JavaScript 주요 신기능

Stage 4: 공식 채택 예정 기능

명시적 리소스 관리(using)

  • using 선언문을 통해 파일, 네트워크 소켓 등 리소스 객체의 수명 종료 시 자동으로 정리 처리를 보장
  • C#·Python 등에서 영감 받은 구조로, 객체에 [Symbol.dispose]() 또는 [Symbol.asyncDispose]() 메서드를 구현해 블록 종료 시 호출
  • 예외 발생 시에도 자동 정리되어, 파일 핸들 등 자원 누수 위험 감소
  • Chrome 134, Firefox 134, Deno v2.3 등에서 이미 지원, Deno에서는 파일·소켓 등 실무에 즉시 활용 가능

Array.fromAsync

  • 비동기 iterable배열로 변환해주는 표준 메서드로, Promise를 반환
  • async generator 등에서 순차적으로 값을 수집, 최종적으로 배열 결과를 Promise로 얻음
  • 기존의 동기 Array.from과 사용법 유사하며, mapping 함수와 thisArg 지원
  • 모든 주요 브라우저, Node v22, Deno v1.38 이상에서 지원

Error.isError

  • 어떤 값이 진짜 Error 객체인지 간단하게 판별할 수 있는 내장 함수
  • cross-realm, 서브클래스 오류 등 복잡한 경우에도 신뢰성 있게 동작
  • Polyfill, 라이브러리 개발 시 신뢰도 향상

Stage 3: 불변 ArrayBuffer

Immutable ArrayBuffer

  • ArrayBuffer의 불변화를 지원하는 transferToImmutable(), sliceToImmutable() 메서드 추가 예정
  • 불변 buffer는 한 번 생성 후 수정·분리 불가, 스레드·워커 간 안전한 공유 및 성능 향상에 기여
  • Deno 등에서는 바이너리 데이터 처리시 불필요한 복사 없이 효율적으로 활용 가능

Stage 2: 신규 제안 기능

Random.Seeded

  • 시드 기반 PRNG(Random.Seeded(seed))로 반복 실행 간 동일한 난수 시퀀스 생성 가능
  • 게임·시뮬레이션 등 재현성이 중요한 영역에 유용
  • 기존 Math.random()과 달리 시드 지정 및 상태 복제 등 고급 기능 제공

Number.prototype.clamp

  • 수치 범위 제한 메서드로, 지정한 최소~최대값 구간으로 값을 자동 보정
  • 기존의 Math.min(Math.max(x, min), max) 패턴을 짧고 명확하게 대체

Stage 1: 초기 논의 제안

Keep Trailing Zeros

  • Intl.NumberFormat의 신규 옵션으로, 소수점 이하 0 유지/제거를 세밀하게 제어
  • 금액·고정 소수점 등 UI에서 원하는 표현력 강화

Comparisons

  • Node.js의 util.inspect와 비슷하게, 값의 사람 친화적 표기diff 출력 표준화 목표
  • 테스트 프레임워크, 콘솔 출력 등에서 일관성 제공

Random Functions

  • 신규 Random 네임스페이스 도입, 난수·샘플링·셔플 등 안전하고 간결한 랜덤 관련 함수 모음
  • 오프바이원 오류 방지 및 다양한 수집·샘플링 패턴을 직관적으로 지원

Deno와 JavaScript 생태계의 미래

  • Deno는 표준화 논의에 적극 참여하며 최신 기능을 실무에 신속히 반영하고 있음
  • 예) async context 전파, 내장 OpenTelemetry, 새로운 리소스 관리 패턴 등
  • 9월 이후 추가 TC39 회의에서 표준화 논의 지속 예정
  • JavaScript 개발자는 향후 더욱 강력하고 안전하며, 편리한 언어 환경을 경험할 수 있게 될 것

패턴 매칭은 언제 추가되려나요

stage 1에 signals가 있는데 정식 출시되려면 아직 멀은 듯 합니다.