AI 요약
이 기사는 블룸버그(Bloomberg)의 시니어 소프트웨어 엔지니어 제이슨 윌리엄스가 자바스크립트의 고질적인 시간 처리 문제인 'Date' 객체를 대체하기 위해 추진해 온 'Temporal' 제안의 역사와 배경을 설명합니다. 1995년 당시 자바스크립트(당시 Mocha)의 창시자 브렌던 아이크는 극심한 시간 압박 속에서 자바의 Date 구현을 그대로 포팅(Porting)했으며, 이는 지난 수십 년간 개발자들에게 많은 불편을 초래했습니다. 블룸버그는 2018년 런던 TC39 회의 참여를 기점으로 Igalia와 협력하여 Promise.allSettled, BigInt 등 다양한 자바스크립트 표준화에 기여해 왔으며, Temporal은 그중 가장 혁신적인 프로젝트 중 하나입니다. Temporal은 기존의 가변성(Mutable) 문제를 해결하기 위해 불변(Immutable) 객체를 지향하며, 시간대와 달력을 기본적으로 지원하는 정밀한 API 설계를 목표로 합니다. 현재 이 제안은 TC39의 엄격한 단계별 검증 절차를 거치며 표준화의 막바지 단계에 다다랐습니다.
핵심 인사이트
- 역사적 배경: 자바스크립트의 Date는 1995년 켄 스미스가 자바의 코드를 C로 직접 포팅한 결과물이며, 당시 철학은 '자바처럼 보이게 만들기(MILLJ: Make It Look Like Java)'였습니다.
- 블룸버그의 기여: 2018년부터 TC39 위원회에 참여한 블룸버그는
Arrow Functions,Async Await,Promise.allSettled등 주요 기능의 표준화에 파트너사인 Igalia와 함께 기여했습니다. - Temporal의 시작: 2018년 Stage 1 단계에서 본격적으로 검토되기 시작한 Temporal은 기존 Date의 단일 API 구조를 탈피하고 현대적인 시간 처리 방식을 제안했습니다.
주요 디테일
- 불변성(Immutable): Temporal은 기존 Date와 달리 데이터를 직접 수정할 수 없는 불변 객체를 제공하여 예측 가능한 코딩을 지원합니다.
- 다양한 타입 지원: 단일 객체가 아닌 DateTime, TimeZone, Calendar 등 역할이 분리된 전용 타입을 제공하여 복잡성을 줄였습니다.
- 표준화 단계: TC39의 표준화 과정은 Stage 0(아이디어)부터 Stage 4(표준화)까지 총 6개 단계(2.7단계 포함)로 구성되어 철저한 피드백을 반영합니다.
- 기술적 부채 해결: 브렌던 아이크는 당시 자바와의 호환성을 중시했던 Sun Microsystems와의 관계 및 정치적 상황 때문에 API를 수정하기 어려웠음을 밝힌 바 있습니다.
- 기업 간 협력: 블룸버그는 사내 JavaScript 인프라 팀을 통해 전사 엔지니어들에게 안정적인 개발 환경을 제공하며 오픈소스 표준화에 앞장서고 있습니다.
향후 전망
- 라이브러리 대체: Temporal이 공식 표준으로 채택되면 Moment.js나 dayjs 등 외부 라이브러리 의존도가 대폭 낮아지고 네이티브 환경에서의 정밀한 시간 계산이 가능해질 것입니다.
- 금융 인프라 강화: 블룸버그와 같이 정밀한 시간 데이터 처리가 필수적인 금융 IT 환경에서 자바스크립트의 신뢰성이 한층 높아질 것으로 기대됩니다.
출처:hackernews
