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에서도 적용할 수 있었고 성능에 크게 기여했을 듯함.

해커뉴스
ERSC, Git 프로토콜은 유지하고 자체 스토리지 엔진으로 차세대 VCS를 만들겠다고 주장구글, Alt+Space로 호출하는 Windows용 Gemini 데스크톱 앱 출시로컬 Qwen 27B에서 코딩 하네스 9종 비교, OpenCode 첫 응답 226초·Chad 26초90분 중강도 사이클링과 6회 30초 전력질주, 일부 심대사 바이오마커 변화가 비슷YuE2, 기호 악보를 먼저 만들고 보컬·반주로 렌더링하는 음악 생성 모델 공개System76, GPU 메모리 최대 192GB의 Thelio Mira AI 리눅스 워크스테이션 공개NTSB, 마이애미 767 활주로 이탈 사고서 158노트 접지 뒤 4초 만의 복행 중단 기록 공개라즈베리 파이 카메라가 pHash 서명을 이미지 워터마크에 숨겨 압축 뒤에도 촬영 증명을 남기는 오픈소스 프로젝트멕시코 16세 학생, 30Hz 음파로 촛불을 5-8초 만에 끈다는 소화기 제작Astra에 40억 토큰과 35시간을 맡긴 개발자, "가치 있는 결과물은 없었다"WebGPU 무한 셰이더가 macOS WindowServer를 멈춰 강제 재시작 유발Anthropic, 8개월간 Claude 악용 7개 분야 차단 사례 공개OpenAI, Codex 하네스를 세션·오케스트레이션·샌드박스까지 관리하는 Agents API로 공개OpenAI, 나비에-스토크스 166쪽 증명과 Lean 4 형식 증명 함께 공개더글러스 호프스태터 스탠퍼드 강연, 유추를 인지와 범주화의 중심으로 설명Forgejo 16.0.3 이하, 악성 템플릿으로 호스트 데이터 탈취·원격 코드 실행 가능보고서: 미 국방·정보기관의 공개 기술기업 계약 상한, 2019-2022년 최소 $530억로버트 허친슨의 무료 온라인 음악 이론 교재, 현대성·표기법·범위 놓고 HN 토론NASA 위성영상 색상 알고리즘, 앙코르와트의 희미한 벽화 약 200점 발견에 사용10년 묵은 케이블 두 개를 찾은 뒤, 가족 케이블 상자에 '버리지 말라'는 글을 붙인 개발자Magic, 공개 베이스 모델 대비 사전학습 FLOPs 효율 10배 이상 주장NASA 위성영상 색 보정 기법, DStretch로 희미한 고대 암각화 드러내PlanetScale, 실제 PostgreSQL 샤드와 라우터로 구성한 Neki 플랫폼 프리뷰 공개소프트웨어의 숨은 변경 비용과 끝없는 선택지가 조직을 과열시킨다는 주장Cognition, Kimi K3 후학습 SWE-2 공개… FrontierCode 50.0%, Fable 5.1보다 64% 저렴 주장히타치, 태양광 잉여 전력용 주간 요금제 대응 CO2 히트펌프 급탕기 출시소니, 플레이스테이션 디지털 게임의 '구매' 표기와 취소 가능한 라이선스를 둘러싼 캘리포니아 소송수학자 Thom, OpenAI의 비공개 수학 대화 데이터 처리 설명에 신뢰 문제 제기마이크로소프트, Rust를 내부 Tier-1 언어로 지정하고 MSVC용 rustc 코드생성 백엔드 운용Shopify, 코딩 에이전트 비용 변화로 React Native에서 Swift·Kotlin 네이티브로 전환아드먼, 창립 50주년 맞아 월리스와 그로밋 원본 인형 등 약 250점 경매스톡피시 19, 18 대비 최대 44 Elo 상승하고 범용 CPU 바이너리로 전환메타를 떠난 IT 종사자, 인터넷이 연결보다 관리 부담과 착취가 됐다고 비판개인 개발자가 8× B200으로 3.8B LLM을 43시간·998달러에 학습해 CORE 0.384 기록미국 스트리밍 9종 묶음, 2021년 3월 대비 월 61% 올라 연 $702 증가유리수 전처리로 9차 다항식 평가를 곱셈 8회에서 5회로 줄인 인터랙티브 데모Windows XP의 첫 사용자 그림, GetTickCount 시드와 리저버 샘플링으로 골랐다테런스 타오: 목표만 푸는 AI가 수학의 우회와 탐색을 지울 수 있다DeepSeek, 552B MoE V4.1-Flash 출시하고 V4-Pro 요청을 새 모델로 전환 예정리비안, 프레임 간 객체 추적으로 완전자율주행 겨냥하고 월 49.99달러 책정UN, 메르카토르 대신 등적 Equal Earth 지도 권고안 164 대 1로 채택Cognition, Devin으로 GPU GNFS 구현해 RSA-260 인수분해. RSA-1024 비용 약 $3천만 추정정적 타입 언어 Bespoke, 컴파일러에 정중한 문장으로 요청해야 코드가 되는 풍자Planet Labs 공개 궤도 데이터와 DuckDB로 97기 위성군을 추적한 재현 가능한 분석블리자드 직원 1,900명, AI 대체 사전협의·해고 후 14개월 재고용권 담은 노조 계약 비준광속을 시속 5km로 낮춘 가상 공원에서 상대론 효과를 직접 조작하는 Show HNAutomattic 이사회, 매트 뮬런웨그를 유급 휴직 처리하고 CFO를 임시 CEO로 선임Read the Docs, 분당 550만 요청 DDoS에 캐시 미스 404·302 집중 공격Qwen3.8, GPT-5.5 Pro 추론 1% 접두사에 답변 중복률 18.18%p 상승IEEE Spectrum 자율주행 안전 기사 본문 누락, HN은 ADAS 과신과 안전 검증 기준을 논쟁Anthropic, AI 성능·채택률로 2030년 미국 GDP·고용을 계산하는 경제 시나리오 공개GNU Radio DSP와 Qt GUI를 WebAssembly로 컴파일해 브라우저에서 SDR 플로우그래프 실행Apple Watch Series 12, 고빈도 HRV 측정과 준비도 점수 도입애플, 가변 조리개 48MP 카메라와 A20 Pro 탑재 iPhone 18 Pro 공개No Man's Sky 7.0 'Cosmos', 우주 정거장 운영·연합·심우주 인양 추가비자와 마스터카드는 카드 발급사가 아니라 승인·정산·분쟁 규칙을 운영하는 결제망GPT-6 Astra의 루프드 트랜스포머, CoT를 감추는 구조인가애플, 오픈형 ANC를 강화한 AirPods 5를 $129에 발표애플 첫 폴더블 iPhone Duo 공개, 10월 16일 예약 시작하고 $1,999부터 판매클라우드플레어 초기 구조를 설계한 공동창업자 리 할로웨이의 전기 1부뉴요커의 1990년 풍자 법정문: 와일 E. 코요테가 Acme에 85건의 제품 책임 소송 제기Lotus Notes: 1989년 이메일 기능보다 먼저 복제형 협업 데이터베이스를 만든 플랫폼OpenAI, GPT-5.6 Sol로 6큐비트 칩 보정 측정 자동 실행 사례 공개OpenAI, 1만 AI 에이전트로 나비에-스토크스 반례 주장…연구자 공로·사용 데이터 논란데저트 앤트, iPhone에서 300배 실시간 전사 내세운 온디바이스 모델 18종 공개구글 광고가 RACE를 악성 소프트웨어로 정지시켰다가 HN 노출 뒤 복구딥시크, V4.1 Flash 출시 뒤 Pro 요청까지 Flash 요금으로 전환 예고Tailwind Labs, Shopify 합류하고 Tailwind Plus 신규 가입 중단"장바구니에 담기" 버튼만 파랗게 바꾸라며 Claude의 과잉 작업을 풍자한 체험 사이트빈 프롬프트가 가리는 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 구현 정확도가 일관되게 좋아지지는 않는지 비교