3P by neo 3달전 | favorite | 댓글 1개
  • Rust는 8년 동안 "가장 원하는 프로그래밍 언어"로 선정되고, 많은 사람들이 Rust로 GUI 프로그램을 작성하고 싶어함.
  • Flutter와 flutter_rust_bridge를 활용한 접근 방식을 공유
  • 장점
    • Flutter는 인기 있고 성숙한 플랫폼으로, 많은 개발자와 유명 브랜드가 사용 중이고, 큰 생태계를 가지고 있어 원하는 기능을 쉽게 구현할 수 있음
    • "핫 리로드" 기능으로 UI 개발이 빠르고, 크로스 플랫폼을 지원하여 동일한 코드베이스로 여러 플랫폼에서 실행 가능함
  • 단점
    • 이 접근 방식은 100% 순수 Rust가 아님
      • 그러나 이것은 매크로를 사용하거나 HTML/CSS/Slint와 같은 다른 언어를 사용하여 사용자 정의 DSL을 작성하는 다른 많은 Rust UI와 유사
    • 웹 플랫폼에 대한 비판이 있음
      • 정적인 웹 페이지보다는 웹 및 기타 플랫폼(예: Google 어스, Rive의 애니메이션 편집기 등)의 '앱'에 더 적합
    • Flutter는 많은 보일러플레이트 코드가 필요함

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가 이미 전체 프레임워크이며 서버와 클라이언트 측 간에 코드와 데이터 구조를 공유할 수 있다는 점임