GN⁺: Dioxus 0.6 – Rust로 개발된 크로스플랫폼 앱 프레임워크
(dioxuslabs.com)-
Dioxus 0.6 출시
- Dioxus는 웹, 데스크톱, 모바일 앱을 단일 코드베이스로 구축할 수 있는 Rust 기반 프레임워크
- Flutter보다 더 나은 프레임워크가 목표
- 풀스택 웹 지원과 타입 안전한 서버/클라이언트 통신에 중점을 두며, 빠른 성능과 개발자 경험 향상에 초점을 맞춤
- 이번 0.6 릴리스는 Dioxus를 더 쉽게 사용하고 개발자 경험을 개선하며 버그를 수정하는 데 중점을 두었음
-
주요 기능 개선
- 모바일 시뮬레이터 지원: Android 및 iOS 시뮬레이터와 장치에서 앱을 실행할 수 있는 기능 추가.
- 매직 핫 리로딩: 포맷된 문자열, 속성 및 중첩된 rsx!{}의 핫 리로딩 지원.
- 인터랙티브 CLI: 새로운 UX로 Dioxus CLI를 재작성하여 사용성을 개선함.
- 인라인 스택 트레이스: WASM 패닉과 로그를 터미널에 직접 캡처.
- 네이티브 서버 함수: 데스크탑 및 모바일 앱을 위한 인라인 서버 RPC 지원.
-
개발자 경험 개선
- 토스트 및 로딩 화면: 웹 앱 개발 중 새로운 토스트 및 로딩 화면 추가.
- 자동완성 개선: RSX의 자동완성 기능 대폭 개선.
- 자산 시스템 안정화: 네이티브 앱에 통합된 링크 기반 자산 시스템 안정화.
- 스트리밍 HTML: 서버에서 클라이언트로 서스펜스 및 오류 경계 스트리밍 지원.
- SSG 및 ISG: 정적 사이트 생성 및 증분 정적 재생성 지원.
- 오류 처리: 이벤트 핸들러, 작업 및 구성 요소에서 ?를 사용하여 오류 처리.
- 메타 요소: 문서 속성을 설정하기 위한 새로운 Head, Title, Meta 및 Link 요소 추가.
- 동기 prevent_default: 모든 플랫폼에서 이벤트를 동기적으로 처리.
- onresize 이벤트 핸들러: IntersectionObserver 없이 요소의 크기를 추적.
- onvisible 이벤트 핸들러: IntersectionObserver 없이 요소의 가시성을 추적.
- WGPU 통합: WGPU 표면 및 자식 창 위에 Dioxus를 오버레이로 렌더링.
- dx 번들: 웹, iOS 및 Android를 위한 완전한 dx 번들 지원.
- json 모드: 제3자 도구 및 CI/CD 파이프라인에서 사용할 수 있도록 CLI 메시지를 JSON으로 출력.
- 새 템플릿: 크로스 플랫폼 앱을 위한 세 가지 새로운 시작 템플릿.
- 야간 튜토리얼 및 가이드: Dioxus 0.6 및 이후 버전을 위한 새로운 튜토리얼 및 가이드.
- 바이너리 패칭 프로토타입: 새로운 순수 Rust 핫 리로딩 엔진의 프로토타입.
-
릴리스 정보
- Dioxus 0.6은 350개 이상의 풀 리퀘스트가 병합되고 수백 개의 이슈가 해결된 가장 큰 릴리스임.
- 핫 리로딩, 자동완성 및 자산 번들링의 품질을 크게 개선하고자 함.
- Dioxus CLI를 더 견고하고 사용하기 쉽게 만들고자 함.
- 모바일 도구를 dioxus CLI에 인라인하여 1급 모바일 지원을 제공하고자 함.
-
인터랙티브 명령줄 도구
- Dioxus 0.6은 완전히 개편된 CLI 경험을 제공함.
- 새로운 CLI는 라이브 진행률 표시줄, 애니메이션, 인터랙티브 필터 시스템, 로그 레벨을 실시간으로 변경할 수 있는 기능 등을 지원함.
-
Android 및 iOS 지원
- Dioxus 0.6에서는 dioxus CLI가 dx serve --platform ios/android를 기본적으로 지원함.
- 모바일 플랫폼에 대한 1급 지원을 제공하며, Android 및 iOS 시뮬레이터 타겟은 데스크탑과 동일한 기능을 지원함.
-
핫 리로딩 엔진 개편
- Dioxus의 핫 리로딩 엔진에 대대적인 개선을 도입함.
- 포맷된 문자열, 중첩된 rsx 블록, 구성 요소 속성 및 간단한 Rust 표현식의 핫 리로딩 지원.
-
자동완성 기능 개편
- rsx! {}의 자동완성 기능을 대폭 개선함.
- Rust-analyzer와의 통합을 개선하여 더 나은 자동완성 경험을 제공함.
-
인라인 WASM 스택 트레이스 및 추적 통합
- WASM 앱을 위한 추적 통합을 제공하여 패닉과 로그를 캡처하고 터미널에 전송함.
-
토스트 및 로딩 화면
- 웹 앱 개발 중 빌드 진행 상황을 보여주는 로딩 화면과 빌드 상태를 나타내는 토스트를 제공함.
-
풀스택 데스크탑 및 모바일
- 네이티브 앱과 서버 함수를 통합하여 데스크탑 및 모바일 타겟에서 서버 함수가 기본적으로 작동하도록 함.
-
Manganis 자산 시스템 안정화
- 새로운 자산 시스템 Manganis를 안정화하고 여러 버그와 성능 문제를 해결함.
-
서스펜스 및 HTML 스트리밍
- 비동기 UI를 위한 새로운 핵심 프리미티브인 서스펜스 경계를 도입함.
- Dioxus 풀스택은 서버에서 각 서스펜스 경계를 스트리밍하여 페이지 로드를 기다리지 않고 각 청크를 스트리밍함.
-
정적 사이트 생성 및 ISG
- 정적 사이트 생성 및 증분 정적 생성 지원을 통해 SEO를 개선하고 사용자 로드 시간을 단축함.
-
문서 요소: Title {}, Link {}, Stylesheet, Meta {}
- HTML 문서 객체와 상호작용할 수 있는 특별한 요소를 제공하여 추가 JavaScript 없이 문서 속성을 설정할 수 있음.
-
물음표 오류 처리
- Element가 이제 Option가 아닌 Result로 전환되어 Rust의 일반적인 오류 처리를 구성 요소에서 사용할 수 있음.
-
동기 prevent_default
- 모든 이벤트 처리를 동기적으로 수행할 수 있도록 개선하여 dioxus_prevent_default 속성을 더 이상 필요로 하지 않음.
-
onresize 및 onvisible 이벤트 핸들러
- 요소의 크기와 가시성을 추적할 수 있는 특별한 핸들러를 제공하여 JavaScript 없이 풍부한 상호작용을 구현할 수 있음.
-
하이브리드 WGPU 오버레이
- Dioxus 데스크탑의 "자식 창" 기능을 통해 기존 창에 네이티브 Dioxus 앱을 오버레이로 통합할 수 있음.
-
웹, iOS 및 Android 번들 지원
- dx 번들에 웹 및 모바일 지원을 추가하여 다양한 타겟에 번들링할 수 있음.
-
CI / CLI를 위한 JSON 출력
- CLI의 JSON 출력 모드를 제공하여 로깅을 JSON 형식으로 받을 수 있음.
-
새로운 시작 템플릿
- 크로스 플랫폼 앱을 위한 세 가지 새로운 시작 템플릿을 제공함.
-
야간 문서, 튜토리얼 및 새로운 가이드
- 문서와 튜토리얼을 대대적으로 개편하여 기본적인 내용을 다루고 배포에 중점을 둠.
-
인플레이스 바이너리 패칭 미리보기
- Rust 코드의 핫 리로딩을 추가하기 위한 실험을 진행함.
-
작은 변경 사항
- 시스템 트레이 지원, 사용자 정의 이벤트 루프, dioxus-document 및 dioxus-history 분리, eval API 단순화 등 다양한 작은 변경 사항을 포함함.
-
0.5에서 0.6으로 업그레이드
- 몇 가지 API 변경 사항이 있지만 대부분의 경우 쉽게 수정할 수 있음.
-
결론
- 이번 릴리스는 많은 문제를 해결하고 다양한 기능을 개선하여 Dioxus 0.6을 가장 완성도 높은 릴리스로 만듦.
- 앞으로는 새로운 기능보다는 튜토리얼 비디오 제작, 문서 작성, 버그 수정, 성능 개선 및 커뮤니티와의 협업에 중점을 둘 계획임.
Hacker News 의견
-
한 사용자는 새로운 릴리스를 시도한 경험을 공유하며,
cargo install
을 사용해 프로젝트를 생성하고dx serve
를 실행했지만 컴파일러 오류가 발생했음을 언급함. 표준 Rust 워크플로우를 사용했다면 더 쉽게 디버깅할 수 있었을 것이라고 생각함.v
를 눌러 자세한 로그를 활성화할 수 있지만, 추가적인 명확한 정보는 제공되지 않음. -
다른 사용자는 매 6개월마다 Rust GUI 프레임워크를 시도하지만, 데모나 플레이그라운드 다운로드 시 오류가 발생한다고 언급함. 장기적인 투자 결정을 신중히 해야 한다고 생각함.
-
Dioxus는 자바스크립트를 최소한으로 사용하면서 크로스 플랫폼 기능을 제공할 수 있는 유일한 웹 플랫폼 기술 도구라고 언급함. WGPU 렌더링 스택의 발전을 긍정적으로 평가함.
-
Dioxus는 생태계가 부족하며, 컴포넌트 라이브러리가 없다고 언급함. 가상 DOM에 대한 확신도 부족함. 경쟁자인 Leptos를 추적하고 사용 중임.
-
서버 측에서 Dioxus를 사용 중이며, 컴포넌트를 작성하는 방식과 개발자 경험이 매우 좋다고 평가함.
-
Lustre를 발견하고 채택한 후, The Elm Architecture 외에는 사용할 생각이 없다고 언급함. Rust의 Iced를 사용해 시나리오 편집기 프로토타입을 구축 중이며, System76이 Cosmic을 구축하는 데 사용하고 있어 신뢰함.
-
새로운 기술 프레임워크가 가장 유망하다고 평가하며, 성공하면 다른 모든 프레임워크를 대체할 수 있을 것이라고 언급함. 성능에 중점을 두고 있으며, Rust가 보안과 성능의 기초를 제공함.
-
Dioxus가 벤처 자본을 유치했으므로, 미래를 걸기 전에 주의해야 한다고 언급함. 저작권 양도나 CLA가 필요한지, 기여자 중 몇 명이 급여를 받는지에 대한 정보가 부족함.
-
포스트 제목의 대비가 페이지 배경과 더 잘 어울릴 수 있도록 개선할 수 있다고 제안함. Qt의 현재 위치와 접근성, HiDPI 화면 처리에 대한 비교를 질문함. C++와 Python 외의 언어에 대한 품질 바인딩이 부족하다고 느끼며, 더 나은 바인딩과 도구가 있다면 더 인기가 있을 것이라고 언급함.
-
새로운 핫 리로딩 기능이 놀랍다고 평가하며, 다른 Rust 웹 프레임워크에서 UI 업데이트를 기다리는 것이 큰 문제였다고 언급함.