Plush 인터프리터, Rust enum을 64비트 태그 값으로 바꿔 17% 가속

Plush 인터프리터, Rust enum을 64비트 태그 값으로 바꿔 17% 가속

  • Plush는 16바이트인 Rust Value enum을 u64 새 타입의 저비트 태깅 표현으로 교체해 인터프리터 성능을 17% 높였음
  • 기존 enum은 각 변형이 64비트 데이터와 작은 태그만 필요해도 정렬 제약 때문에 128비트를 차지했고, 값 배열에서는 그만큼 빈 공간이 누적됐음
  • 64비트 시스템의 힙 포인터는 보통 8바이트 정렬이라 하위 3비트가 0인 점을 이용해 포인터에 타입 정보를 넣고, 정수도 전체 64비트 범위가 드물다는 가정 아래 하위 비트를 태그로 사용함
  • 정수 태그를 0으로 두면 시프트한 정수의 덧셈과 뺄셈이 추가 언패킹 없이 일반 add, sub 명령으로 유지되지만, 부동소수점 인코딩과 디코딩에는 여러 비트 연산이 필요함
  • 작성자는 Claude와 함께 u64 기반 값 표현을 설계했고, 인터프리터 루프에서 자주 호출하는 접근 메서드 대부분에 항상 인라인을 지정했음

Hacker News opinions

비트 연산을 직접 다루는 쪽이 Rust enum보다 읽고 유지보수하기 훨씬 나쁜 것 아닌가?

인터프리터는 수정하는 시간보다 실행하는 시간이 훨씬 길잖아. 태그 비트도 복잡한 수준은 아니고, 실행 경로가 뜨거우면 기계 쪽 사정을 우선할 만함.

작성자가 편의 메서드로 추상을 다시 만들었으니 대부분의 코드는 내부 비트 조작을 몰라도 됨. Rust의 enum 추상이 모든 특수 사례에서 최적일 수는 없고, 여기서는 측정값으로 손해와 이득을 확인한 경우임.

레지스터 하나에 들어가야 한다는 요구를 정확성 조건에 넣으면, 소스 코드 인지 부담이 적다는 이유만으로는 선택할 수 없음.

뜨거운 경로의 고도 최적화 코드는 대체로 읽기 좋지 않음. 성능 때문에 유지보수성을 일부 포기할 때가 있음.

triomphe의 ArcUnion을 보고 64비트 union 전용 crate로 분리하는 방법도 있음. unsafe를 거기에 가두고 Miri로 검사하면 안전한 64비트 타입과 match를 함께 쓸 수 있는데, 포인터 provenance를 보존하는 조정 함수를 써야 함.

Rust 컴파일러가 이런 걸 자동으로 못 한다는 건 좀 씁쓸함. enum을 이런 비트 덩어리로 바꿔서 17%가 난다는 건 추상화 비용이 꽤 크다는 뜻처럼 보임.

컴파일러가 NaN boxing을 하려고 Float 변형에서 특정 비트 패턴을 금지해도 되는지부터 합의가 안 됨. 그런 의미 변경을 컴파일러가 멋대로 해서는 안 됨.

i64, f64, 여러 원시 포인터는 각각 64비트를 온전히 쓰니 64비트 합 타입에 마법처럼 같이 넣을 수 없음. 정렬 보장 포인터나 값 범위를 타입으로 표현하게 개선할 수는 있어도, 마스킹과 인코딩은 결국 개발자가 정해야 함.

제목은 컴파일러가 저수준 연산을 최적화하지 못했다는 얘기처럼 읽히지만, 실제로는 128비트 표현을 대부분 64비트에 담는 새 인코딩을 설계한 것임. 드문 값은 힙 할당과 포인터 간접 참조를 받아들였으니 컴파일러가 자동으로 찾아낼 종류의 최적화가 아님.

그래도 언어가 인코딩 스키마를 선언할 방법을 더 잘 제공한다면, 개발자가 raw u64를 직접 다루지 않고도 이 선택을 표현할 수는 있다고 봄.

