본문으로 건너뛰기
피드

Bun의 Rust 재작성 PR이 머지됨

backend 약 4분
vote
0
댓글
북마크

Bun 프로젝트에서 기존 코드 일부를 Rust로 재작성한 대형 PR이 머지됐다. 기존 테스트 스위트를 모든 플랫폼에서 통과했고, 바이너리 크기는 3~8MB 줄었으며, 성능 벤치마크는 대체로 중립이거나 더 빨라졌다고 한다.

  • 1

    Bun의 Rust 재작성 PR이 머지됐고 카나리 빌드에서 바로 테스트 가능함

  • 2

    기존 아키텍처와 데이터 구조는 대부분 유지됐고, 비동기 Rust도 쓰지 않았음

  • 3

    핵심 목적은 성능보다 메모리 버그를 컴파일러 도움으로 줄이는 것에 가까움

  • 4

    바이너리 크기는 3~8MB 감소했고 기존 테스트 스위트도 통과함

  • Bun의 ‘Rust로 재작성’ PR이 머지됨

    • PR 번호는 30412이고, 작성자는 자세한 내용은 별도 블로그 글로 낼 예정이라고 밝힘
    • 지금 써보려면 bun upgrade --canary로 카나리 빌드를 올리면 됨
  • 이번 변화의 핵심은 성능 과시보다 메모리 안정성 쪽임

    • Bun 팀은 그동안 메모리 버그 때문에 개발과 디버깅 시간을 많이 썼다고 함
    • Rust로 옮기면서 컴파일러가 메모리 문제를 잡고 예방하는 도구가 생긴 게 가장 중요하다고 설명함

중요

> 벤치마크가 빨라졌다는 얘기보다 더 중요한 건, Bun 팀이 메모리 버그를 사람의 집중력 대신 컴파일러에 더 맡기게 됐다는 점임.

  • 기존 코드베이스가 완전히 새 프로젝트가 된 건 아님

    • 아키텍처와 데이터 구조는 대체로 그대로 유지됐다고 함
    • 여전히 서드파티 라이브러리를 많이 쓰지 않는 방향도 유지됨
    • 비동기 Rust도 쓰지 않았다고 명시했는데, 런타임 내부 구조를 급격히 바꾸기보다는 안전한 언어 경계로 옮긴 느낌에 가까움
  • 정량 지표도 꽤 좋게 나옴

    • 기존 Bun 테스트 스위트를 모든 플랫폼에서 통과함
    • 몇몇 메모리 누수와 불안정한 테스트도 같이 고쳤다고 함
    • 바이너리 크기는 3MB에서 8MB 정도 줄어듦
    • 벤치마크는 중립이거나 더 빠른 쪽이라고 설명함
  • 아직 바로 안정 버전에 들어갈 단계는 아님

    • 정식 비카나리 버전에 들어가기 전 최적화 작업이 남아 있음
    • 코드 정리도 후속 PR 시리즈로 이어질 예정임
    • 사용 중 문제가 있으면 이슈를 열어달라고 요청함
  • 개발자 입장에서는 Bun이 ‘빠른 도구’에서 ‘장기 유지보수 가능한 도구’로 한 단계 가려는 신호로 볼 만함

    • 자바스크립트 런타임은 성능도 중요하지만, 네이티브 코드가 많을수록 메모리 안정성이 신뢰도에 직결됨
    • 특히 패키지 매니저, 번들러, 테스트 러너까지 한 프로세스 안에서 다루는 Bun 특성상 메모리 버그 비용이 누적되기 쉬움

기술 맥락

  • 이번 선택은 Bun을 새로 설계한 게 아니라, 기존 구조를 유지한 채 구현 언어의 리스크를 줄인 쪽이에요. 아키텍처와 데이터 구조를 그대로 둔 이유는 성능 특성과 동작 호환성을 크게 흔들지 않기 위해서로 읽혀요.

  • Rust를 고른 이유는 런타임 내부에서 자주 터지는 메모리 누수, 수명 관리, 포인터 계열 버그를 컴파일러가 더 일찍 잡아주기 때문이에요. 빠른 실행 속도만 보면 다른 선택지도 있지만, 팀이 강조한 건 디버깅 시간 절감이었어요.

  • 비동기 Rust를 쓰지 않았다는 점도 중요해요. 런타임의 이벤트 모델까지 바꾸면 변화 범위가 너무 커지는데, 이번 PR은 언어 전환으로 얻는 안전성에 집중한 셈이에요.

  • 카나리로 먼저 여는 건 이런 저수준 변경의 전형적인 배포 방식이에요. 테스트가 통과해도 플랫폼별 성능, 네이티브 모듈, 엣지 케이스는 실제 사용자 환경에서 더 잘 드러나거든요.

런타임 프로젝트가 Rust로 이동할 때 흔히 ‘새로 갈아엎기’처럼 보이지만, 이번 PR은 아키텍처를 유지하면서 메모리 안정성 도구를 얻는 쪽에 가깝다. Bun처럼 빠른 릴리스와 네이티브 코드가 섞인 프로젝트에서는 이 선택이 유지보수 비용을 꽤 줄일 수 있다.

댓글

댓글

댓글을 불러오는 중...

backend

Go에서 Rust로 옮길 때 진짜로 바뀌는 것들

이 글은 Go 백엔드 서비스를 Rust로 옮길 때 속도보다 컴파일 타임 보장, 런타임 트레이드오프, 개발자 경험이 더 중요하다고 설명한다. nil 패닉, 데이터 레이스, 에러 처리, 제네릭, 비동기 모델, 마이그레이션 전략까지 실무 관점에서 Go와 Rust를 길게 비교한다.

backend

Python 3.15에서 헤드라인은 못 탔지만 꽤 쓸만한 기능들

Python 3.15에는 lazy imports나 Tachyon profiler 같은 큰 기능 말고도 실무에서 바로 체감될 만한 작은 개선들이 들어가. TaskGroup 취소, 컨텍스트 매니저 데코레이터 개선, 스레드 안전 이터레이터처럼 평소 애매하게 불편했던 지점들이 꽤 깔끔해졌어.

backend

심평원, DUR부터 의료영상 심사까지 클라우드로 갈아엎는다

심평원이 정보시스템 클라우드 전환과 함께 병·의원 업무에 직접 닿는 DUR, 의료영상 AI 심사, 요양급여내역 조회 시스템을 고도화한다. 핵심은 설치형 프로그램 중심이던 연계를 웹과 API 기반으로 넓히고, 진료·청구 과정에서 실시간 확인과 자동 판독을 강화하는 쪽이다.

backend

윈도우 에러 코드 7번 ‘ERROR_ARENA_TRASHED’는 어디서 왔을까

ERROR_ARENA_TRASHED는 Win32에서 실제로 쓰이는 현대적 에러라기보다 MS-DOS 시절 메모리 관리 구조에서 넘어온 잔재야. MS-DOS가 메모리 블록 앞의 arena 시그니처를 훑다가 예상한 값이 아니면 ‘arena가 망가졌다’고 보고 이 에러를 냈다는 이야기야.

backend

C/C++ 컴파일러의 느슨한 메모리 동시성 버그를 자동으로 잡는 박사논문

C와 C++ 컴파일러에서 relaxed memory 동시성 버그를 찾는 자동 테스트 프레임워크를 다룬 박사논문이 공개됐어. Téléchat, Atomic-mixer 같은 도구로 소스 수준 동작과 컴파일된 프로그램 동작을 비교하고, LLVM과 GCC 툴체인에서 실제 버그를 찾아낸 내용이 핵심이야.