This workspace contains minimal experiments with various Rust GUI frameworks.
Here is a quick comparison of the memory usage (Resident Set Size) and compiled release binary size for each framework. These measurements were taken by running each basic example application natively.
| Framework | Binary Size | Memory (RSS) | Virtual Mem (VSZ) | Unique Mem (USS) | Notes |
|---|---|---|---|---|---|
cxx-qt (rust-ui-cxx-qt) |
3 MB | 66.89 MB | 425,514 MB | 11.6 MB | Qt integration in Rust via CXX and QML |
objc2 (rust-ui-objc2) |
1 MB | 69.92 MB | 425,325 MB | 14.3 MB | Using raw objc2 AppKit bindings |
iui (rust-ui-iui) |
1 MB | 78.12 MB | 425,474 MB | 16.0 MB | |
druid (rust-ui-druid) |
2 MB | 82.17 MB | 425,480 MB | 17.4 MB | |
wxdragon (rust-ui-wxdragon) |
8 MB | 62.17 MB | 425,335 MB | 22.2 MB | Using static wxWidgets bindings |
fltk (rust-ui-fltk) |
2 MB | 92.17 MB | 425,488 MB | 25.4 MB | Using static FLTK C++ bindings |
pyside6 (python-ui-pyside) |
N/A | 110.42 MB | 425,550 MB | 36.6 MB | Python PySide6 bindings (no compilation) |
slint (rust-ui-slint) |
4 MB | 102.25 MB | 425,479 MB | 37.0 MB | Using winit software renderer |
vizia (rust-ui-vizia) |
22 MB | 105.02 MB | 425,701 MB | 45.6 MB | Declarative UI framework with Skia backend |
eframe (eframe_template) |
4 MB | 99.67 MB | 425,517 MB | 60.4 MB | |
iced (rust-ui-iced) |
8 MB | 90.89 MB | 425,544 MB | 66.0 MB | |
relm4 (rust-ui-gtk) |
1 MB | 97.11 MB | 425,511 MB | 66.3 MB | Built with relm4 (requires gtk4 system deps) |
freya (rust-ui-freya) |
22 MB | 97.02 MB | 425,581 MB | 67.0 MB | React-like UI using Dioxus & Skia renderer |
dearpygui (python-ui-dearpygui) |
N/A | 100.77 MB | 425,523 MB | 80.3 MB | Python Immediate Mode GUI |
gpui (rust-ui-gpui) |
N/A | Build Failed | Build Failed | Build Failed | Requires full Xcode for metal compiler |