Rust의 derive는 조용히 #[inline]을 붙인다, uv는 이걸 막아 바이너리를 160KB 줄였다

Rust의 derive는 조용히 #[inline]을 붙인다, uv는 이걸 막아 바이너리를 160KB 줄였다

  • Rust는 #[derive(Debug)] 같은 파생 매크로를 확장할 때 #[inline]을 함께 붙임. 참조 문서에 예시로 암시돼 있을 뿐 보장된 동작은 아님.
  • uv 팀은 Debug 구현의 인라인을 막아 바이너리 크기를 약 160KB 줄임. derive(Debug)처럼 동작하되 #[inline(never)]를 쓰는 자체 proc macro를 만들어 적용함.
  • 깊게 중첩된 에러 enum의 Debug 구현은 인라인되면서 코드가 크게 불어나는데, rustc는 인라인되는 코드의 크기나 횟수에 제한을 두지 않는 것으로 보임.
  • rust-lang/rust PR 117727에서 #[inline]을 추가한 것은 벤치마크에서 컴파일 시간과 바이너리 크기를 줄였고, 필드 5개 초과 구조체에 인라인을 생략하는 실험(PR 118031)은 오히려 성능 회귀를 냄.

Hacker News opinions

Debug는 절대 인라인하면 안 된다고 봄. Display도 마찬가지고, fmt 기계가 워낙 무거워서 시리얼라이제이션 많은 작업에서도 인라인 안 한다고 병목이 되진 않더라. 내 Debug/Display 구현에 #[inline(never)] 붙여서 바이너리가 수십 KB 줄었음.

그 주석 넣은 PR(117727) 보면 벤치마크에서 컴파일 시간이랑 바이너리 크기 둘 다 줄었다고 함. 필드 5개 넘는 구조체엔 inline 안 붙이는 실험(118031)은 오히려 회귀 났고. Rust 개발자도 lobste.rs에서 버그 리포트 쌓이면 다시 조정할 생각 있다고 했으니 글쓴이가 낼 리포트에 얹는 것도 좋겠음.

그냥 PGO 쓰면 이런 인라인 추측을 다 피할 수 있지 않나. 실제 런타임 프로파일 보고 인라인을 넣고 빼니까.

uv는 이미 PGO 쓰고 있음. PGO가 '맞는 것만' 인라인하도록 보장할 일반적인 방법은 없는 듯.

Debug는 아예 처음 쓸 때 지연 생성하면 좋겠음. 99%는 안 쓰이는데 전부 확장되고, 나머지도 인라인으로 표시하는 건 명백히 틀렸지. 실제 구현은 엄청 어렵겠지만. 근거로 든 그 성능 PR도 개선과 회귀가 섞여 있었고.

LLVM 인라인 휴리스틱이 사실상 return true라는 농담도 있음. opt-level s나 z, 또는 #[inline(never)]로 조절할 수 있는데 인라인이 너무 적으면 성능이 크게 나빠지니 프로파일 없이 맞추기 어려움.

facet처럼 테이블 기반 derive(Debug)는 생각 안 했나? 이렇게 정형화된 코드에서 실행 속도보다 바이너리 크기랑 컴파일 시간이 중요하면 그게 먼저 떠오르는데, facet도 그 부분에서 약속을 못 지킨 걸 보면 std에서도 시도했다가 접었을 수도.

