-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Dart GSoC 2023 Project Ideas
A list of Google Summer of Code project ideas for Dart.
For GSoC related discussions please use the dart-gsoc group.
Potential mentors
- Jonas Jensen (jonasfj)
[email protected]
- Daco Harkes (dcharkes)
[email protected]
- Sigurd Meldgaard (sigurdm)
[email protected]
- Liam Appelbe (liamappelbe)
[email protected]
TODO: Finish this page.
- Possible Mentor(s): [email protected]
- Difficulty: Hard
- Project size: / Large (350 hours)
- Skills: Dart, Go
Description: Package FFIgen makes interop with C and Objective-C seamless, and the (experimental) package JNIgen does the same for Java and Kotlin. However, what about Go?
In this project we would parse Go files and generate C wrappers and Dart bindings to those C wrappers so that developers can easily interop with Go from Dart.
- Design a way to interop with Go. We can explore cgo, is this at the right abstraction level for interop? Or would we want a more high level interaction? For example, since Go is garbage collected, can we have handles to Go data structures from Dart that prevent them from being Garbage collected?
- Design an approach to get the right information from a Go API. This will likely involve a Go parser and static analysis tool. That data structure then needs to be made accessible in Dart (either serialization such as in JNIgen or with direct FFI as in FFIgen).
- Generate the code that does 1 and 2.
- Profit!
(Alternatively, we could also do this project for another language. IDL, C++, Rust, …)
Good Sample Project: (1) Build a small sample project where you interop with a Go library. (2) Build a prototype for generating the bindings for that library, and (3) use a Go parser to generate those bindings.
- Possible Mentor(s): TODO
- Difficulty: Hard / Easy
- Project size: Medium (175 hours) / Large (350 hours)
- Skills: Dart, TODO
Description: TODO
Good Sample Project: TODO
Important
The wiki has moved to https://github.com/dart-lang/sdk/tree/main/docs; please don't edit the pages here.