정수 태그 비트를 0으로 두면 시프트된 정수끼리 덧셈과 뺄셈이 그대로 add, sub가 된다는 발상은 바로 써먹을 만함. OCaml도 63비트 정수를 씀.

17%가 전부 64비트 표현 덕분이라고 보기는 어려움. 새 add 구현은 흔한 경우를 먼저 검사하고 드문 경우를 별도 cold 함수로 보내는데, 예전 큰 match는 뜨거운 경로에서도 여러 분기를 거치는 형태임. 이 fast path는 enum에서도 적용할 수 있었고 성능에 크게 기여했을 듯함.

해커뉴스
빈 프롬프트가 가리는 AI 활용 가능성, 저자는 이를 발견 문제로 규정조슈아 갠스, AI를 '예측의 가격'으로 보는 미시경제학 오픈 액세스 책 출간10명 에이전트가 모노레포 계획 파일을 블랙보드처럼 써 항공 운항 장애 시스템을 4일 만에 구현미 법원, X의 TWITTER 표장은 유지하되 TWEET·새 로고는 포기 가능성 인정27.5KB WebGPU 모델로 문법 없이 75개 언어 소스에 하이라이트주곡률 해칭과 숨은선 처리를 조절하며 위상 곡면을 판화처럼 그리는 인터랙티브 웹 앱나무는 중력·빛 없이도 줄기 휨을 감지해 장력목으로 스스로 곧게 편다Plush 인터프리터, Rust enum을 64비트 태그 값으로 바꿔 17% 가속GrapheneOS의 저작권 폐지 주장에 HN, GPL 보호와 보호기간 단축을 두고 충돌OpenAI, 생성 지연 최대 50% 줄인 ChatGPT Images 2.5 발표ICML 논문: LLM은 무작위 결과를 반복 학습하며 가상 집단에도 새 사회적 편향을 만든다Inception, 초당 1,107토큰·260K 컨텍스트의 확산 LLM Mercury 2.5 출시브라우저에서 6억 파라미터 LLM의 토큰별 어텐션 합산값을 즉시 시각화하는 데모ESP32-C3 전자잉크 리더를 IPP 프린터로 만들어 맥의 인쇄 메뉴에서 직접 출력CH-53 블레이드 균열을 Sr-90 차폐막으로 비행 중 감시한 IBIS테런스 타오 "AI가 유망한 미해결 문제를 소진시켜 공개 연구를 위축시킬 수 있다"M5 Max 맥북 프로에서 SSD 4개로 Kimi K3 2.8T를 초당 1토큰 추론Qwen3.8 27B, 17GB 4비트 양자화가 Terminal-Bench에서 BF16과 동점코딩 에이전트의 장문 답변을 줄이는 'i-have-adhd' 스킬, GitHub 스타 2.88만 기록Copperhead, KiCad 설계를 에이전트 단계와 ERC·DRC 게이트로 관리하는 오픈소스 하드웨어 플랫폼 공개파라마운트, 워너브러더스 합병 반대 소송에 문자 동원 단체 활용 의혹미 국경순찰대 PITT, 금융 활동 분석 뒤 범죄 혐의 없는 운전자를 지방경찰에 넘겨 정차시켜Gamers Nexus: LG OLED TV, 인터넷을 끊고 대기 상태여도 음성 저장과 주변 Wi-Fi 정보 수집DaVinci Resolve 21.1, Claude·Codex 연동으로 미디어 정리와 일괄 렌더링 지원DeepMind, 인간 유전체의 90억 단일 염기 변이 예측값을 담은 1PB Atlas 공개OpenAI, 내부 AI가 나비에-스토크스 유한시간 특이점 증명했다고 발표LLM 도움 받은 Euler 발산 결과 공개, OpenAI 공로 주장 논란 제기Firefox만의 문제 아닌 reCAPTCHA 무한 루프, archive.is 설정과 Enterprise 할당량도 거론TradingAgents, 별 10.3만 개 속 실거래 성과 검증과 코드 결함 지적IE 조건부 주석부터 GeoURL까지, 웹 페이지에 남은 HTML 잔재 정리에이전트에게 TDD·형식 기법을 지시해도 Zstd 구현 정확도가 일관되게 좋아지지는 않는지 비교호주, 소셜 미디어 기본 피드에서 추천 알고리즘 선택권 의무화 초안 공개유럽 CDN 사용 기업 4만 4,143곳 중 89.6%가 Cloudflare 사용벽 속 PC 12대와 공유 이미지 부팅 20대로 만든 LAN 파티 하우스신규 독립 위키의 하위 문서가 Google 검색에서 최대 1년 사라지는 'Google Jail'미스트랄, 삼성 주도 시리즈 D로 €30억 조달… 기업가치 €210억 돌파의회도서관이 공개한 존 마골리스의 40년 미국 길가 건축 사진GLM 5.3 Flash 공개 뒤, 1년 안에 취약점 수정을 배포해야 한다는 경고시와 그림을 조각으로 맞추는 웹 퍼즐 'Jigsaw Haiku', 글자 테두리와 드래그 성능 피드백Emacs Bedrock 2.0, Emacs 31 전용 전환과 내장 기능 중심 기본 설정 갱신220만 종과 11개 분류 체계를 형질 오버레이로 탐색하는 Interactive Tree of LifeStuxnet 바이너리를 바탕으로 재구성한 GPLv3 소스 공개, HN에서는 정확성과 단일 파일 구조를 검증 중브로드컴, VMware VDDK 공개 다운로드 삭제로 가상머신 이전 도구 접근 차단D2 아키텍처 다이어그램용 자동 배치 알고리즘 TALA, MPL-2.0으로 공개1999년 Netscape가 신뢰한 E-Certify 512비트 RSA 루트 2개를 데스크톱에서 인수분해Jellyfin 12.0 출시, DB 마이그레이션과 전체 재스캔 전 백업 필수Dataflow 논문 저자들: 스트리밍 분석의 종착점은 트리거가 아니라 SQL 물질화 뷰와 신선도 계약루비듐 원자파의 자유낙하 위상이 아인슈타인 등가원리 예측과 일치NEC V20 마이크로코드 해독과 인텔 소송 기록NixOS 부트스트랩 시드의 GNU strip 하나로 최종 설치 이미지 거의 모든 바이너리를 감염시키는 Trusting Trust 공격보이저·갈릴레오·카시니가 바꾼 외태양계, 지하 바다를 지닌 얼음 천체 6곳Ladybird, 트위치 재생·DevTools JS 디버깅·세션 복원 추가하고 CSS 파싱과 페인팅을 Rust로 이전LA 현존 건물 110만 채를 건축 연도별로 재생하는 3D 지도작은 유닉스 파이프라인도 결합돼 있으면 단순하지 않다는 주장구글 딥마인드, 실시간 위성·관측소 입력으로 매시간 예보하는 WeatherNext 3 공개게이머스 넥서스, LG 스마트 TV 2억1600만대의 ACR 추적 기능 조사bzip3 벤치마크, zstd 창 크기·메모리 조건을 둘러싼 해커뉴스 논쟁칼텍, AI 크레딧 200만 달러 이상 걸고 40시간 연구수학 해커톤 개최벨기에 대중교통 지도, 실제 위치와 시간표 기반 추정 위치를 구분 표시비산 최소 설계는 Cornucopia, 실용 추천은 Nautilus인 소변기 연구창업가 저자 "AI가 인간보다 수백 배 빨라도 프로그래머는 손으로 코드를 쓸 것"EU 수리성 규정 1년, 스마트폰 2,334종 중 수리 정보 링크 등록은 18%네이선 필더, 복역 35일 전 엘리자베스 홈스를 174분 다큐로 촬영2주간의 느린 휴가에서 책 4권과 미적분을 택한 개발자의 디브레인롯 기록Gamers Nexus: LG TV, 대기 화면에서도 마이크 음성 저장하고 로컬 기기 스캔Cronodump가 읽지 못한 CronosPro DB를 스키마 복구와 파서 수정으로 CSV 변환TiVo, 무료 SkipMode를 11월 종료하고 광고 자동 건너뛰기 유료화 시험로스앨러모스 연구소 잉여 장비를 팔던 Black Hole, 2017년 폐업로봇 시각 디버깅을 LLM에 맡겼더니, 결국 사람이 스크린샷으로 오류를 지적하게 됨CTR_EL0 가로채기가 ARM64 폰을 멈춘 원인, 실행 코드 정렬과 메모리 속성 추적스위스 연방정부, 3,000대에서 Microsoft 365 대체 오픈소스 업무환경 병행 시험Ask HN: AI 에이전트 스킬 파일, 범용 프롬프트보다 조직별 지식과 반복 작업에 집중AI가 PianoDisc 자주연주 피아노 음원에서 MIDI와 더미 음표를 분석하자, 디코더 공개 가능성을 묻는 HN 글인터넷 아카이브, 9월 월 $25 이상 정기 기부 첫 회차 2:1 매칭으로 3배 지원짝 데이터 없이 임베딩 공간을 옮긴다는 논문, 벡터 DB 정보 유출 가능성 제기Vidact, React 함수 컴포넌트를 빌드 때 직접 DOM 갱신 코드로 컴파일Show HN: Proxy 상태 튜플로 기존 DOM을 반응형으로 묶는 약 80줄 라이브러리 MadorLiquid Federation 지갑서 약 4,000 BTC 인출, 브리지 노드 중단으로 사이드체인 일시 정지NetBSD가 NASA 위성 TCP, KAME IPv6/IPsec 등 연구에 쓰인 사례를 모은 페이지예일대 바빌로니아 컬렉션, 기원전 1750년경 양고기·비트 스튜 재현 조리법 공개1024바이트 C로 만든 Python풍 인터프리터, 소스를 다시 파싱해 루프와 함수를 실행Anubis, 1년 작업 끝에 WebAssembly 기반 PoW 솔버 배포GrapheneOS, Compose 메시지 앱과 Secure Paste 공개하며 자체 RCS와 AOSP 앱 교체 계획 발표아사히 리눅스, M3 맥 공식 지원 시작. GPU 가속·잠자기·HDMI는 아직 미지원Minecraft 재현 같은 '데모 벤치마크'는 출시 전 최적화돼 모델 능력을 재지 못한다는 주장iOS 오픈소스 습관 추적기 Kadō, 이분법 대신 점수로 습관 기록Kepter, 폴더 위치를 없앤 시각적 파일 스트림으로 Finder 탐색 문제를 겨냥OpenAI, 연구자용 자동화 AI 인턴 달성 주장하고 2028년 3월 AI 연구자 목표 공개NetBSD 9.5가 9계열 최종판으로 출시, NetBSD-9 지원 종료X의 중단 요구 뒤 Nitter 프로젝트 지속 결정, 법률 자문 후 저장소 복구OpenAI 수석과학자, 재귀적 자기개선 가능성 경고하며 감속과 공동 안전 기준 촉구Asahi Linux, M3 Mac 공식 지원 시작. 3D GPU 성능, 절전, HDMI는 아직 미지원법률 자문 뒤 Nitter 지속 선언, X 대체 프런트엔드 운영 논쟁 재점화A/I, 테러 조직 지정 뒤 25년 만에 메일·웹 호스팅 등 전 서비스 종료 선언IBM Nighthawk r2, 독립 능동 리셋으로 초당 10만 회로 실행에드 웨스트, 제임스 매리엇의 『The New Dark Ages』로 스마트폰 시대 문해력 저하를 논함해커뉴스 링크를 따라간 개발자의 12주 원격 리커스 센터 체험기M-DISC, 최대 1,000년 보존을 내세운 광디스크와 사라지는 블루레이 드라이브 문제브라이언 캔트릴, 링크드인 LLM 대필은 문체보다 작성자 신뢰를 잃게 만든다고 비판35W Ryzen 4750GE로 꾸린 FreeBSD 미니 ITX 데스크톱, GPU 커버와 브래킷을 잘라 SG13에 장착