rust-dominator
rust-signals
rust-dominator | rust-signals | |
---|---|---|
10 | 6 | |
933 | 588 | |
- | - | |
5.0 | 4.5 | |
5 months ago | 21 days ago | |
Rust | Rust | |
MIT License | MIT License |
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-dominator
-
A Proposal for an asynchronous Rust GUI framework
They are both async and made for GUI -- in case of rust-signals WebGUI, provided by dominator and MoonZoon.
-
Why Rust?
You shouldn’t ever need to deal with OsString itself on wasm32-unknown-unknown, since that target basically just doesn’t cover functionality that needs it, but the actual situation is genuinely worse than OsString: Rust insists on valid Unicode (as is right and proper), but the web suffers from the affliction of ill-formed UTF-16. If you blindly convert from JavaScript strings to Rust strings, you will encounter data and functionality loss in a few situations, in practice always involving IME (or similar) text entry on Windows. The first bug I filed about this: https://github.com/Pauan/rust-dominator/issues/10, and you can follow further links if you’re interested. IE and Edge used to be largely immune to this, but IE is dead and I suppose Edge will have regressed in this way with the Chromium migration, since the bug filed in Chromium a few years ago <https://bugs.chromium.org/p/chromium/issues/detail?id=949056> has languished. (Firefox too, with <https://bugzilla.mozilla.org/show_bug.cgi?id=1541349>.) In the worst-case scenario, careless use like was the case in rust-dominator will mean that some users typing with particular software in a language that’s outside the Basic Multilingual Plane will not be able to type anything.
-
Xilem: an architecture for UI in Rust
One comparison I'm missing , which I think provides quite a nice solution in Rust, is the signals based approach popularized by Solid JS and implemented in Rust by sycamore and earlier by dominator.
-
So Long Surrogates: How We Moved to UTF-8 in Haskell
Missing support for characters beyond U+FFFF is the main problem caused by surrogates (their existence, even if indirect)—it normally comes of some kind of UCS-2/UTF-16 confusion. It’s not fair to disqualify them. The only (class of) case that I’m aware of for a long time where it’s not linked to that is with MySQL’s idiotic utf8 → utf8mb3 type.
You may not have encountered such bugs, but I’m very familiar with surrogate-related bugs, because I use a Compose key extensively. I haven’t been using Windows for the last year, but from time to time I would definitely encounter bugs that are certainly due to surrogates. On the web, I found bugs a few times, all but once in Rust WebAssembly things, such as https://github.com/Pauan/rust-dominator/issues/10. And even now I’m back on Linux, I know of one almost certainly surrogate-related bug: I can’t type astral plane characters in Zoom at all; pretty sure I had this problem back on Windows, too. Copy and paste, sure, but type, no, they become REPLACEMENT CHARACTER.
The history is unfortunate but I strongly refute that they had not much choice. UCS-2 should have been abandoned as a failed experiment. Certainly there had been significant investment into it in the last few years, but with the benefit of hindsight, switching to UTF-8 (which was invented before they decided on surrogates) would have made everyone’s life much easier, especially given its ASCII-compatibility.
Ah, BOM characters. Haven’t seen one in years. Good riddance.
-
A Rust server / frontend setup like it's 2022 (with axum and yew)
I really don't understand why everyone jumps to Yew when it comes to front-end development. Dominator is a far cleaner and more Rust-orientated approach to building front-end apps. I have worked with both and I feel that Yew adds a lot complexity/forces a lot of design philosophies but gives very little back in terms of advantages.
-
Announcing Silkenweb v0.2.0: A crate for building web apps using WebAssembly
Hi, I've just released a major new version of Silkenweb. It's a signals based web framework like Dominator or Sycamore, but with the emphasis on plain rust syntax rather than a macro DSL.
-
Front-end Rust framework performance prognosis
Check out the alternatives without vdom, especially Dominator https://github.com/Pauan/rust-dominator. It’s faster than nearly all JS frameworks. The underlying rust-signals it’s based on is a fantastic crate. Unfortunately it’s not very well documented (check the prs for some wip docs). I got a frontend up and going with reactivity and nice styles using trunk and tailwindcss with daisyUI very quickly.
- Seed – A Rust front-end framework for creating fast and reliable web apps
-
Rust on the front-end
- https://github.com/Pauan/rust-dominator
-
Introducing maple, a VDOM-less fine grained reactive web framework running in WASM
How does this compare to dominator?
rust-signals
-
A Proposal for an asynchronous Rust GUI framework
What is the relation and differences between this approach and rust-signals?
-
A good/decently matured rxjs-based library?
Signals is a fantastic and stable library for reactive programming https://github.com/Pauan/rust-signals
-
A first look at Sycamore's new reactive primitives: how the next version of Sycamore will be the most ergonomic yet
How does this approach differ from rust-signals? https://github.com/Pauan/rust-signals
-
Announcing avalanche 0.1, a React- and Svelte-inspired GUI library
You might want to check out dominator and the rust-signals it is based on, seems like a similar technique to avalanche.
-
Crate similar to Kotlin Flow?
Maybe try futures-signal? I think its API looks quite nice and it even has a tutorial.
-
Rust on the front-end
Both are signal-based, which seems like the way to go to me. The latter seems more mature in terms of code, but also lacking in good documentation. The rust-signal crate it uses though has a nice tutorial from which a lot of concepts seem to transfer.
What are some alternatives?
sycamore - A library for creating reactive web apps in Rust and WebAssembly
Seed - A Rust framework for creating web apps
salsa - A generic framework for on-demand, incrementalized computation. Inspired by adapton, glimmer, and rustc's query system.
solid - A declarative, efficient, and flexible JavaScript library for building user interfaces.
sycamore-mac
solid - A declarative, efficient, and flexible JavaScript library for building user interfaces. [Moved to: https://github.com/solidui/solid]
differential-dataflow - An implementation of differential dataflow using timely dataflow on Rust.
daisyui - 🌼 🌼 🌼 🌼 🌼 The most popular, free and open-source Tailwind CSS component library
avalanche - Rust library for building performant Web apps
Svelte - Cybernetically enhanced web apps
observe - Rust observables inspired by MobX