현황
지금 되는 것
구현은 이 저장소의 코드와 그것을 실행하는 통과 테스트가 함께 있다는 뜻입니다. 부분은 일부가 있고, 어느 부분인지 이 페이지에 적었다는 뜻입니다. 계획은 설계했지만 만들지 않았다는 뜻입니다.
HTML 과 CSS 경로
| 상태 | 항목 |
|---|---|
| 구현 | HTML 요소로 쓴 Dioxus 앱을 창 없는 blitz-dom 문서(HtmlDom)에서 실행하고, 스타일시트를 Stylo 로 풀기 |
| 구현 | 레이아웃: 블록과 인라인 흐름, flexbox, grid, 표, position relative / absolute / fixed, z-index, min-width: fit-content, box-sizing |
| 구현 | 장식: 배경색, 변마다의 테두리, 모서리 반지름, box-shadow, opacity, visibility |
| 구현 | overflow: 클리핑, 두 축 어느 쪽이든 스크롤 컨테이너 |
| 구현 | 배경: 선형과 원형 그라디언트, 배경 이미지, object-fit. 앱이 넘기는 ImageResolver 를 거치며 아무것도 내려받지 않음 |
| 구현 | 텍스트: 인라인 조각, white-space, text-transform, letter-spacing, 생성된 내용, 바꿔 끼울 수 있는 TextMeasurer |
| 구현 | 이벤트: 전파와 브라우저 기본 동작을 포함한 클릭, input / change / submit, select, 체크박스, 라디오 그룹, label, 비제어 입력란 |
| 구현 | 키가 있는 목록, 바뀐 것만 알려 주는 그리기 목록 diff 와 계획 diff |
| 구현 | 사용자 정의 속성과 prefers-color-scheme 으로 테마 주기 |
| 구현 | <script> 를 실행하지 않음 |
| 구현 | VS Code 가 잰 텍스트 크기로 워크벤치 세 구역의 상자 326 개 중 324 개가 VS Code 와 1px 이내(dioxus-compose/tests/fr34_box_tolerance.rs, 2026-10-03 macOS 에서 측정) |
| 구현 | samples/ 의 예제 열한 개. 각각 손으로 계산한 배치와, 렌더러가 부를 것과 같은 호출로 Host 에서 테스트됨 |
| 부분 | HTML 화면을 화면에 그리기. 그리기 원소의 계획은 있지만, 그것을 compose-rust 렌더러(그 AbsoluteBox)에 넘기는 다리가 없어 아직 그려지지 않음(#43. 다리는 #67에 작성되어 검토와 빌드를 기다림) |
| 부분 | Compose 로 텍스트 재기. 측정기는 글꼴이 하나인 텍스트를 재고, 글꼴이 섞인 문단, 표 칸, 입력 컨트롤은 Parley 가 잼. 동기 측정 호출은 compose-rust 에서 만드는 중(#43) |
| 부분 | CSS 변환: translate 는 동작, rotate, scale, skew, matrix(), transform-origin 은 그리지 않음(#46) |
| 계획 | CSS transition 과 animation: 불투명도, 변환, 색은 렌더러에서(#46), 폭, 높이, 여백은 Host 를 거쳐(#47) |
| 계획 | HTML 화면의 키보드 이벤트와 포커스, 실행 중 시스템 색 구성표 변화 따라가기. 둘 다 렌더러 다리와 함께 옴(#43. #67에 작성됨. Enter 밖의 키, 키 뗌, 포커스 얻음, 시스템 색 구성표 이벤트는 compose-rust 가 먼저 필요함) |
| 계획 | 시스템 글자 크기에서 시작해 VS Code 처럼 HTML 화면 확대하기(#58) |
| 계획 | 한 화면에 HTML 과 위젯 함께 두기(두 방식 섞기)(#59) |
Compose 위젯 경로
| 상태 | 항목 |
|---|---|
| 구현 | 위젯 목록, 모디파이어, 키 소비를 포함한 이벤트, 비제어 TextField |
| 구현 | LazyColumn 과 LazyRow 창 단위 처리: 렌더러가 범위를 묻고 Host 는 그 범위만 만듦 |
| 구현 | 역할 기반 계약 하나 뒤의 디자인 시스템 일곱 개, 통일 또는 호스트 플랫폼 따르기 |
| 부분 | 스트리밍 텍스트: 덧붙인 꼬리를 프레임마다 모으지만 rsx! 수준 API 는 없음 |
| 계획 | 마크다운 크레이트 dioxus-compose-markdown, 스트리밍을 포함해 마크다운을 위젯으로(#24. 초안은 #68) |
위젯 경로의 플랫폼
렌더러와 그 빌드는 compose-rust 의 것입니다. 플랫폼마다 지금까지 보인 것은 다음과 같습니다.
| 플랫폼 | 상태 | 근거 |
|---|---|---|
| macOS (arm64) | 구현 | 한글 입력을 포함해 직접 써 봄. Java 런타임 없는 파일 하나 |
| Android | 구현 | 예제 앱이 에뮬레이터에서 돎 |
| Web (wasm) | 구현 | 브라우저에서 화면이 그려지고 클릭이 Rust 에 닿음 |
| Windows, Linux | 부분 | CI 에서 빌드되고 시작됨. 직접 써 보지는 않음 |
| iOS | 부분 | 시뮬레이터 스모크 테스트에서 빌드되고 시작됨 |
FAQ
- Dioxus 웹 앱을 그대로 가져올 수 있나요?
- HTML 경로가 받는 것이 그
rsx!와 CSS 이므로 화면은 배치됩니다. 렌더러 다리가 생기기 전까지는 그려지지 않고, 브라우저 API 나 JavaScript 를 부르는 부분은 여기에 대응하는 것이 없습니다. - JavaScript 를 실행하나요?
- 아니요.
<script>는 아무 일도 하지 않습니다. 동작은 Rust 로 씁니다. - 어딘가에 웹뷰가 있나요?
- 아니요. CSS 는 Rust 에서 blitz-dom 이 계산하고, 그 결과를 Compose 가 그립니다.
- crates.io 에 있나요?
- 네, 0.0.1 이 두 경로를 모두 담고 compose-rust 0.0.1 위에 있습니다. 0.0.x 는 초기 릴리스이고 API 는 바뀝니다. 시작하기를 보십시오.
- Kotlin 을 알아야 하나요?
- 아니요. 렌더러는 compose-rust 를 거쳐 미리 빌드된 채로 오고, 코드는 Rust 만 씁니다.