Skip to content

I would like to upstream my crates #202

@SakiiCode

Description

@SakiiCode

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_codegen now autogenerates nearly every widget-related function (..._get_text functions not available #162)
  • The raw bindings generation in lightvgl-sys has been separated (Move lvgl-sys to 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions