Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gsoc2022/ideas: Add rust winit port #580

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

kallisti5
Copy link
Contributor

No description provided.

@kallisti5
Copy link
Contributor Author

I just stumbled across this one. It would make a great GSOC project.

It would benefit Haiku, and allow a student to focus on a rust-centric project.

@kallisti5
Copy link
Contributor Author

See https://github.com/rust-windowing/winit/tree/master/src/platform_impl

Overall this project would be linking the winit crate to the various app_server API calls.
It seems like getting basic windowing working would be a great project since it is a lot more user-space focused.

@pulkomandy
Copy link
Member

@nielx I thiik you have ben working on beapi bindings for rust, maybe you have some comments or extra info on this?

@kallisti5
Copy link
Contributor Author

kallisti5 commented Mar 12, 2022

one more quick note, this one feels "completable" within a GSOC project.

My gut looks at other projects like "improving rust support across as many crates as you can" as more important, but projects like those are more squishy (and as we have found out in the past... "squishy" makes for bad GSOC projects since milestones aren't strong)

This one feels pretty solid since forming a set of milestones is clear:

  • Add basic haiku platform support
  • Successfully spawn a window with winit
  • Get all the examples working

@nielx
Copy link
Member

nielx commented Mar 13, 2022

I like the idea, but I think there is one step missing, which is actually 'binding' to the native API. This either means automatically generate bindings to the C++ API using one of the existing tools to do that, or reimplementing the C++ API in pure Rust. I can tell from experience that the latter is going to be a hard one to solve, and should definitely be out of scope. The first would be more feasible. Any candidate must prove their understanding of memory management in C++ and in Rust, as a lot of time will be spent on preventing memory leaks and ownership issues. I do not have any experience with the bindings generator, so I actually do not know how much time should then be spent on also Rustify-ing the generated bindings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants