애플 웹킷 브라우저 엔진에 쓰이는 자바스크립트 엔진인 '자바스크립트코어(JavaScriptCore)'가 업그레이드됐다. 메모리 효율성과 타입 안정성을 개선하는 새 바이트코드 형식이 추가됐다.
새 형식의 장점은 지난 21일 웹킷 팀의 공고를 통해 알려졌다. 메모리 소비를 줄이고 바이트코드를 디스크에 캐시되도록 하는 것이 핵심이다. 웹킷 팀은 새 포맷이 평균적으로 메모리를 50% 더 적게 사용한다고 설명했다. 페이스북이나 레딧 등 자바스크립트를 많이 쓰는 웹사이트의 경우 전체적으로 10% 정도 메모리 소비가 줄어들게 된다. 이번 새 포맷의 가장 큰 변화는 다음 2가지다.
- 이제 단절된 실행 인코딩은 사라지게 된다. 이것은 곧 바이트코드가 다이렉트 쓰레드될 필요가 없음을 의미한다. 기존에는 명령 주소를 디스크에 저장할 수 없어 해야 했지만, 이제 프로그램별로 실행할 수 있게 됐다.
- 명령을 한정적으로 혹은 넓게 인코딩해 저장과 실행에 모두 적합한 단일 포맷을 만들 수 있게 됐다. 한정적인 명령을 이용하면 옵코드(opcode)와 오퍼랜즈(operands)가 각각 1바이트를 차지한다. 넓은 명령은 특별한 싱글 바이트 옵코드인 op_wide로 구성된다. 기존 옵코드와 그 인수용 4바이트 슬롯 이후에 연속적으로 이어진다.
또한 새 바이트코드는 메타데이터 테이블을 지원한다. 링크할 경우 사이드 테이블이 일정한 명령과 함께 작성할 수 있는 데이터로 초기화된다. 또한 바이트코드 관련 인프라를 개선해 타입 안정성을 강화했다. 새 바이트코드용 캐시 API는 웹킷 리포에서 개발 단계로 올라와 있다. 개발자 누구나 bugs.webkit.org에서 참여해 공헌할 수 있다.
그동안 이 프로젝트는 낡은 바이트코드 형식 관련해서 크게 2가지 문제를 해결하는 데 집중해 왔다. 너무 많은 메모리를 사용하는 것이 첫 번째였고 두 번째는 작성 가능한 명령 스트림을 추가하는 것이다. 이번 업그레이드로 바이크코드 스트림에 대한 메모리 매핑을 방지할 수 있다. 또한 기존의 바이트코드 형식도 최적화돼 다이렉트 쓰레딩 같은 이익도 없어졌다.
새 바이트코드 형식은 사파리 12.1 브라우저부터 사용할 수 있다. 이미 iOS 12.1과 맥OS 10.14.4, 사파리 테크놀로지 프리뷰에서 제공하는 버전이다. 사파리 테크놀로지 프리뷰는 webkit.org에서 다운로드할 수 있다. ciokr@idg.co.kr
원문보기:
http://www.ciokorea.com/news/125061#csidx6c23fbbf9fc86478d3e4072b109c992
'프로그램개발 > ClientSide(JavaScript,Angular,Vue)' 카테고리의 다른 글
"웹 기술로 데스크톱 앱을 빠르게 개발"··· 오픈소스 툴 쿼크 등장 (0) | 2019.07.25 |
---|---|
페이스북, Hermes, Android에서 React Native 앱 실행가능한 오픈소스 엔진 출시 (0) | 2019.07.17 |
2019년과 이후 JavaScript의 동향 - WebAssembly (0) | 2019.06.26 |
새로운 프론트엔드 프로임워크 Svelte (0) | 2019.06.07 |
제이쿼리를 대체하는 자바스크립트 라이브러리 3가지 (0) | 2019.05.10 |