해커뉴스
39개 적분 답변 남긴 정체불명 수학자 Cleo, 소프트웨어 개발자 레셰트니코프로 드러나194살 거북 조너선의 게놈 해독, 노화 경로 대부분에서 고유 변이 확인구글 딥마인드 SynthID Detector 공개, 구글·엔비디아·오픈AI·카카오 생성물 워터마크 검출로절린드 프랭클린은 나선을 놓치지 않았다, 사진 49 분석이 왓슨의 주장을 반박빅토리아 엘리트는 왜 성공했나: 라틴어 80% 수업, 파티, 네트워킹TigerBeetle의 'push ifs up, fors down' 관용구 정리한 블로그, HN에서 벤치마크 없다는 비판 받아1770년대 1/16인치 자에서 1850년대 백만분의 1인치 측정기까지, 기계가 정밀도를 배운 과정구글, 코딩 없이 텍스트로 게임 만드는 실험 플랫폼 Playground 공개네 살 아들의 'wood tape' 쇼핑 목록과 설계도, 전권을 맡긴 아빠의 홈디포 나들이God of War PSP 두 작품, WebAssembly로 재컴파일돼 브라우저에서 실행Docker가 공개한 Go 에이전트 하네스 docker-agent, HN에서 브랜드 혼동과 샌드박스 문서 부재 지적소프트웨어 블로깅 안티패턴 정리: 두서없는 도입부부터 읽기 어려운 폰트까지arXiv 논문: OpenAI 나비에-스토크스 증명, Lean 검증은 통과했지만 자연어 원본과 다른 명제를 증명함아폴로 비행 소프트웨어를 이끈 마거릿 해밀턴, 90세로 별세Microsoft와 Meta, 사내 Claude 사용 줄이고 자체 코딩 도구로 돌린다의존성 없는 TypeScript 모듈 191개로 웹페이지에 애니메이션 ASCII 아트 넣는 ascii.rest 공개Show HN: Bigwords.page, URL 조각에 메시지를 담아 아무 화면이나 전광판으로 만드는 정적 웹앱OpenAI, 주간 12억 사용자 ChatGPT에 GPT‑6와 Intelligent UI 공개샌디에이고 피자집, Visa·Mastercard와 대형은행에 $100B 수수료 담합 소송 제기Anthropic이 Claude Haiku 5.5를 공개, Haiku 4.5보다 평균 75% 저렴하고 GDPval 점수는 735에서 1620으로 상승전보체 한 줄로 LLM 출력 토큰 40-49% 절감, 복원 정확도는 평문과 동등위키백과 이미지로 만든 걸어다니는 3D 미술관, 해커뉴스 Show HN에 공개Show HN: 폰 카메라로 플레이트 솔빙해 망원경을 조준하는 AstroHelm, 10 arcsecond 정확도 주장구글이 텍스트 프롬프트로 게임을 만드는 실험 플랫폼 Playground를 공개, 미국 18세 이상 Google One 등급별로 제작 권한 개방Rust의 derive는 조용히 #[inline]을 붙인다, uv는 이걸 막아 바이너리를 160KB 줄였다영국 레딩 주택, 지하 15m에 손으로 판 터널 딸려 30만 파운드 경매에GitHub, 15:06~15:16 UTC 전 서비스 장애... git push가 500 오류 반환2026 노벨 화학상, 비대칭 합성의 비선형 효과와 자기촉매 밝힌 카간·소아이 공동 수상C64 키캡 사진으로 복원한 Commodore 64 폰트, 해커뉴스에서 원본 출처와 AI 생성 논쟁Chrome 155, Rust로 다시 짠 디코더로 JPEG XL 지원 시작.gh, .sl, .as 국가도메인 탈취당해 구글 등 대형 서비스에 위조 TLS 인증서 발급random_u64() % n은 균등하지 않다, 저자는 확률 분포를 직접 적는 random_choice()를 권한다Pi 1.0, MCP 지원을 Codemode로 추가: 하네스 샌드박스에서 JS로 도구 호출 조합2달러 ESP32-C3로 13만 도메인 차단, 플래시 1MB·RAM 40KB DNS 싱크홀Mineserver 킥스타터가 남긴 $35,452와 Cringely가 거짓말로 무너뜨린 수십 년 평판캘리포니아 SB 1406 발효, 몬태나 셸컴퍼니 차량 등록 세금 우회 차단State of Devs 2026: 응답자 62%가 경력 중 번아웃, 절반은 고용 불안과 임금 부족, AI 호감은 49% 대 42%로 갈려AWS strands-labs가 2B 결정 모델 Strands Decider 2B 공개, Jev 잇는 결정 모델 대열에 합류Rust·GTK4로 만든 Linux 메일 클라이언트 Penguin Mail 1.0 공개, HN은 1.0 표기와 AI 채팅창 놓고 논쟁Photopea 개발자, GitHub에 복제 저장소 삭제 요청했지만 한 달 만에 거부당해OpenSSH 10.6 공개, AI가 찾은 보안 버그 급증에 릴리스 주기 단축AnyPS5, PS5 바이너리를 에뮬레이션 없이 PC로 재링크, 시스템 라이브러리 87% 매핑Claude Code의 추천 메시지 기능, 진짜 고객은 사용자가 아니라 모델이라는 분석시티즌랩서 분사한 검열 우회 도구 사이폰, C-22 감시 법안 통과하면 캐나다 떠난다앨런 케이의 1993년 논문 'Smalltalk 초기 역사' 전문, worrydream.com에 공개OpenAI, Decisions API 퍼블릭 베타 공개: gpt-6-luna로 분류·라우팅 10배 빠르게지구 최대 바이오매스 종은 소 6억 5천만 톤, 탄소 질량으로는 식물 4,500억 톤파라마운트 스카이댄스, $111B 워너브라더스 디스커버리 합병 완료. 케이건 대법관이 막차 가처분 신청 기각구글, 740M 파라미터 멀티모달 임베딩 모델 EmbeddingGemma 2를 Apache 2.0으로 공개OpenAI, 내부 프런티어 모델이 낸 수학 결과 GitHub에 공개... 평균 ChatGPT Pro 3시간 분량"나는 인류를 멸망시키는 AGI다" 2026년 AI 사고를 소재로 쓴 1인칭 풍자 에세이matklad, 마이크로 벤치마크는 약 300ms로 맞추라고 권고Tapo 라이브러리, TPAP 지원으로 '제3자 호환' 스위치 꺼도 로컬 제어 가능TDK, 메타 옵틱 거울로 스마트 안경용 직접 망막 투사 디스플레이 시연Fervo, 세계 첫 강화 지열 발전소 23개월 만에 완공하고 33MW 계통 판매 시작AI가 설계한 오픈소스 추론 칩 openTPU, 작은 모델에서 80+ tok/s 달성22만 데이터 포인트 분석: 종 소실을 메운다는 생태계 '여유분' 가정은 과대평가, 해양 탄소 격리가 가장 크게 반응Meta의 에이전트 AI Muse, 제로데이 취약점과 개인정보 무단 수집 논란으로 출시 직후 파장Polars 2.0 공개, 스트리밍 엔진과 out-of-core 기본 활성화, TPC 벤치마크에서 DuckDB 앞서Mistral, 활성 49B의 1조 파라미터 Mistral Large 4 공개 미리보기 출시, 가중치는 이달 말Global Solar Atlas v2.13 공개, 전 세계 태양광 잠재량 지도와 국가별 데이터 제공다니엘 르미르, AI 에이전트로 상위 레이어를 지어 코드 품질을 평가하는 '임시 테스트' 제안iChat AV 화상통화, 애플 SNATMAP 서버를 직접 구현해 20년 만에 부활컬러 프린터가 인쇄물마다 남기는 노란 추적 도트, DEDA로 읽고 지운다Gleam v1.19.0, Erlang 소스 대신 abstract forms로 컴파일JetBrains, 2025년 순이익 -315 CZK mil로 추적 이래 첫 순손실... 매출은 6% 늘었지만 매출총이익은 반토막프린스턴 연구자, $20짜리 AI 코딩 에이전트로 조지아 비밀투표 150만 장 순서 복원Zigbee 온습도 센서 12종 정면 비교, Aqara 연결 끊김 지적2026년 노벨 물리학상, 남극 IceCube 중성미자 검출기를 고안한 Francis Halzen 단독 수상Common Lisp이 LLM 시대 최고라는 글에 해커뉴스 반응: 디버거 재개는 C#도 되고, 매크로는 토큰만 늘린다블루레이 M-Disc 3장을 밀봉 케이스에 담아 지인에게 맡기는 최후 수단 백업디젤값 급등으로 30일 만에 트럭 회사 16곳 파산 신청, HN은 통계적 잡음이라는 반론2016년 '500줄 리눅스 컨테이너' 글이 해커뉴스에 다시 올라와, 댓글은 Firecracker·gVisor 격리 논쟁Deno 떠나 Node로 돌아온 개발자, 정적 사이트 빌드 15% 빨라져backprop 없이 트랜스포머 사전학습하는 Dust, EGGROLL보다 1만 배 효율 주장SF 두 지점 사이 가장 평탄한 경로를 찾는 Flatten SF, 해커뉴스에서 정확도 지적과 파서 버그 수정까지 오감example.com이 6개 언어로 개편됐지만 문자별 페이드 전환은 접근성 지적에 며칠 만에 폐기됨텍사스 노스리칠랜즈힐스시, Flock 공개기록 요청에 230만 달러 요구Antti Laaksonen의 Competitive Programmer's Handbook PDF, 해커뉴스에서 경쟁 프로그래밍 의미 논쟁 촉발ChatGPT가 가짜 뉴요커 만화에 실제 만화가 서명을 넣는다, 브렌단 로퍼의 'BLOPER' 위조GitHub Actions 러너 배정 지연 장애, Actions와 Pages 포함 3시간 40분 만에 복구화성 카오스 지형 위키백과 문서가 해커뉴스에 올라와 '토끼굴' 반응노르웨이, 공원·학교·헬스장 등 공공장소에서 스마트 안경 임시 금지 추진2026 노벨 생리의학상, 빛으로 뉴런을 조절하는 광유전학 연 칼 디서로스·페터 헤게만·게오르크 나겔 3인 공동 수상Haskell로 GTK 4·libadwaita 할 일 앱 만들기, haskell-gi와 Elm 아키텍처 1부Claude Opus 5.5 에이전트가 계산으로 찾아낸 상온 반강자성 반도체 후보 2종퀄컴, 화웨이 LogicFolding 칩 제조 특허 라이선스 계약 체결Reflection이 501B 오픈웨이트 MoE 모델 Beam 공개, 가중치는 이번 달 말플로리다 여성, Claude를 일기장처럼 쓰다가 보안관 사무소 난사 언급이 경찰에 신고돼 2급 중죄 기소Haskell 블로그, foldl과 foldr 차이 설명 재게재: 지연 평가에서 foldl이 thunk 사슬로 공간을 선형으로 늘림치사 유전자 모기로 뎅기열 95% 줄였는데, 미국 승인은 15년째 공전 중C에서 union으로 타입 안전 제네릭 자료구조 만드는 4단계 기법2026 노벨 생리의학상, 광유전학 연 칼 디서로스·페터 헤게만·게오르크 나겔 3인 수상화웨이·퀄컴, 5G와 AI 포함 다년 특허 크로스라이선스와 미국 특허 매입 계약 발표벤 톰슨의 맥 미니, macOS 화면 공유 결함으로 루트 탈취…클로드 에이전트가 채굴기 발견Cloudflare, AI 에이전트용 Web Search API 베타 공개. Ceramic.ai, Exa, Linkup 3개 제공자 지원GrapheneOS, 픽셀 11에서 MTE 빠진 걸 확인하고 시리즈 건너뛰기 검토... 모토로라로 초점 이동독일 RobCo, $1B 밸류에이션으로 유럽 로봇 유니콘 등극덴마크 CPR 레지스터에서 880만 명 이름·주소·주민번호 무단 유출레드햇 벤치마크: Jev 같은 결정 모델, LLM-as-a-judge와 전통 분류기를 이기지 못함

News Alerts

New alert

My alerts

Sign in to create alerts.

All alerts

Duneby 제욱AIby 제욱해커뉴스by 성현