GN⁺: Show HN: Flutter를 통한 Rust GUI 라이브러리
(cjycode.com)- Rust는 8년 동안 "가장 원하는 프로그래밍 언어"로 선정되고, 많은 사람들이 Rust로 GUI 프로그램을 작성하고 싶어함.
- Flutter와
flutter_rust_bridge
를 활용한 접근 방식을 공유 - 장점
- Flutter는 인기 있고 성숙한 플랫폼으로, 많은 개발자와 유명 브랜드가 사용 중이고, 큰 생태계를 가지고 있어 원하는 기능을 쉽게 구현할 수 있음
- "핫 리로드" 기능으로 UI 개발이 빠르고, 크로스 플랫폼을 지원하여 동일한 코드베이스로 여러 플랫폼에서 실행 가능함
- 단점
- 이 접근 방식은 100% 순수 Rust가 아님
- 그러나 이것은 매크로를 사용하거나 HTML/CSS/Slint와 같은 다른 언어를 사용하여 사용자 정의 DSL을 작성하는 다른 많은 Rust UI와 유사
- 웹 플랫폼에 대한 비판이 있음
- 정적인 웹 페이지보다는 웹 및 기타 플랫폼(예: Google 어스, Rive의 애니메이션 편집기 등)의 '앱'에 더 적합
- Flutter는 많은 보일러플레이트 코드가 필요함
- 이 접근 방식은 100% 순수 Rust가 아님
flutter_rust_bridge란?
- 두 언어 간의 브리지를 만들어 하나의 언어처럼 작동하게 함
- 다양한 타입,
&mut
, async, 트레이트, 결과, 클로저 등을 자동으로 변환함 - Rust GUI를 Flutter로 구현하는 것 외에도 다양한 사용 사례가 있음
= Flutter에 임의의 Rust 라이브러리를 사용하거나 알고리즘과 같은 코드를 Rust에서 작성하고 다른 코드를 Flutter에서 작성하는 등
Hacker News 의견
-
몇 년 동안 앱을 개발하면서 사용해왔으며, 전반적으로 만족스러웠음
- v1에서 v2로 업그레이드가 어렵지 않았고, v2는 많은 유용한 기능과 개선된 코드 생성 경험, tokio async 지원 등으로 큰 변화를 줌
- Rust로 비즈니스 로직을 작성하고 Dart를 프론트엔드로 사용하는 것이 매우 효과적이었음
- Flutter/Dart가 React보다 더 이해하기 쉽다고 생각함
- FRB 작업을 한 @fzyzcjy에게 감사의 말을 전함
-
UI를 Rust 대신 Dart로 작성하는 것의 장점을 잘 모르겠지만, flutter_rust_bridge의 팬임
- fzyzcjy와 커뮤니티가 Dart에서 Rust 코드를 원활하게 호출할 수 있게 한 작업이 Flutter 앱에 큰 자산이 됨
- 주말 동안 Flutter로 ImageOptim을 재구성했으며, Rust 이미지 라이브러리를 사용해 더 강력하고 빠른 앱을 만들 수 있었음
- Rust 통합 덕분에 앱이 더 능력 있고 빠르게 동작함
-
칭찬할 만한 노력임. 현재 Tauri를 사용 중이며, 두 가지의 장단점에 대해 궁금해함
-
데스크탑 UI를 위해 Flutter를 사용하고 백엔드를 위해 Rust를 사용함
- 브리지 대신 gRPC를 사용해 두 부분을 분리함
- 이 접근 방식은 언어에 구애받지 않으며, 프론트엔드에서 백엔드를 모킹하기 위한 더 깔끔한 인터페이스를 제공한다고 생각함
- UI와 백엔드를 다른 기기에 배치해 진정한 클라이언트/서버 아키텍처를 구현할 수 있음
- 단점은 인터페이스가 더 장황할 수 있다는 점임
-
잘했음. rust_flutter_bridge에 대해 좋은 이야기만 들었음
- Flutter가 모바일 네이티브(Java, Swift)와 비교해 얼마나 부피가 큰지(최종 앱 크기)와 UI 성능에 대해 궁금해함
-
Flutter의 UI 구축 접근 방식을 즐겼지만, Dart는 별로 좋아하지 않았음
- 이론적으로 UI 전용 프로그래밍 언어를 만들 수 있지 않을까 생각함
- 주요 프로그래밍 언어와 인터페이스할 수 있는 언어, 예를 들어 protobuf의 IDL 형식처럼 데이터를 정의하는 대신 사용자 인터페이스를 선언하는 언어
- QT와 XAML이 떠오르지만, QT는 오픈 소스가 아니며 XAML은 오랫동안 사용되지 않은 것 같음
-
Google의 재료 디자인과 폭죽 효과가 가장 좋은 모습은 아니라고 생각함
-
접근성(a11y) 지원에 대해 궁금해함
- 문서에서 이에 대한 정보를 찾지 못했지만, 2024년에 접근성 지원 없이 GUI 키트를 출시하는 것은 상상할 수 없으므로 왜 언급하지 않았는지 궁금해함
-
Chrome 셸이나 웹 위젯에 의존하는 것보다 훨씬 나음, 노력에 찬사를 보냄
-
흥미로움. IIUC 이것이 소스 간 번역을 사용해 이루어졌는지 궁금해함
- 문서가 사용자에게 명확하게 작성되어 인상적임
- 접근 방식과 wasm 기반 Rust 웹 프레임워크와의 비교에 대해 알고 싶음
- Rust와 Flutter를 결합하는 한 가지 장점은 Flutter가 이미 전체 프레임워크이며 서버와 클라이언트 측 간에 코드와 데이터 구조를 공유할 수 있다는 점임