Node.js에서의 해시 플러딩 취약점에 대해…
올해 7월 초, Node.js는 해시 플러딩 취약점을 해결하기 위해 현재 유지되고 있는 모든 브랜치에 대해 보안 업데이트를 발표했습니다. 이 중간 수정은 상당한 시작 성능 저하를 대가로 합니다. 한편, V8은 성능 페널티를 피하는 해결책을 구현했습니다.
올해 7월 초, Node.js는 해시 플러딩 취약점을 해결하기 위해 현재 유지되고 있는 모든 브랜치에 대해 보안 업데이트를 발표했습니다. 이 중간 수정은 상당한 시작 성능 저하를 대가로 합니다. 한편, V8은 성능 페널티를 피하는 해결책을 구현했습니다.
오늘 우리는 Chrome v59의 안정 버전에 도달할 V8 v5.9에 대한 새로운 JavaScript 실행 파이프라인 출시를 발표하게 되어 기쁩니다. 새 파이프라인을 통해 실제 JavaScript 애플리케이션에서 대규모 성능 향상과 상당한 메모리 절약을 이룰 수 있습니다. 이 게시물 끝부분에서 숫자에 대해 자세히 논의하겠지만 먼저 파이프라인 자체를 살펴보겠습니다.
JavaScript 벤치마크의 역사는 지속적인 진화의 이야기입니다. 웹이 단순한 문서에서 동적 클라이언트 측 애플리케이션으로 확장되면서, 새로운 JavaScript 벤치마크가 새로운 사용 사례를 위한 중요한 작업 부하를 측정하기 위해 만들어졌습니다. 이러한 지속적인 변화로 인해 개별 벤치마크의 수명이 제한됩니다. 웹 브라우저와 가상 머신(VM) 구현이 특정 테스트 케이스를 과도하게 최적화하기 시작하면 벤치마크 자체는 원래 사용 사례에 대한 효과적인 대리 역할을 하지 못하게 됩니다. 초기 JavaScript 벤치마크 중 하나인 SunSpider는 빠른 최적화 컴파일러를 제공하기 위한 초기 유인을 제공했습니다. 그러나 VM 엔지니어들이 미세 벤치마크의 한계를 발견하고 SunSpider의 제한을 최적화 방법을 찾으면서 브라우저 커뮤니티는 SunSpider를 은퇴시켰습니다.
for
-in
은 많은 프레임워크에서 널리 사용되는 언어 기능입니다. 그 보편성에도 불구하고, 구현 관점에서는 비교적 모호한 언어 구조 중 하나입니다. V8은 이 기능을 가능한 한 빠르게 만들기 위해 많은 노력을 기울였습니다. 지난 1년 동안, for
-in
은 완전히 사양을 준수하게 되었고 문맥에 따라 최대 3배 빨라졌습니다.
V8 팀은 현재 실제 JavaScript 성능에 개선을 가져올 수 있는 새로운 기본 컴파일러 파이프라인을 개발 중입니다. Chrome Canary에서 새로운 파이프라인을 오늘 미리 경험하여 모든 Chrome 채널에 새로운 설정을 배포할 때 예상치 못한 문제가 없는지 확인하는 데 도움을 줄 수 있습니다.