I’m working on a reading list for myself on Immediate Mode GUIs (mostly) in Rust. Below are some loosely organized links & resources I’ve found thus far! Feel free to share more links and I’ll take a look!
Design
- About the IMGUI Paradigm - Dear ImGui Wiki - Explains how UI state lives in your code rather than hidden in the library
 - Immediate-Mode Graphical User Interfaces (2005) - Casey Muratori - The original blog post that coined “IMGUI”
 - Why is UI in Rust So Hard? - Warp Dev - Challenges of Rust’s memory safety rules with traditional GUI patterns
 
Managing State
- Keyboard Focus & Event Routing - Niklas Gray - Implementing focus and input handling without persistent widget objects
 - State Handling Advantages - No duplicate state between UI and application, eliminating complex observer patterns
 
Reflections
- Dear ImGui Wiki & FAQs - Omar Cornut - Common questions and design trade-offs in IMGUI libraries
 - Ownership and data flow in GPUI - via Nathan Sobo
 - Xilem: an architecture for UI in Rust - via Raph Levien
 
Performance Techniques for Fast Frames
- Batched Rendering - Grouping geometry by texture/material to minimize draw calls
 - Caching and Partial Updates - Raph Levien - Recording display lists and reusing vertex buffers across frames
 
Metal & Graphics
- 2D Graphics on Modern GPU- via Raph Levien
 - 3 Years of Metal Retrospective - Arseny Kapoulkine - Experience porting a renderer to Metal on iOS/macOS (please write somewhere other than medium!)
 - Fast 2D Graphics on the GPU - via Raph Levien
 - Leveraging Rust and the GPU to render user interfaces at 120 FPS - via Antonio Scandurra
 - Optimizing the Metal pipeline to maintain 120 FPS in GPUI - via Nathan Sobo & Antonio Scandurra
 - Using Metal and Rust to make FFT even faster - LambdaClass - Using Rust with Apple’s Metal API via metal-rs bindings
 
Native macOS APIs
- objc2: Calling macOS APIs from Rust with objc2 - (lib) Active Rust bindings for Objective-C runtime
 - Rust API Bindings: Core Foundation Memory Management and Mutability - via Always Processing - Wrapping Core Foundation and Cocoa APIs in safe Rust
 
Last updated