rust-cssparser
blitz
rust-cssparser | blitz | |
---|---|---|
5 | 16 | |
682 | 405 | |
1.2% | 5.9% | |
7.2 | 9.0 | |
9 days ago | about 1 month ago | |
Rust | Rust | |
Mozilla Public License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
rust-cssparser
-
Looking for this. html + css rendering through wgpu.
If you were to implement this yourself, i'd look into either swash or cosmic-text for the text rendering stack (this is one of the things you really don't want to write from the ground up). For accessibility, AccessKit has quickly become the standard for communicating with crossplatform accessibility APIs in rust GUI. lightningcss (or its lower level counterpart cssparser) are both decent options for CSS parsing. Taffy handles some of what browsers offer for a layout engine, but is still being worked on.
-
We're building a browser when it's supposed to be impossible
Libraries for a lot of this stuff exist (albeit in many cases not very mature yet):
- https://github.com/pop-os/cosmic-text does text layout (which Taffy explicitly considers out of scope)
- https://github.com/AccessKit/accesskit does accessibility
- https://github.com/servo/rust-cssparser does value-agnostic CSS parsing (it will parse the general syntax but leaves value parsing up to the user, meaning you can easily add support for whatever properties you what). Libraries like https://github.com/parcel-bundler/lightningcss implement parsing for the standard css properties.
- There are crates like https://github.com/BurntSushi/bstr and https://docs.rs/wtf8/latest/wtf8/ for working with non-unicode text
We are planning to add a C API to Taffy, but tbh I feel like C is not very good for this kind of modularised approach. You really want to be able to expose complex APIs with enforced type safety and this isn't possible with C.
- Parcel CSS: A new CSS parser, compiler, and minifier
- Can't handle cssparser's ParseError
blitz
-
Deno in 2023
Have you talked to the Dioxus people recently?
They're working on a project called Dioxus Blitz; from what I'm told, they're trying to implement a minimal browser target, that provides some basic DOM-like features and renders with wgpu.
It's not exactly what you're hoping for, but you might find common ground.
https://github.com/DioxusLabs/blitz
(Also, the Linebender project is working on Masonry, with FFI as a medium-term goal.)
-
If the native speed DOM/Web API for Rust becomes a reality, would you be willing to build your web apps with Rust and HTML/CSS?
Your proposal sounds very similar to what the Dioxus folks are doing on Blitz, which is using HTML/CSS as the languages but doing native rendering. WebF seems much further along, and I know they've been exploring other rendering engines, so it may be an interesting conversation for you to have with them.
-
Looking for this. html + css rendering through wgpu.
Others have already mentioned inlyne and blitz, however given that you're interested in combining web UI with game/wgpu rendering you may be more interested in bevy_ui (and the higher level APIs like bevy_ui_dsl and belly that sit on top of this). Bevy UI is working on a HTML model and is specifically designed to integrate with Bevy's main game renderer and other infrastructure. It's worth noting that a 0.11 release of Bevy of due in next few days, and that UI is going to be a strong focus of the 0.12 release cycle: which should lead to significant development of bevy_ui, and either a doubling down on the "HTML-like UI" approach or a pivot to a new approach.
-
Awesome presentation of Dioxus - cross-platform GUI framework at RustNL
Here is an example: https://github.com/DioxusLabs/blitz/blob/master/examples/buttons.rs
-
Digital Audio Workstation Front End Development Struggles
> But no one is saying, "Hey I have a CSS 2.1 compliant rasterizer and compositor that you can use in your C++ or Rust environment!" are they?
There’s actually quite a lot of interesting work going on in that general space, has been in various forms for some years. A couple that immediately spring to mind:
• Azul <https://azul.rs/> builds on WebRender, as used in Firefox. I haven’t looked at it for a few years, but it looks to have grown quite interesting now.
• Blitz <https://github.com/DioxusLabs/blitz> is based on from-scratch implementations of CSS layout and rendering, and wgpu rendering. It’s not usable yet, but is a very interesting concept. If one happens to be familiar with React Native: it’s kinda like that, or React Native Web.
-
[Media] Version 0.3 of Inlyne - An interactive markdown renderer written entirely in Rust
You may also be interested in https://github.com/DioxusLabs/blitz which aims to be a full HTML+CSS renderer on top of wgpu (but is currently not nearly as complete as inlyne).
-
What is the most fully-featured rust frontend framework?
If you are focused on performance we are working on a native renderer for Dioxus called Blitz. It is very incomplete right now, but in the future it will be much more performant than the current webview based approach.
- GitHub Accelerator: our first cohort and what's next
-
Taffy 0.3: UI layout in Rust, now with css-grid!
There hasn't been too much progress on Blitz in the last few weeks (it will come), but there is now a new project Freya which is using a Dioxus frontend and rendering with Skia. That's currently using it's own layout system instead of Taffy though.
-
Tauri vs Iced vs egui: Rust GUI framework performance comparison (including startup time, input lag, resize tests)
The main desktop renderer for Dioxus uses wry (the webview tauri uses internally), so the startup time will likely be similar. We are working on a native renderer called blitz which should improve this, but development is still early
What are some alternatives?
lightningcss - An extremely fast CSS parser, transformer, bundler, and minifier written in Rust.
vizia - A declarative GUI library written in Rust
swc - Rust-based platform for the Web
dioxus - Fullstack GUI library for web, desktop, mobile, and more.
cosmic-text - Pure Rust multi-line text handling
freya - Native GUI library for 🦀 Rust powered by 🧬 Dioxus and 🎨 Skia.
css-modules - Documentation about css-modules
taffy - A high performance rust-powered UI layout library
icss - Interoperable CSS — a standard for loadable, linkable CSS
ToobAmp - A set of high-quality guitar effect plugins for Raspberry Pi with specific support for PiPedal.
hound - Lightning fast code searching made easy
vello - An experimental GPU compute-centric 2D renderer.