▲GN⁺ 2024-11-19 | parent | ★ favorite | on: Nova - Rust로 작성된 JavaScript & WebAssembly 엔진 (github.com/trynova)Hacker News 의견 아키텍처적 선택에 대한 논의는 흥미롭지만, 대부분의 사람들은 비교할 수 있는 맥락이 부족함. V8의 아키텍처와 비교했을 때 어떤 이점이 있는지 이해하기 어려움 Lisp 인터프리터와 같은 프로젝트에 대해 생각해본 적이 있으며, 몇 가지 주요 이점을 식별했음 균일한 할당은 정렬 간격이 없음을 의미함 가비지 컬렉션에서 선형 접근의 이점 포인터보다 작은 인덱스 타입에 따라 구분된 인덱스는 크기를 절약할 수 있음 V8과의 비교는 즉시 하지 않아도 됨. V8은 수십억 달러 규모의 프로젝트임 Fabrice Bellard의 JS 엔진을 참고하면 좋을 것 같음 V8의 데이터 할당 방식 모든 데이터는 여러 힙 부분 중 하나에 할당됨 힙 참조는 실제 포인터이거나 포인터 압축을 사용할 경우 힙 베이스에서의 오프셋임 V8의 객체는 필요한 모든 데이터를 포함하며, 대부분 단일 할당에 저장됨 데이터 지향 설계는 데이터 접근 방식을 아는 것에 의해 주도됨. 일반적인 데이터 접근이 동일한 타입의 객체에 대한 선형 접근이라고 가정하는 이유가 궁금함 "숫자는 숫자 벡터로 들어간다"는 일반적이지 않음. JS 엔진은 보통 NaN-boxing이나 인라인 작은 정수를 사용함 NaN-boxing 사용을 고려해봤는지 궁금함. 타입별 벡터는 GC에 의해 압축되는지, 아니면 자유 목록을 유지하는지 궁금함 "Don’t Stop the BIBOP: Flexible and Efficient Storage Management for Dynamically Typed Languages"를 읽어볼 것을 추천함 이 JS 엔진이 실험적인 것인지, ECMAscript 사양 전체를 구현하려는 것인지 궁금함 Rust Boa 프로젝트를 팔로우하고 있지만, 아직 프로덕션 준비가 되지 않았다고 생각함 데이터 지향 접근 방식과 타입별 벡터는 V8과 같은 전통적인 아키텍처와 상당히 다름 실제 시나리오에서의 성능: 복잡하고 비선형적인 데이터 접근 패턴을 포함한 시나리오에서 Nova를 V8이나 SpiderMonkey와 비교한 벤치마크가 있는지 궁금함 가비지 컬렉션에서의 트레이드오프: 벡터 성장과 압축이 메모리 단편화나 성능 병목 현상을 초래할 수 있는지 궁금함 특정 응용 프로그램 프로파일을 염두에 두고 있는지 궁금함 게임에 스크립팅 엔진을 내장하는 데 유용할 수 있음 "kind-specific vectors"에서 "kind"라는 단어의 의미가 궁금함 function X(a) { this.a = a; }와 function Y(b) { this.b = b; }가 다른 종류의 객체로 간주되는지 궁금함 리터럴로 객체를 생성할 때 {a: 1}과 {b: 2}가 다른 종류의 객체로 간주되는지 궁금함
Hacker News 의견
function X(a) { this.a = a; }와function Y(b) { this.b = b; }가 다른 종류의 객체로 간주되는지 궁금함{a: 1}과{b: 2}가 다른 종류의 객체로 간주되는지 궁금함