compose-rust

Rust로 쓰는 Compose 모양의 UI,그리는 것은 Compose.

Compose 모양의 Rust API, 스키마에서 생성되는 좁은 C ABI, 그리고 Compose 자신의 텍스트 레이아웃, 위젯, 플랫폼 IME로 그리는 미리 컴파일된 Compose 렌더러입니다.

웹뷰도, 동봉된 JVM도 없는 네이티브 UI. 데스크톱 앱 하나를 실행 파일 하나로 배포하는 것이 목표입니다.

  • 웹뷰 없음
  • 동봉된 JVM 없음
  • 한글 포함 플랫폼 IME 그대로
  • 제자리에서 읽는 레코드
// Planned shape for 1.0.0. Does not compile against 0.0.x.
#[composable]
fn counter() {
    let count = remember(|| mutable_state_of(0));
    Column(Modifier::new().fill_max_width(), || {
        Text(format!("{}", count.get()));
        Button(|| count.set(count.get() + 1), || Text("+1"));
    });
}

코드는 Rust에, 픽셀은 Compose에

코드와 상태는 Rust가 갖고, 픽셀과 텍스트 스택과 입력기는 Kotlin이 갖습니다. 둘 사이에는 좁은 C ABI 하나뿐입니다. 한 스레드 위에서 동기로 호출하고, 레코드는 쓰인 자리에서 읽히므로, 키를 누르면 같은 호출 안에서 답이 돌아옵니다.

여기 보인 작성 API는 2026-10-20의 1.0.0에 들어옵니다. 그 아래의 경계, 스키마, 렌더러는 지금 0.0.1로 배포됩니다.

28.76 MB실행 파일 하나, notepad 샘플, macOS arm64
35.1 MB그 실행 파일이 창을 띄웠을 때의 실제 점유 메모리
약 12 ns브라우저에서 렌더러가 Host를 부르는 호출 한 번
6.95 MB브라우저의 렌더러와 Skia, gzip 기준

앞의 두 숫자는 실행 파일 안에 링크되는 Kotlin/Native 렌더러의 것이며, 이것은 0.0.1 다음에 기본이 됩니다. 0.0.1은 데스크톱에서 GraalVM 네이티브 이미지를 배포합니다. 어디서 무엇이 도나를 보십시오.

현재 상태

부분상태
경계, 프로토콜, 스키마, 렌더러 다운로드0.0.1에 구현
작성 API: #[composable], remember, launch2026-10-20의 1.0.0을 향한 계획
macOS, Android, Web처음부터 끝까지 동작
Linux, Windows, iOS빌드되고 시작됨

아직 초기 단계 프로젝트이고, 그렇다고 분명히 말합니다. 각 줄의 뜻은 현재 상태와 플랫폼에 있습니다.

어디서부터 볼까