Hacker News 의견
  • 작성자인 나임. 이 프로젝트가 소개된 걸 보니 정말 반가움
    @ivankra가 javascript-zoo에 추가하고 벤치마크를 돌려준 덕분에 감사한 마음임
    지난 3년 동안 완성도와 성능을 높이기 위해 꾸준히 시간을 들여온 취미 프로젝트였음
  • 간단히 비교하자면, 릴리스 빌드 기준으로 Boa는 23MB, Brimstone은 6.3MB 정도임
    Boa 수준의 기능을 채우고 프로덕션용으로 강화하면 크기가 커질 수도 있겠지만, 이 작은 크기로 97%의 스펙을 통과하는 건 꽤 인상적임
    • Boa는 내부에 Unicode 테이블을 포함하고 있음
      Brimstone은 그렇지 않아서 그게 크기 차이의 대부분을 차지함
      Unicode 처리를 제대로 하려면 수 MB의 데이터가 필요하기 때문에, 요즘은 작은 실행 파일을 만드는 게 쉽지 않음
      Unicode 지원이 필수라면 최소한의 크기 한계가 생김
    • 혹시 크기 최적화를 따로 적용했는지 궁금함
      기본 설정은 보통 성능 중심이라, codegen-units=1이나 panic 제거 같은 옵션을 바꾸면 결과가 달라질 수도 있음
    • 마지막 몇 퍼센트를 채우는 과정에서 크기가 불균형하게 커질 수도 있음
      Boa는 약 91%만 통과하니까, Brimstone이 더 완성도 높음
      소규모 프로젝트일수록 코드가 작고 깔끔하며 유지보수하기 쉬움
      협업에는 언제나 일정한 오버헤드가 따름
  • Boa와 비교해줄 수 있는지 궁금함
    Boa 저장소
    • 여기 벤치마크 결과를 보면, 1인 프로젝트치고는 놀라울 정도로 완성도가 높음
      기능은 Boa와 거의 비슷하고, 일부 벤치마크에서는 속도가 두 배 빠름
  • 왜 Rust로 작성된 프로젝트는 항상 “Rust로 작성됨”을 강조하는지 궁금함
    • 예전에 “Lisp로 작성됨”, “Ruby로 작성됨”, “JavaScript로 작성됨” 같은 시절도 있었음
      자연스러운 흐름이라 생각함
    • Rust는 (unsafe가 없다면) 특정 버그 클래스가 원천적으로 차단된다는 점에서 의미가 있음
      다만 이 프로젝트는 unsafe를 꽤 많이 쓴다고 함
    • Rust 생태계에 투자한 사람들에게는 새로운 프로젝트를 발견할 신호가 되기 때문임
    • Rust는 괜찮은 언어지만, JS/TS에서 넘어온 젊은 개발자들이 과하게 신봉하는 경향이 있음
      일종의 Blub 현상 같음
    • Rust는 메모리 할당과 타입을 명시적으로 다뤄야 해서 개발 난이도가 높지만, 그만큼 품질이 높은 소프트웨어가 많음
      결국 마케팅 요소이긴 하지만, 평균적으로 완성도가 높은 건 사실임
  • “Compacting garbage collector, written in very unsafe Rust”라는 문구가 너무 웃겼음
    • 주제와는 다르지만, 예전 cracktro 인트로가 그리움
      OS 부팅 전에 Ikari 인트로가 뜨는 걸 상상해봄
  • 기존 JS 엔진들과 비교하면 어떤지 궁금함
    • javascript-zoo의 벤치마크를 보면 대략적인 비교가 가능함
    • 이 엔진은 Rust 프로그램에 직접 임베드할 수 있음
      C/C++ 링크 없이 완전한 Rust 네이티브
      40MB짜리 단일 바이너리 서버에 JS 스크립팅을 추가할 수 있음
      Rust 기반 JS 엔진이 여러 개 생긴 건 정말 멋진 일임
  • Rust의 가장 큰 장점 중 하나가 메모리 안전성인데, 왜 굳이 unsafe GC를 썼는지 의문임
    • Rust에는 고성능 GC가 없으니, unsafe로 새로운 메모리 관리 체계를 구현하는 게 합리적임
      unsafe 영역을 최소화하면 괜찮다고 생각함
    • 사실 Vec 같은 표준 라이브러리조차 내부적으로 unsafe를 사용함
      중요한 건 unsafe를 작은 영역에 한정해 검증 가능하게 만드는 것임
      GC 구현은 그 예외적인 영역임
    • Rust의 unsafe조차 C++처럼 undefined behavior가 넓지 않음
      나라도 JS 런타임을 Rust로 만든다면, 우선 안전하게 구현하고 필요할 때만 unsafe를 쓸 것임
    • unsafe는 컴파일러가 이해하지 못하는 부분을 개발자가 직접 제어하기 위한 도구임
      고성능 GC를 구현하려면 어쩔 수 없이 필요한 부분임
    • 개인적으로는 Rust의 메모리 안전성 강조가 과장되었다고 느낌
      Rust는 그냥 빠르고 좋은 명령형 언어임
  • 라이선스가 보이지 않음
    • 실수였음. 이제 MIT 라이선스로 공개함
    • 기본적으로 대기업의 착취적 사용을 허용하지 않는 방향을 반기는 입장임
  • “Rust는 가비지 컬렉션 언어가 아니다”라는 점을 오해하는 댓글이 있었음
    • Rust는 GC 언어가 아님, RcArc를 쓸 때만 참조 카운팅이 적용됨