4 ms·
My initial motivation of following Rust is because it is the only language that can integrate into and extend the traditional Linux C world seamlessly except C+
by stshine 10y ago
My initial motivation of following Rust is because it is the only language that can integrate into and extend the traditional Linux C world seamlessly except C++, which is generally hated by the open source culture. Glad to see the initial attempt goes well, and hope the gnome people will no longer need to construct GUI with C in the second decade of twenty-first century.
- snuxoll 10y ago> hope the gnome people will no longer need to construct GUI with C in the second decade of twenty-first century. It may 'compile' to C, but we've had Vala for quite a while now. Honestly, my biggest complaints are the syntax is so close to C# that I always find myself trying to do stupid things like `using System.Collections.Generic;` instead of Gee, etc. Oh, and it would be REALLY NICE if the compiler had support for custom attributes without needing to patch the compiler itself (even just for storing metadata would be hugely beneficial, but I don't see any reason why there can't be a plugin api for the codegen side of things either). Rust is great and all, but every time I play with it I just don't see how it would work well with the complex inheritance tree that is a widget toolkit (meanwhile GObject works just fine, even if it's a little verbose at the C-level).
- stshine 10y agoSadly Vala is not safe, which is an essential defect for a high-level language, and It seems to be impossible to get wide adoption outside gnome world. Lack of inheritance is a shortage of Rust, but maybe we can have a kind of React-like GUI library for it.
- eridius 10y ago> Rust is great and all, but every time I play with it I just don't see how it would work well with the complex inheritance tree that is a widget toolkit I haven't actually done anything along this route myself, but I think the most promising approach is to model all the widgets as traits (and traits can depend on other traits, which lets you model the inheritance tree).
- the_duke 10y agoThe problems lie both in the lack of field inheritance (something talked about in Rust as "virtual structs") and the difficulties with modeling a bi-directional tree structure with the borrow checker.
- eridius 10y agoFor the bi-directional tree structure, it seems to me you could use Rc<Widget> for the children and rc::Weak<Widget> for the parent field.
- steveklabnik 10y agoAlberto discussed Vala here: https://siliconislandblog.wordpress.com/2016/10/31/thoughts-on-dx-gnome-and-rust/ https://siliconislandblog.wordpress.com/2016/10/31/thoughts-... > Vala has been a great tool for prototyping, I love it myself, but debugging it is a nightmare, it’s filled with security issues and even if we fixed those really difficult problems, we’d be maintaining our own language on top of everything else. I would like to see us maintaining less stuff other than a desktop and the application development framework, not more.
- flukus 10y ago> Rust is great and all, but every time I play with it I just don't see how it would work well with the complex inheritance tree that is a widget toolkit (meanwhile GObject works just fine, even if it's a little verbose at the C-level). I'm not convinced that this is the best way to build widget toolkits rather than just how it's always been done. I'd like to see one built more on traits like IClickable instead of subclassing button. HTML/CSS is already like this (for styling only), attributes can be mixed and matched.