Azul GUI v1.0.0-alpha1
(git 0ad5f6d3)This is the first release of the Azul GUI toolkit. Version 1.0.0-alpha1 is the first stable version of Azul since 2018 and implements:
- CSS2.1 support + flexbox (CSS3), tested against Google Chrome (see reftest.html)
- GPU rendering (using servo/webrender) in pure Rust
- Software fallback rendering (using tiny-skia), also in pure Rust
azul-workbench
WYSIWYG GUI editor including a "HTML to C / Rust" transpiler- Headless CSS layout solver ("bring your own renderer") for custom use-cases
- Native menu and dialog handling (wherever possible, fallback for Linux)
- Handling background tasks / threads for file / network I/O
- Rendering for infinite datasets using
iframe
rendering - Parser and renderer for SVG in Rust (uses linebender/resvg)
- Font parser and shaper in pure Rust (using yeslogic/allsorts)
- XHTML and CSS parser (XHTML because it's good enough for desktop GUIs)
- Font selection (using fschutt/rust-fontconfig) in pure Rust
- Font rendering using native code (GDI / FreeType / CoreText)
- Image encoder / decoder (using the image crate)
- WASM support, to run your Azul application using the browser-native DOM
- Static and dynamic linking for both Rust and C
- C, C++ and Python API (via pyO3 bindings)
- Native menus, context menus with fallbacks for Linux
- DOM diffing and React-ish update patterns (mount / unmount)
- WASM support using the browser-native divs instead of WebGL
The API calls are versioned with numbers, i.e. every function and struct has a prefix like Az1, Az2, and so on, future APIs will add, but never remove APIs, this way Azul is forward-compatible without tons of getters and setters.
Azul currently uses about 5MB disk space (300KB for the WASM version) and uses about 16MB RAM. The intention is that you can write Desktop apps (and later on mobile apps) in pure Rust code, using HTML and run them without a WebView / browser, making the final binary very small and efficient.
If you find this work to be interesting, please consider a donation, join the Azul Discord or star the project on GitHub.
Links:
Files:
- Windows 64-bit dynamic library (azul.dll - 2.6Mb)
- Windows 64-bit static library (azul.lib - 67Mb)
- Python Extension (windows.pyd - 978KB)
- LICENSE-WINDOWS.txt (19KB)
- Linux 64-bit .so (libazul.so - 2.6Mb)
- Linux 64-bit .a (libazul.linux.a - 2.6Mb)
- Python Extension (linux.pyd - 978KB)
- LICENSE-LINUX.txt (19KB)
- MacOS 64-bit SO (libazul.dylib - 2.6Mb)
- MacOS 64-bit .a (libazul.macos.a - 2.6Mb)
- Python Extension (macos.pyd - 978KB)
- LICENSE-MACOS.txt (19KB)
Other links:
- C Header (azul.h - 978KB)
- CPP Header (azul.hpp - 978KB)
- API Description - api.json (714KB)
- Compiled examples w. source code (examples.zip - 154KB)
Use Azul as Rust dependency:
# Cargo.toml
[dependencies.azul]
git = "https://azul.rs/1.0.0-alpha1.git"
# Dynamic linking:
# export AZUL_LINK_PATH=/path/to/azul.dll
# features = ['link-dynamic']