|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Google Summer of Code 2024 results" |
| 4 | +author: Jakub Beránek, Jack Huey and Paul Lenz |
| 5 | +--- |
| 6 | + |
| 7 | +As we have previously [announced][gsoc-blog-post], the Rust Project participated |
| 8 | +in [Google Summer of Code (GSoC)][gsoc] for the first time this year. Nine contributors have been tirelessly working on their exciting projects |
| 9 | +for several months. The projects had various durations; some of them have ended in August, while the last one has been |
| 10 | +concluded in the middle of October. Now that the final reports of all the projects have been submitted, we can happily |
| 11 | +announce that all nine contributors have passed the final review! That means that we have deemed all of their projects to be successful, |
| 12 | +even though they might not have fulfilled all of their original goals (but that was expected). |
| 13 | + |
| 14 | +We had a lot of great interactions with our GSoC contributors, and based on their feedback, it seems that they were also |
| 15 | +quite happy with the GSoC program and that they had learned a lot. We are of course also incredibly grateful for all their |
| 16 | +contributions - some of them have even continued contributing after their project has ended, which is really awesome. |
| 17 | +In general, we think that Google Summer of Code 2024 was a success for the Rust Project, and we are looking forward to |
| 18 | +participating in GSoC (or similar programs) again in the near future. If you are interested in becoming a (GSoC) contributor, |
| 19 | +check out our [project idea list](https://github.com/rust-lang/google-summer-of-code). |
| 20 | + |
| 21 | +Below you can find a brief summary of each of our GSoC 2024 projects, including feedback |
| 22 | +from the contributors and mentors themselves. You can find more information about the projects |
| 23 | +[here][gsoc-project-list]. |
| 24 | + |
| 25 | +Max: |
| 26 | +"The interaction with the community and the other GSoC contributors was really great, and I think encouraging that even more would be even better for next year." |
| 27 | + |
| 28 | +### Adding lint-level configuration to cargo-semver-checks |
| 29 | + |
| 30 | +- Contributor: [Max Carr](https://github.com/suaviloquence/) |
| 31 | +- Mentor: [Predrag Gruevski](https://github.com/obi1kenobi) |
| 32 | +- [Final report](https://blog.mcarr.one/gsoc-final/) |
| 33 | + |
| 34 | +The goal of this project was to add the ability to configure lint levels to [cargo-semver-checks](https://github.com/obi1kenobi/cargo-semver-checks), a tool designed for automatically detecting semantic versioning conflicts, which might one day become a part of Cargo itself. Max has achieved this goal by implementing a [comprehensive system](https://github.com/obi1kenobi/cargo-semver-checks?tab=readme-ov-file#lint-level-configuration) for configuring `cargo-semver-checks` lints directly in the `Cargo.toml` manifest file. He has also extensively discussed the design with the Cargo team, to ensure that it is compatible with how other Cargo lints are configured. |
| 35 | + |
| 36 | +Predrag, who is the author of `cargo-semver-checks` and who mentored Max on this project, was very happy with his contributions that even went beyond his original project scope: |
| 37 | + |
| 38 | +> He designed and built one of our most-requested features, and produced design prototypes of several more features our users would love. He also observed that writing quality CLI and functional tests was hard, so he overhauled our test system to make better tests easier to make. Future work on cargo-semver-checks will be much easier thanks to the work Max put in this summer. |
| 39 | +
|
| 40 | +Great work, Max! |
| 41 | + |
| 42 | +### Implementation of a Faster Register Allocator For Cranelift |
| 43 | + |
| 44 | +- Contributor: [Demilade Sonuga](https://github.com/d-sonuga) |
| 45 | +- Mentors: [Chris Fallin](https://github.com/cfallin) and [Amanieu d'Antras](https://github.com/Amanieu) |
| 46 | +- [Final report](https://d-sonuga.netlify.app/gsoc/regalloc-iii/) |
| 47 | + |
| 48 | +TODO |
| 49 | + |
| 50 | +### Improve Rust benchmark suite |
| 51 | + |
| 52 | +- Contributor: [Eitaro Kubotera](https://github.com/s7tya) |
| 53 | +- Mentor: [Jakub Beránek](https://github.com/kobzol) |
| 54 | +- [Final report](https://gist.github.com/s7tya/96dc1cae4ca9e59841a95f0f48d023d6) |
| 55 | + |
| 56 | +This project was relatively loosely defined, with the overarching goal of improving the user interface of the [Rust compiler benchmark suite](https://github.com/rust-lang/rustc-perf). Eitaro tackled this challenge from various angles at once. He improved the visualization of runtime benchmarks, which were previously a second-class citizen in the benchmark suite, by adding them to our [dashboard](https://perf.rust-lang.org/dashboard.html) and by implementing [historical charts](https://github.com/rust-lang/rustc-perf/pull/1922) of runtime benchmark results, which help us figure out how is a given benchmark behaving over a longer time span. |
| 57 | + |
| 58 | +Another improvement that he has worked on was embedding a profiler trace visualizer directly within the `rustc-perf` website. This was a challenging task, which required him to evaluate several visualizers and figure out a way how to include them within the source code of the benchmark suite in a non-disruptive way. In the end, he managed to integrate [Perfetto](https://ui.perfetto.dev/) within the suite website, and also performed various [optimizations](https://github.com/rust-lang/rustc-perf/pull/1968) to improve the performance of loading compilation profiles. |
| 59 | + |
| 60 | +Last, but not least, Eitaro also created a completely new user interface for the benchmark suite, which runs entirely in the [terminal](https://github.com/rust-lang/rustc-perf/pull/1955). Using this interface, Rust compiler contributors can examine the performance of the compiler without having to start the rustc-perf website, which can be challenging to deploy locally. |
| 61 | + |
| 62 | +Apart from the mentioned contributions, Eitaro also made a lot of other smaller improvements to various parts of the benchmark suite. Thank you for all your work! |
| 63 | + |
| 64 | +### Move cargo shell completions to Rust |
| 65 | + |
| 66 | +- Contributor: [shanmu](https://github.com/shannmu) |
| 67 | +- Mentor: [Ed Page](https://github.com/epage) |
| 68 | +- [Final report](https://hackmd.io/@PthRWaPvSmS_2Yu_GLbGpg/Hk-ficKpC) |
| 69 | + |
| 70 | +TODO |
| 71 | + |
| 72 | +### Rewriting Esoteric, Error-Prone Makefile Tests Using Robust Rust Features |
| 73 | + |
| 74 | +- Contributor: [Julien Robert](https://github.com/Oneirical) |
| 75 | +- Mentor: [Jieyou Xu](https://github.com/jieyouxu) |
| 76 | +- [Final report](https://oneirical.github.io/gsocfinal/) |
| 77 | + |
| 78 | +TODO |
| 79 | + |
| 80 | +### Rewriting the Rewrite trait |
| 81 | + |
| 82 | +- Contributor: [SeoYoung Lee](https://github.com/ding-young) |
| 83 | +- Mentor: [Yacin Tmimi](https://github.com/ytmimi) |
| 84 | +- [Final report](https://ding-young.github.io/posts/gsoc-final/) |
| 85 | + |
| 86 | +TODO |
| 87 | + |
| 88 | +### Rust to .NET compiler - add support for compiling & running cargo tests |
| 89 | + |
| 90 | +- Contributor: [Fractal Fir](https://github.com/FractalFir) |
| 91 | +- Mentor: [Jack Huey](https://github.com/jackh726) |
| 92 | +- [Final report](https://fractalfir.github.io/generated_html/rustc_codegen_clr_v0_2_0.html) |
| 93 | + |
| 94 | +TODO |
| 95 | + |
| 96 | +### Sandboxed and Deterministic Proc Macro using Wasm |
| 97 | + |
| 98 | +- Contributor: [Apurva Mishra](https://github.com/mav3ri3k) |
| 99 | +- Mentor: [David Lattimore](https://github.com/davidlattimore) |
| 100 | +- [Final report](https://github.com/mav3ri3k/rust/blob/gsoc24/gsoc24.md) |
| 101 | + |
| 102 | +TODO |
| 103 | + |
| 104 | +### Tokio async support in Miri |
| 105 | + |
| 106 | +- Contributor: [Tiffany Pek Yuan](https://github.com/tiif) |
| 107 | +- Mentor: [Oli Scherer](https://github.com/oli-obk) |
| 108 | +- [Final report](https://gist.github.com/tiif/3e08ba6e8cfb1d078e6155410108ae48) |
| 109 | + |
| 110 | +TODO |
| 111 | + |
| 112 | +## Conclusion |
| 113 | + |
| 114 | +We are grateful that we could have been a part of the Google Summer of Code 2024 program, and we would also like to extend our gratitude to all our contributors! We are looking forward to joining the GSoC program again next year. |
| 115 | + |
| 116 | +[gsoc]: https://summerofcode.withgoogle.com |
| 117 | +[gsoc-blog-post]: https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html |
| 118 | +[gsoc-project-list]: https://github.com/rust-lang/google-summer-of-code/blob/main/gsoc/past/2024.md |
| 119 | +[gsoc-repo]: https://github.com/rust-lang/google-summer-of-code |
0 commit comments