Skip to main content

Compatibility

GPU Support

BackendPlatformStatus
VulkanWindows, Linux✅ Supported
DirectX 12Windows✅ Supported
MetalmacOS✅ Supported
WebGPUWeb (wasm)Planned
OpenGLAllNot supported

Crate Version Pinnings

Workspace crates use pinned version ranges. Key dependencies:

DependencyRole
wgpu ~0.22GPU API abstraction
winit ~0.30Window creation and events
cosmic-text ~0.12Text shaping (HarfBuzz)
ureq ~3.0HTTP image loading
image ~0.25Image decoding (PNG, JPEG, GIF, BMP, WebP)
arboard ~3.4Clipboard access
rfd ~0.15Native file dialogs
egui ~0.31egui integration (driver)
bevy ~0.15Bevy integration (driver)

Rust Version

Requires Rust 1.78 or later (for impl Trait in associated types and other recent stabilizations).

Platform-Specific Notes

Windows

  • DX12 is the default backend
  • System fonts in C:\Windows\Fonts\
  • BGRA8 surface format

Linux

  • Vulkan is the default backend
  • System fonts in /usr/share/fonts/ and ~/.local/share/fonts/
  • May need libx11-dev, libwayland-dev, libudev-dev for winit

macOS

  • Metal is the default backend
  • System fonts in /System/Library/Fonts/, /Library/Fonts/, ~/Library/Fonts/

Browser Compatibility Goals

lui aims for CSS behavior parity with web browsers, not pixel-perfect rendering. The goal is to make CSS authored for browsers work correctly in lui, not to match every browser quirk.

FeatureGoal
Box modelCSS3 parity
FlexboxLevel 1 complete
GridLevel 1 with limitations
SelectorsLevel 4 complete
ColorssRGB with alpha, CSS Color 4
TextBasic styling, shaping via HarfBuzz
CascadeCSS Cascade 3 with !important and CSS-wide keywords

Known Divergences

  • em/rem default to 16px when no font-size is inherited (browsers use UA defaults)
  • sticky positioning degrades to relative
  • z-index sorts siblings but doesn't create independent stacking contexts
  • No float layout
  • No baseline alignment in flex/grid
  • Dashed/dotted on elliptical rounded boxes falls back to straight segments at corners