-
Notifications
You must be signed in to change notification settings - Fork 87
Description
Hi,
Over the last couple of months I have been working on lv_bevy_ecs, and lightvgl-sys as new Rust bindings for LVGL. The main difference is that it uses the Entity-Component-System framework of the Bevy game engine, meaning it solves the memory and lifetime issues outlined in #140 and #111.
It is originally based on code from this repo, however a lot of things have been rewritten:
- Lifetimes are intuitive with the owned Widget and borrowed Wdg, much like CString and CStr
lv_codegennow autogenerates nearly every widget-related function (..._get_text functions not available #162)- The raw bindings generation in
lightvgl-syshas been separated (Movelvgl-systo a separate repository. #176) and simplified as much as possible, to make it easy to use in any project. It also supports LVGL 9.4 (bump to LVGL 9? #195) - Got rid of the object oriented approach that does not work in Rust and caused most of the difficulties here
- Styles, animations, events, observers, subjects, timers, logging and much more modules work out of the box
- Documentation is copied over to the safe functions
- The automated CI test has been ported completely
- Cross compile (Cross compile fixes #153) works and there is an example project
- And more...
The reason I'm opening this issue is that I think all of the ECS-unrelated code could be upstreamed into this repo. That way this repo would be storage-agnostic, and people could use any preferred storage solution. Also lightvgl-sys could be 1:1 transferred into lvgl-sys then more people would find it on crates.io.
If there is interest, I would have the capacity to maintain this repo and help developing the remaining features. As I spent lots of time experimenting and optimizing the new code, I would appreciate if upstreaming it would be an all-or-nothing PR.
Thanks for reading this and let me know what you think.
cc @kisvegabor