Bridgerust: 하나의 Rust 코어, 모든 에코시스템
Source: Dev.to
소개
Python, Node.js 및 기타 생태계용 고성능 인프라 라이브러리를 공유 Rust 코어로 작성하세요.
BridgeRust를 사용하면 라이브러리를 Rust 한 번만 작성하고 여러 언어에 대한 네이티브 고성능 바인딩을 자동으로 생성할 수 있습니다.
BridgeRust 작동 방식
BridgeRust는 다음을 제공하는 통합 프레임워크입니다:
- 프로젝트 스캐폴드 – 몇 초 만에 다중 언어 프로젝트를 설정합니다.
- 통합 매크로 시스템 – 모든 대상 언어에서 동작하는 단일
#[export]매크로. - 타입 변환 –
Vec,Option,Result등 자동 매핑. - 빌드 및 배포 – 휠과 npm 패키지를 빌드하는 통합 CLI.
시작하기
프로젝트 초기화
bridge init my-awesome-lib
cd my-awesome-lib
내보내는 함수 작성
// src/lib.rs
use bridgerust::export;
#[export]
pub fn greet(name: String) -> String {
format!("Hello, {}! This is logic from Rust.", name)
}
#[export]
pub struct Point {
pub x: f64,
pub y: f64,
}
#[export]
pub fn fast_math(points: Vec) -> f64 {
// Heavy computation here...
points.iter().map(|p| p.x + p.y).sum()
}
패키지 빌드
bridge build --all
이 명령은 다음을 생성합니다:
- Python 휠 (
pip install …) - Node.js 네이티브 애드온 (
npm install …)
사용 예시
Python
import my_awesome_lib
print(my_awesome_lib.greet("Pythoneer"))
p1 = my_awesome_lib.Point(1.0, 2.0)
result = my_awesome_lib.fast_math([p1])
Node.js
const lib = require("my-awesome-lib");
console.log(lib.greet("JavaScripter"));
const p1 = new lib.Point(1.0, 2.0);
const result = lib.fastMath([p1]); // fast_math → fastMath automatically
실제 사례: Embex
우리는 BridgeRust를 사용해 Embex라는 범용 벡터‑데이터베이스 클라이언트를 구축했습니다. Pinecone, Qdrant, LanceDB 등 다양한 백엔드를 지원하면서 핵심 로직(연결 풀링, 재시도 전략, SIMD 연산)은 단일 Rust 코드베이스로 유지합니다.
- Python 패키지:
pip install embex - Node.js 패키지:
npm install @bridgerust/embex
주요 장점
- 보일러플레이트 제로 – 수동
PyModule또는napi_register_module정의가 필요 없습니다. - 성능 – 제로‑코스트 추상화 덕분에 코드가 네이티브 Rust 속도로 실행됩니다.
- 개발자 경험 – CLI가 초기화부터 배포까지 전체 라이프사이클을 간소화합니다.
- 일관성 – Python과 JavaScript 사용자는 동일한 기능과 버그 수정 사항을 동시에 받습니다.
CLI 및 리소스 얻기
-
CLI 설치:
cargo install bridge -
저장소:
-
문서:
접착 코드를 작성하는 것을 멈추고, 다리를 만들기 시작하세요. 🦀🌉