<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <generator uri="https://blog.rust-lang.org/tags/google-summer-of-code/" version="0.1.0">Posts tagged &quot;google-summer-of-code&quot; | Rust Blog</generator>
    <link href="https://blog.rust-lang.org/tags/google-summer-of-code/feed.xml" rel="self" type="application/atom+xml" />
    <link href="https://blog.rust-lang.org/tags/google-summer-of-code/" rel="alternate" type="text/html" />
    <id>https://blog.rust-lang.org/tags/google-summer-of-code/</id>
    <title>Posts tagged &quot;google-summer-of-code&quot; | Rust Blog</title>
    <subtitle>Empowering everyone to build reliable and efficient software.</subtitle>
    <author>
        <name>Maintained by the Rust Teams.</name>
        <uri>https://github.com/rust-lang/blog.rust-lang.org/</uri>
    </author>
    <updated>2026-10-20T17:12:06+00:00</updated>

    
    <entry>
        <title>Announcing Google Summer of Code 2026 selected projects</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/04/30/gsoc-2026-selected-projects/" type="text/html" title="Announcing Google Summer of Code 2026 selected projects" />
        <published>2026-04-30T00:00:00+00:00</published>
        <updated>2026-04-30T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/04/30/gsoc-2026-selected-projects/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/04/30/gsoc-2026-selected-projects/">&lt;p&gt;As &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2026/02/19/Rust-participates-in-GSoC-2026/&quot;&gt;previously announced&lt;/a&gt;, the Rust Project is participating in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com&quot;&gt;Google Summer of Code (GSoC)&lt;/a&gt; 2026. GSoC is a global program organized by Google that is designed to bring new contributors to the world of open source.&lt;/p&gt;
&lt;p&gt;A few months ago, we published a list of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;GSoC project ideas&lt;/a&gt;, and started discussing these projects with potential GSoC applicants on our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/421156-gsoc&quot;&gt;Zulip&lt;/a&gt;. We had many interesting discussions with the potential contributors, and even saw some of them making non-trivial contributions to various Rust Project repositories before GSoC officially started!&lt;/p&gt;
&lt;p&gt;The applicants prepared and submitted their project proposals by the end of March. This year, we received 96 proposals, which is a 50% increase from last year. We are glad that there was again a lot of interest in our projects! Like many other GSoC organizations this year, we somewhat struggled with some AI-generated proposals and low-quality contributions generated using AI agents, but it stayed manageable.&lt;/p&gt;
&lt;p&gt;GSoC requires us to produce an ordered list of the best proposals, which is always challenging, as Rust is a big project with many priorities. Our mentors examined the submitted proposals and evaluated them based on their prior interactions with the given applicant, their contributions so far, the quality of the proposal itself, but also the importance of the proposed project for the Rust Project and its wider community. We also had to take mentor bandwidth and availability into account. Unfortunately, we had to cancel some projects due to several mentors losing their funding for Rust work in the past few weeks.&lt;/p&gt;
&lt;p&gt;As is usual in GSoC, even though some project topics received multiple proposals&lt;sup class&#x3D;&quot;footnote-reference&quot; id&#x3D;&quot;fr-most-popular-1&quot;&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/04/30/gsoc-2026-selected-projects/#fn-most-popular&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;, we had to pick only one proposal per project topic. We also had to choose between proposals targeting different work to avoid overloading a single mentor with multiple projects. In the end, we narrowed the list down to the best proposals that we could still realistically support with our available mentor pool. We submitted this list and eagerly awaited how many of them would be accepted into GSoC.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;selected-projects&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#selected-projects&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Selected projects&lt;/h2&gt;
&lt;p&gt;On the 30th of April, Google has announced the accepted projects. We are happy to share that &lt;strong&gt;13&lt;/strong&gt; Rust Project proposals were accepted by Google for Google Summer of Code 2026. That is a lot of projects! We are really happy and excited about GSoC 2026!&lt;/p&gt;
&lt;p&gt;Below you can find the list of accepted proposals (in alphabetical order), along with the names of their authors and the assigned mentor(s):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/eF3fkjrN&quot;&gt;A Frontend for Safe GPU Offloading in Rust&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sa4dus&quot;&gt;Marcelo Domínguez&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/Fx0vHvcq&quot;&gt;Adding WebAssembly Linking Support to Wild&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lapla-cogito&quot;&gt;Kei Akiyama&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidlattimore&quot;&gt;David Lattimore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/Wg1mCCHL&quot;&gt;Bringing autodiff and offload into Rust CI&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sgasho&quot;&gt;Shota Sugano&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/TBpqK07H&quot;&gt;Debugger for Miri&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/moabo3li&quot;&gt;Mohamed Ali Mohamed&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oli Scherer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/xFrskRCv&quot;&gt;Implementing impl and mut restrictions&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/CoCo-Japan-pan&quot;&gt;Ryosuke Yamano&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jhpratt&quot;&gt;Jacob Pratt&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Urgau&quot;&gt;Urgau&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/g4xMTT5l&quot;&gt;Improving Ergonomics and Safety of serialport-rs&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/NONnonHere&quot;&gt;Tanmay&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sirhcel&quot;&gt;Christian Meusel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/AObylxqh&quot;&gt;libc: transition differing bit-width time and offset variants and deprecate bug-prone constants&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dybucc&quot;&gt;Adam Martinez&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tgross35&quot;&gt;Trevor Gross&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/svblODn5&quot;&gt;Link Linux kernel and its Modules with Wild&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/vishruth-thimmaiah&quot;&gt;Vishruth Thimmaiah&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidlattimore&quot;&gt;David Lattimore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/lif4YQOE&quot;&gt;Migrating rust-analyzer assists to SyntaxEditor&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Shourya742&quot;&gt;Shourya Sharma&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ChayimFriedman2&quot;&gt;Chayim Refael Friedman&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Veykril&quot;&gt;Lukas Wirth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/Aak8J6RB&quot;&gt;Port std::arch test suite to rust-lang/rust&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/xonx4l&quot;&gt;Sumit Kumar&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Kobzol&quot;&gt;Jakub Beránek&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/folkertdev&quot;&gt;Folkert de Vries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/l4jlMDP9&quot;&gt;Reorganizing tests/ui/issues&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/zedddie&quot;&gt;zedddie&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Teapot4195&quot;&gt;Teapot&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Kivooeo&quot;&gt;Kivooeo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/gzkF5BG0&quot;&gt;Utilize debugger APIs to improve debug info test accuracy and error reporting&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Walnut356&quot;&gt;Anthony Bolden&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Kobzol&quot;&gt;Jakub Beránek&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jieyouxu&quot;&gt;Jieyou Xu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/projects/jP7dTlN6&quot;&gt;XDG path support for rustup&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Cloud0310&quot;&gt;Guicheng Liu&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rami3l&quot;&gt;rami3l&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Congratulations to all applicants whose project was selected!&lt;/strong&gt; Our mentors are looking forward to working with you on these exciting projects to improve the Rust ecosystem. You can expect to hear from us soon, so that we can start coordinating the work on your GSoC projects.&lt;/p&gt;
&lt;p&gt;We are excited to mentor three contributors who already experienced GSoC with us in the previous year. Welcome back, Kei, Marcelo and Shourya!&lt;/p&gt;
&lt;p&gt;We would like to thank all the applicants whose proposal was sadly not accepted, for their interactions with the Rust community and contributions to various Rust projects. There were some great proposals that did not make the cut, in large part because of limited mentorship capacity. However, even if your proposal was not accepted, we would be happy if you would consider contributing to the projects that got you interested, even outside GSoC! Our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;project idea list&lt;/a&gt; is still current and could serve as a general entry point for contributors that would like to work on projects that would help the Rust Project and the Rust ecosystem. Some of the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2026/goals.html&quot;&gt;Rust Project Goals&lt;/a&gt; are also looking for help.&lt;/p&gt;
&lt;p&gt;There is a good chance we&#x27;ll participate in GSoC next year as well (though we can&#x27;t promise anything at this moment), so we hope to receive your proposals again in the future!&lt;/p&gt;
&lt;p&gt;The accepted GSoC projects will run for several months. After GSoC 2026 finishes (in autumn of 2026), we will publish a blog post in which we will summarize the outcome of the accepted projects.&lt;/p&gt;
&lt;section class&#x3D;&quot;footnotes&quot;&gt;
&lt;ol class&#x3D;&quot;footnotes-list&quot;&gt;
&lt;li id&#x3D;&quot;fn-most-popular&quot;&gt;
&lt;p&gt;The most popular project topic received fourteen different proposals! &lt;a href&#x3D;&quot;https://blog.rust-lang.org/2026/04/30/gsoc-2026-selected-projects/#fr-most-popular-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>

        <author>
            <name>Jakub Beránek</name>
        </author>
    </entry>
    <entry>
        <title>Rust participates in Google Summer of Code 2026</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2026/02/19/Rust-participates-in-GSoC-2026/" type="text/html" title="Rust participates in Google Summer of Code 2026" />
        <published>2026-02-19T00:00:00+00:00</published>
        <updated>2026-02-19T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2026/02/19/Rust-participates-in-GSoC-2026/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2026/02/19/Rust-participates-in-GSoC-2026/">&lt;p&gt;We are happy to announce that the Rust Project will again be participating in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com&quot;&gt;Google Summer of Code (GSoC) 2026&lt;/a&gt;, same as in the previous two years. If you&#x27;re not eligible or interested in participating in GSoC, then most of this post likely isn&#x27;t relevant to you; if you are, this should contain some useful information and links.&lt;/p&gt;
&lt;p&gt;Google Summer of Code (GSoC) is an annual global program organized by Google that aims to bring new contributors to the world of open-source. The program pairs organizations (such as the Rust Project) with contributors (usually students), with the goal of helping the participants make meaningful open-source contributions under the guidance of experienced mentors.&lt;/p&gt;
&lt;p&gt;The organizations that have been accepted into the program have been &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2026/organizations&quot;&gt;announced&lt;/a&gt; by Google. The GSoC applicants now have several weeks to discuss project ideas with mentors. Later, they will send project proposals for the projects that they found the most interesting. If their project proposal is accepted, they will embark on a several months long journey during which they will try to complete their proposed project under the guidance of an assigned mentor.&lt;/p&gt;
&lt;p&gt;We have prepared a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;list of project ideas&lt;/a&gt; that can serve as inspiration for potential GSoC contributors that would like to send a project proposal to the Rust organization. However, applicants can also come up with their own project ideas. You can discuss project ideas or try to find mentors in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/421156-gsoc&quot;&gt;#gsoc&lt;/a&gt; Zulip stream. We have also prepared a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code/blob/main/gsoc/proposal-guide.md&quot;&gt;proposal guide&lt;/a&gt; that should help you with preparing your project proposals. We would also like to bring your attention to our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code/tree/main/gsoc&quot;&gt;GSoC AI policy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can start discussing the project ideas with Rust Project mentors and maintainers immediately, but you might want to keep the following important dates in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The project proposal application period starts on March 16, 2026. From that date you can submit project proposals into the GSoC dashboard.&lt;/li&gt;
&lt;li&gt;The project proposal application period ends on &lt;strong&gt;March 31, 2026&lt;/strong&gt; at 18:00 UTC. Take note of that deadline, as there will be no extensions!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are interested in contributing to the Rust Project, we encourage you to check out our project idea list and send us a GSoC project proposal! Of course, you are also free to discuss these projects and/or try to move them forward even if you do not intend to (or cannot) participate in GSoC. We welcome all contributors to Rust, as there is always enough work to do.&lt;/p&gt;
&lt;p&gt;Our GSoC contributors were quite successful in the past two years (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2024/11/07/gsoc-2024-results.html&quot;&gt;2024&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results&quot;&gt;2025&lt;/a&gt;), so we are excited what this year&#x27;s GSoC will bring! We hope that participants in the program can improve their skills, but also would love for this to bring new contributors to the Project and increase the awareness of Rust in general. Like last year, we expect to publish blog posts in the future with updates about our participation in the program.&lt;/p&gt;
</content>

        <author>
            <name>Jakub Beránek, Jack Huey</name>
        </author>
    </entry>
    <entry>
        <title>Google Summer of Code 2025 results</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/" type="text/html" title="Google Summer of Code 2025 results" />
        <published>2025-11-18T00:00:00+00:00</published>
        <updated>2025-11-18T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/">&lt;p&gt;As we have &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2025/05/08/gsoc-2025-selected-projects/&quot;&gt;announced&lt;/a&gt; previously this year, the Rust Project participated
in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com&quot;&gt;Google Summer of Code (GSoC)&lt;/a&gt; for the second time. Almost twenty contributors have been working very hard on their projects for several months. Same as last year, the projects had various durations, so some of them have ended in September, while the last ones have been concluded in the middle of November. Now that the final reports of all projects have been submitted, we are happy to announce that 18 out of 19 projects have been successful! We had a very large number of projects this year, so we consider this number of successfully finished projects to be a great result.&lt;/p&gt;
&lt;p&gt;We had awesome interactions with our GSoC contributors over the summer, and through a video call, we also had a chance to see each other and discuss the accepted GSoC projects. Our contributors have learned a lot of new things and collaborated with us on making Rust better for everyone, and we are very grateful for all their contributions! Some of them have even continued contributing after their project has ended, and we hope to keep working with them in the future, to further improve open-source Rust software. &lt;strong&gt;We would like to thank all our Rust GSoC 2025 contributors. You did a great job!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Same as last year, Google Summer of Code 2025 was overall a success for the Rust Project, this time with more than double the number of projects. We think that GSoC is a great way of introducing new contributors to our community, and we are looking forward to participating in GSoC (or similar programs) again in the near future. If you are interested in becoming a (GSoC) contributor, check out our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;GSoC project idea list&lt;/a&gt; and our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/how-to-start-contributing.html&quot;&gt;guide for new contributors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Below you can find a brief summary of our GSoC 2025 projects. You can find more information about the original goals of the projects &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code/blob/main/gsoc/runs/2025.md&quot;&gt;here&lt;/a&gt;. For easier navigation, here is an index of the project descriptions in alphabetical order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#abi-layout-handling-for-the-automatic-differentiation-feature&quot;&gt;ABI/Layout handling for the automatic differentiation feature&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sa4dus&quot;&gt;Marcelo Domínguez&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#add-safety-contracts&quot;&gt;Add safety contracts&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dawidl022&quot;&gt;Dawid Lachowicz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#bootstrap-of-rustc-with-rustc-codegen-gcc&quot;&gt;Bootstrap of rustc with rustc_codegen_gcc&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/FractalFir&quot;&gt;Michał Kostrubiec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#cargo-build-script-delegation&quot;&gt;Cargo: Build script delegation&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/namanlp&quot;&gt;Naman Garg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#distributed-and-resource-efficient-verification&quot;&gt;Distributed and resource-efficient verification&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/zjp-CN&quot;&gt;Jiping Zhou&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#enable-witness-generation-in-cargo-semver-checks&quot;&gt;Enable Witness Generation in cargo-semver-checks&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GlitchlessCode&quot;&gt;Talyn Veugelers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#extend-behavioural-testing-of-std-arch-intrinsics&quot;&gt;Extend behavioural testing of std::arch intrinsics&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/madhav-madhusoodanan&quot;&gt;Madhav Madhusoodanan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#implement-merge-functionality-in-bors&quot;&gt;Implement merge functionality in bors&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Sakib25800&quot;&gt;Sakibul Islam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#improve-bootstrap&quot;&gt;Improve bootstrap&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Shourya742&quot;&gt;Shourya Sharma&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#improve-wild-linker-test-suites&quot;&gt;Improve Wild linker test suites&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lapla-cogito&quot;&gt;Kei Akiyama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#improving-the-rustc-parallel-frontend-parallel-macro-expansion&quot;&gt;Improving the Rustc Parallel Frontend: Parallel Macro Expansion&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/LorrensP-2158466&quot;&gt;Lorrens Pantelis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#make-cargo-semver-checks-faster&quot;&gt;Make cargo-semver-checks faster&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/CLIDragon&quot;&gt;Joseph Chung&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#make-rustup-concurrent&quot;&gt;Make Rustup Concurrent&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/FranciscoTGouveia&quot;&gt;Francisco Gouveia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#mapping-the-maze-of-rust-s-ui-test-suite-with-established-continuous-integration-practices&quot;&gt;Mapping the Maze of Rust&#x27;s UI Test Suite with Established Continuous Integration Practices&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oneirical&quot;&gt;Julien Robert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#modernising-the-libc-crate&quot;&gt;Modernising the libc Crate&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mbyx&quot;&gt;Abdul Muiz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#prepare-stable-mir-crate-for-publishing&quot;&gt;Prepare stable_mir crate for publishing&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/makai410&quot;&gt;Makai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#prototype-an-alternative-architecture-for-cargo-fix-using-cargo-check&quot;&gt;Prototype an alternative architecture for cargo fix using cargo check&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Pyr0de&quot;&gt;Glen Thalakottur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#prototype-cargo-plumbing-commands&quot;&gt;Prototype Cargo Plumbing Commands&lt;/a&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/secona&quot;&gt;Vito Secona&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And now strap in, as there is a ton of great content to read about here!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;abi-layout-handling-for-the-automatic-differentiation-feature&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#abi-layout-handling-for-the-automatic-differentiation-feature&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
ABI/Layout handling for the automatic differentiation feature&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sa4dus&quot;&gt;Marcelo Domínguez&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentors: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oli Scherer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://sa4dus.github.io/posts/gsoc2025-final-report/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;std::autodiff&lt;/code&gt; module allows computing gradients and derivatives in the calculus sense. It provides two autodiff macros, which can be applied to user-written functions and automatically generate modified versions of those functions, which also compute the requested gradients and derivatives. This functionality is very useful especially in the context of scientific computing and implementation of machine-learning models.&lt;/p&gt;
&lt;p&gt;Our autodiff frontend was facing two challenges.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, we would generate a new function through our macro expansion, however, we would not have a suitable function body for it yet. Our autodiff implementation relies on an LLVM plugin to generate the function body. However, this plugin only gets called towards the end of the compilation pipeline. Earlier optimization passes, either on the LLVM or the Rust side, could look at the placeholder body and either &quot;optimize&quot; or even delete the function since it has no clear purpose yet.&lt;/li&gt;
&lt;li&gt;Second, the flexibility of our macros was causing issues, since it allows requesting derivative computations on a per-argument basis. However, when we start to lower Rust arguments to our compiler backends like LLVM, we do not always have a 1:1 match of Rust arguments to LLVM arguments. As a simple example, an array with two double values might be passed as two individual double values on LLVM level, whereas an array with three doubles might be passed via a pointer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Marcelo helped rewrite our &lt;code&gt;autodiff&lt;/code&gt; macros to not generate hacky placeholder function bodies, but instead introduced a proper &lt;code&gt;autodiff&lt;/code&gt; intrinsic. This is the proper way for us to declare that an implementation of this function is not available yet and will be provided later in the compilation pipeline. As a consequence, our generated functions were not deleted or incorrectly optimized anymore. The intrinsic PR also allowed removing some previous hacks and therefore reduced the total lines of code in the Rust compiler by over 500! You can find more details in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/142640&quot;&gt;this PR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Beyond autodiff work, Marcelo also initiated work on GPU offloading intrinsics, and helped with multiple bugs in our argument handling. We would like to thank Marcelo for all his great work!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;add-safety-contracts&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#add-safety-contracts&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Add safety contracts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dawidl022&quot;&gt;Dawid Lachowicz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tautschnig&quot;&gt;Michael Tautschnig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://gist.github.com/dawidl022/e7ec4e1674156dd43c58e76e05267abe&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Rust Project has an ambitious goal to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h1/std-contracts.html&quot;&gt;instrument the Rust standard library with safety contracts&lt;/a&gt;, moving from informal comments that specify safety requirements of &lt;code&gt;unsafe&lt;/code&gt; functions to executable Rust code. This transformation represents a significant step toward making Rust&#x27;s safety guarantees more explicit and verifiable. To prioritize which functions should receive contracts first, there is a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/model-checking/verify-rust-std&quot;&gt;verification contest&lt;/a&gt; ongoing.&lt;/p&gt;
&lt;p&gt;Given that Rust contracts are still in their &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/128044&quot;&gt;early stages&lt;/a&gt;, Dawid&#x27;s project was intentionally open-ended in scope and direction. This flexibility allowed Dawid to identify and tackle several key areas that would add substantial value to the contracts ecosystem. His contributions were in the following three main areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pragmatic Contracts Integration&lt;/strong&gt;: Refactoring &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/144438&quot;&gt;contract HIR lowering&lt;/a&gt; to ensure no contract code is executed when contract-checks are disabled. This has major impact as it ensures that contracts do not have runtime cost when contract checks are disabled.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Variable Reference Capability&lt;/strong&gt;: Adding the ability to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/144444&quot;&gt;refer&lt;/a&gt; to variables from preconditions within postconditions. This fundamental enhancement to the contracts system has been fully implemented and merged into the compiler. This feature provides developers with much more expressive power when writing contracts, allowing them to establish relationships between input and output states.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Separation Logic Integration&lt;/strong&gt;: The bulk of Dawid&#x27;s project involved identifying, understanding, and planning the introduction of owned and block ownership predicates for separation-logic style reasoning in contracts for unsafe Rust code. This work required extensive research and collaboration with experts in the field. Dawid engaged in multiple discussions with authors of Rust validation tools and Miri developers, both in person and through Zulip discussion threads. The culmination of this research is captured in a comprehensive MCP (Major Change Proposal) that Dawid &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/compiler-team/issues/942&quot;&gt;created&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dawid&#x27;s work represents crucial foundational progress for Rust&#x27;s safety contracts initiative. By successfully implementing variable reference capabilities and laying the groundwork for separation logic integration, he has positioned the contracts feature for significant future development. His research and design work will undoubtedly influence the direction of this important safety feature as it continues to mature. Thank you very much!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;bootstrap-of-rustc-with-rustc-codegen-gcc&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#bootstrap-of-rustc-with-rustc-codegen-gcc&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Bootstrap of rustc with rustc_codegen_gcc&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/FractalFir&quot;&gt;Michał Kostrubiec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/antoyo&quot;&gt;antoyo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://fractalfir.github.io/generated_html/gsoc_2025_wp.html&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal of this project was to improve the Rust GCC codegen backend (&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc_codegen_gcc&quot;&gt;&lt;code&gt;rustc_codegen_gcc&lt;/code&gt;&lt;/a&gt;), so that it would be able to compile the &quot;stage 2&quot;&lt;sup class&#x3D;&quot;footnote-reference&quot; id&#x3D;&quot;fr-bootstrapping-1&quot;&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#fn-bootstrapping&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; Rust compiler (&lt;code&gt;rustc&lt;/code&gt;) itself &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.antoyo.xyz/rustc_codegen_gcc-progress-report-10&quot;&gt;again&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You might remember that Michał already participated in GSoC &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2024/11/07/gsoc-2024-results/#rust-to-net-compiler-add-support-for-compiling-running-cargo-tests&quot;&gt;last year&lt;/a&gt;, where he was working on his own .NET Rust codegen backend, and he did an incredible amount of work. This year, his progress was somehow even faster. Even before the official GSoC implementation period started (!), he essentially completed his original project goal and managed to build &lt;code&gt;rustc&lt;/code&gt; with GCC. This was no small feat, as he had to investigate and fix several miscompilations that occurred when functions marked with &lt;code&gt;#[inline(always)]&lt;/code&gt; were called recursively or when the compiled program was trying to work with 128-bit integers. You can read more about this initial work at his &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://fractalfir.github.io/generated_html/cg_gcc_bootstrap.html&quot;&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After that, he immediately started working on stretch goals of his project. The first one was to get a &quot;stage-3&quot; &lt;code&gt;rustc&lt;/code&gt; build working, for which he had to vastly &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc_codegen_gcc/pull/680&quot;&gt;improve&lt;/a&gt; the memory consumption of the codegen backend.&lt;/p&gt;
&lt;p&gt;Once that was done, he moved on to yet another goal, which was to build &lt;code&gt;rustc&lt;/code&gt; for a platform not supported by LLVM. He made progress on this for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc_codegen_gcc/issues/742&quot;&gt;Dec Alpha&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc_codegen_gcc/issues/744&quot;&gt;m68k&lt;/a&gt;. He also attempted to compile &lt;code&gt;rustc&lt;/code&gt; on Aarch64, which led to him finding an ABI bug. Ultimately, he managed to build a &lt;code&gt;rustc&lt;/code&gt; for m68k (with a few workarounds that we will need to fix in the future). That is a very nice first step to porting Rust to new platforms unsupported by LLVM, and is important for initiatives such as &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-for-linux.com/&quot;&gt;Rust for Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Michał had to spend a lot of time starting into assembly code and investigating arcane ABI problems. In order to make this easier for everyone, he implemented support for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc_codegen_gcc/pull/688&quot;&gt;fuzzing&lt;/a&gt; and automatically checking &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc_codegen_gcc/pull/710&quot;&gt;ABI mismatches&lt;/a&gt; in the GCC codegen backend. You can read more about his testing and fuzzing efforts &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://fractalfir.github.io/generated_html/cg_gcc_bootstrap_2.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We were really impressed with what Michał was able to achieve, and we really appreciated working with him this summer. Thank you for all your work, Michał!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;cargo-build-script-delegation&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#cargo-build-script-delegation&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Cargo: Build script delegation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/namanlp&quot;&gt;Naman Garg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://gist.github.com/namanlp/90f96165d92f848b0452b34c68892a1c&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cargo build scripts come at a compile-time cost, because even to run &lt;code&gt;cargo check&lt;/code&gt;, they must be built as if you ran &lt;code&gt;cargo build&lt;/code&gt;, so that they can be executed during compilation. Even though we try to identify ways to reduce the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/14948&quot;&gt;need&lt;/a&gt; to write build scripts in the first place, that may not always be doable. However, if we could shift build scripts from being defined in every package that needs them, into a few core build script packages, we could both reduce the compile-time overhead, and also improve their auditability and transparency. You can find more information about this idea &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#metabuild&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first step required to delegate build scripts to packages is to be able to run multiple build scripts per crate, so that is what Naman was primarily working on. He introduced a new unstable &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/pull/15704&quot;&gt;&lt;code&gt;multiple-build-scripts&lt;/code&gt;&lt;/a&gt; feature to Cargo, implemented support for parsing an array of build scripts in &lt;code&gt;Cargo.toml&lt;/code&gt;, and extended Cargo so that it can now execute multiple build scripts while building a single crate. He also added a set of tests to ensure that this feature will work as we expect it to.&lt;/p&gt;
&lt;p&gt;Then he worked on ensuring that the execution of builds scripts is performed in a deterministic order, and that crates can access the output of each build script separately. For example, if you have the following configuration:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;toml&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;package&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;build&lt;/span&gt;&lt;span&gt; &#x3D;&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;windows-manifest.rs&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-19 z-d-13&quot;&gt;release-info.rs&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-2 z-d-13&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;then the corresponding crate is able to access the &lt;code&gt;OUT_DIR&lt;/code&gt;s of both build scripts using &lt;code&gt;env!(&quot;windows-manifest_OUT_DIR&quot;)&lt;/code&gt; and &lt;code&gt;env!(&quot;release-info_OUTDIR&quot;)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;As future work, we would like to implement the ability to pass parameters to build scripts through metadata specified in &lt;code&gt;Cargo.toml&lt;/code&gt; and then implement the actual build script delegation to external build scripts using &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#artifact-dependencies&quot;&gt;artifact-dependencies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We would like to thank Naman for helping improving Cargo and laying the groundwork for a feature that could have compile-time benefits across the Rust ecosystem!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;distributed-and-resource-efficient-verification&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#distributed-and-resource-efficient-verification&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Distributed and resource-efficient verification&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/zjp-CN&quot;&gt;Jiping Zhou&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tautschnig&quot;&gt;Michael Tautschnig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/os-checker/distributed-verification/blob/f480981dbf529a25ae50e4cc799e5398165fc325/GSoC2025.md&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal of this project was to address critical scalability challenges of formally verifying Rust&#x27;s standard library by developing a distributed verification system that intelligently manages computational resources and minimizes redundant work. The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/model-checking/verify-rust-std&quot;&gt;Rust standard library verification project&lt;/a&gt; faces significant computational overhead when verifying large codebases, as traditional approaches re-verify unchanged code components. With Rust&#x27;s standard library containing thousands of functions and continuous development cycles, this inefficiency becomes a major bottleneck for practical formal verification adoption.&lt;/p&gt;
&lt;p&gt;Jiping implemented a distributed verification system with several key innovations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intelligent Change Detection&lt;/strong&gt;: The system uses hash-based analysis to identify which parts of the codebase have actually changed, allowing verification to focus only on modified components and their dependencies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-Tool Orchestration&lt;/strong&gt;: The project coordinates multiple verification backends including Kani model checker, with careful version pinning and compatibility management.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distributed Architecture&lt;/strong&gt;: The verification workload is distributed across multiple compute nodes, with intelligent scheduling that considers both computational requirements and dependency graphs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-time Visualization&lt;/strong&gt;: Jiping built a comprehensive web interface that provides live verification status, interactive charts, and detailed proof results. You can check it out &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://os-checker.github.io/distributed-verification/chart&quot;&gt;here&lt;/a&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find the created distributed verification tool in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/os-checker/distributed-verification&quot;&gt;this&lt;/a&gt; repository. Jiping&#x27;s work established a foundation for scalable formal verification that can adapt to the growing complexity of Rust&#x27;s ecosystem, while maintaining verification quality and completeness, which will go a long way towards ensuring that Rust&#x27;s standard library remains safe and sound. Thank you for your great work!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;enable-witness-generation-in-cargo-semver-checks&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#enable-witness-generation-in-cargo-semver-checks&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Enable Witness Generation in cargo-semver-checks&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GlitchlessCode&quot;&gt;Talyn Veugelers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi&quot;&gt;Predrag Gruevski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://glitchlesscode.ca/posts/2025-11-05a/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi/cargo-semver-checks&quot;&gt;&lt;code&gt;cargo-semver-checks&lt;/code&gt;&lt;/a&gt; is a Cargo subcommand for finding SemVer API breakages in Rust crates. Talyn&#x27;s project aimed to lay the groundwork for it to tackle our most vexing limitation: the inability to catch SemVer breakage due to type changes.&lt;/p&gt;
&lt;p&gt;Imagine a crate makes the following change to its public API:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;//&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-12 z-d-7&quot;&gt; baseline version&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; example&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;value&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; i64&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;//&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-12 z-d-7&quot;&gt; new version&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; example&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;value&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; String&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is &lt;em&gt;clearly&lt;/em&gt; a major breaking change, right? And yet &lt;code&gt;cargo-semver-checks&lt;/code&gt; with its hundreds of lints is &lt;em&gt;still&lt;/em&gt; unable to flag this. While this case seems trivial, it&#x27;s just the tip of an enormous iceberg. Instead of changing &lt;code&gt;i64&lt;/code&gt; to &lt;code&gt;String&lt;/code&gt;, what if the change was from &lt;code&gt;i64&lt;/code&gt; to &lt;code&gt;impl Into&amp;lt;i64&amp;gt;&lt;/code&gt;, or worse, into some monstrosity like:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;pub&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; example&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;T&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; U&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; const&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; N&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; usize&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;    value&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt; impl&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-11&quot;&gt; for&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; First&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;&amp;#39;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; T&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; +&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; Second&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;U&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; N&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt; +&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; Sync&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Figuring out whether this change is breaking requires checking whether the original &lt;code&gt;i64&lt;/code&gt; parameter type can &quot;fit&quot; into that monstrosity of an &lt;code&gt;impl Trait&lt;/code&gt; type. But reimplementing a Rust type checker and trait solver inside &lt;code&gt;cargo-semver-checks&lt;/code&gt; is out of the question! Instead, we turn to a technique created for &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://predr.ag/blog/semver-violations-are-common-better-tooling-is-the-answer/&quot;&gt;a previous study of SemVer breakage on crates.io&lt;/a&gt;—we generate a &quot;witness&quot; program that will fail to compile if, and only if, there&#x27;s a breaking change between the two versions.&lt;/p&gt;
&lt;p&gt;The witness program is a separate crate that can be made to depend on either the old or the new version of the crate being scanned. If our &lt;code&gt;example&lt;/code&gt; function comes from a crate called &lt;code&gt;upstream&lt;/code&gt;, its witness program would look something like:&lt;/p&gt;
&lt;pre class&#x3D;&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang&#x3D;&quot;rust&quot;&gt;&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-13 z-d-7&quot;&gt;//&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-12 z-d-7&quot;&gt; take the same parameter type as the baseline version&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-l-14 z-d-4&quot;&gt;fn&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt; witness&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;value&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;:&lt;/span&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt; i64&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span class&#x3D;&quot;z-d-2&quot;&gt;    upstream&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-1&quot;&gt;::&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-16&quot;&gt;example&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class&#x3D;&quot;z-l-4 z-d-9&quot;&gt;value&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class&#x3D;&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;This example is cherry-picked to be easy to understand. Witness programs are rarely this straightforward!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Attempting to &lt;code&gt;cargo check&lt;/code&gt; the witness while plugging in the new version of &lt;code&gt;upstream&lt;/code&gt; forces &lt;em&gt;the Rust compiler&lt;/em&gt; to decide whether &lt;code&gt;i64&lt;/code&gt; matches the new &lt;code&gt;impl Trait&lt;/code&gt; parameter. If &lt;code&gt;cargo check&lt;/code&gt; passes without errors, there&#x27;s no breaking change here. But if there&#x27;s a compilation error, then this is concrete, incontrovertible evidence of breakage!&lt;/p&gt;
&lt;p&gt;Over the past 22+ weeks, Talyn worked tirelessly to move this from an idea to a working proof of concept. For every problem we foresaw needing to solve, ten more emerged along the way. Talyn did a lot of design work to figure out an approach that would be able to deal with crates coming from various sources (crates.io, a path on disk, a git revision), would support multiple rustdoc JSON formats for all the hundreds of existing lints, and do so in a fashion that doesn&#x27;t get in the way of adding hundreds more lints in the future.&lt;/p&gt;
&lt;p&gt;Even the above list of daunting challenges fails to do justice to the complexity of this project. Talyn created a witness generation prototype that lays the groundwork for robust checking of type-related SemVer breakages in the future. The success of this work is key to the &lt;code&gt;cargo-semver-checks&lt;/code&gt; roadmap for 2026 and beyond. We would like to thank Talyn for their work, and we hope to continue working with them on improving witness generation in the future.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;extend-behavioural-testing-of-std-arch-intrinsics&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#extend-behavioural-testing-of-std-arch-intrinsics&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Extend behavioural testing of std::arch intrinsics&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/madhav-madhusoodanan&quot;&gt;Madhav Madhusoodanan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/amanieu&quot;&gt;Amanieu d&#x27;Antras&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/@madhav-madhusoodanan/extend-behavioural-testing-of-stdarch-intrinsics&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;std::arch&lt;/code&gt; module contains target-specific intrinsics (low-level functions that typically correspond to single machine instructions) which are intended to be used by other libraries. These are intended to match the equivalent intrinsics available as vendor-specific extensions in C.&lt;/p&gt;
&lt;p&gt;The intrinsics are tested with three approaches. We test that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The signatures of the intrinsics match the one specified by the architecture.&lt;/li&gt;
&lt;li&gt;The intrinsics generate the correct instruction.&lt;/li&gt;
&lt;li&gt;The intrinsics have the correct runtime behavior.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These behavior tests are implemented in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/stdarch/tree/master/crates/intrinsic-test&quot;&gt;intrinsics-test&lt;/a&gt; crate. Initially, this test framework only covered the AArch64 and AArch32 targets, where it was very useful in finding bugs in the implementation of the intrinsics. Madhav&#x27;s project was about refactoring and improving this framework to make it easier (or really, possible) to extend it to other CPU architectures.&lt;/p&gt;
&lt;p&gt;First, Madhav &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/stdarch/pull/1758&quot;&gt;split&lt;/a&gt; the codebase into a module with shared (architecturally independent) code and a module with ARM-specific logic. Then he implemented support for testing intrinsics for the x86 architecture, which is Rust&#x27;s most widely used target. In doing so, he allowed us to discover real bugs in the implementation of some intrinsics, which is a great result! Madhav also did a lot of work in optimizing how the test suite is compiled and executed, to reduce CI time needed to run tests, and he laid the groundwork for supporting even more architectures, specifically LoongArch and WebAssembly.&lt;/p&gt;
&lt;p&gt;We would like to thank Madhav for all his work on helping us make sure that Rust intrinsics are safe and correct!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;implement-merge-functionality-in-bors&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#implement-merge-functionality-in-bors&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Implement merge functionality in bors&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Sakib25800&quot;&gt;Sakibul Islam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kobzol&quot;&gt;Jakub Beránek&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://sakib25800.notion.site/Google-Summer-of-Code-2025-Implement-merge-functionality-in-bors-25ca1a53f49280a88ecdf72b00cb912d&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The main &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust&quot;&gt;Rust repository&lt;/a&gt; uses a pull request merge queue bot that we call &lt;code&gt;bors&lt;/code&gt;. Its current &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/homu&quot;&gt;Python implementation&lt;/a&gt; has a lot of issues and was difficult to maintain. The goal of this GSoC project was thus to implement the primary merge queue functionality in our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/bors&quot;&gt;Rust rewrite&lt;/a&gt; of this bot.&lt;/p&gt;
&lt;p&gt;Sakibul first examined the original Python codebase to figure out what it was doing, and then he implemented several bot commands that allow contributors to approve PRs, set their priority, delegate approval rights, temporarily close the merge tree, and many others. He also implemented an asynchronous background process that checks whether a given pull request is mergeable or not (this process is relatively involved, due to how GitHub works), which required implementing a specialized synchronized queue for deduplicating mergeability check requests to avoid overloading the GitHub API. Furthermore, Sakibul also reimplemented (a nicer version of) the merge queue status &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://bors-prod.rust-lang.net/queue/rust&quot;&gt;webpage&lt;/a&gt; that can be used to track which pull requests are currently being tested on CI, which ones are approved, etc.&lt;/p&gt;
&lt;p&gt;After the groundwork was prepared, Sakibul could work on the merge queue itself, which required him to think about many tricky race conditions and edge cases to ensure that bors doesn&#x27;t e.g. merge the wrong PR into the default branch or merge a PR multiple times. He covered these edge cases with many integration tests, to give us more confidence that the merge queue will work as we expect it to, and also prepared a script for creating simulated PRs on a test GitHub repository so that we can test bors &quot;in the wild&quot;. And so far, it seems to be working very well!&lt;/p&gt;
&lt;p&gt;After we finish the final piece of the merge logic (creating so-called &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://forge.rust-lang.org/release/rollups.html&quot;&gt;&quot;rollups&quot;&lt;/a&gt;) together with Sakibul, we will start using bors fully in the main Rust repository. Sakibul&#x27;s work will thus be used to merge all &lt;code&gt;rust-lang/rust&lt;/code&gt; pull requests. Exciting!&lt;/p&gt;
&lt;p&gt;Apart from working on the merge queue, Sakibul made many other awesome contributions to the codebase, like refactoring the test suite or analyzing performance of SQL queries. In total, Sakibul sent around &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/bors/pulls?q&#x3D;is%3Apr+author%3Asakib25800+is%3Amerged+&quot;&gt;fifty pull requests&lt;/a&gt; that were already merged into bors! What can we say, other than: Awesome work Sakibul, thank you!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improve-bootstrap&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improve-bootstrap&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improve bootstrap&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Shourya742&quot;&gt;Shourya Sharma&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentors: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kobzol&quot;&gt;Jakub Beránek&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jieyouxu&quot;&gt;Jieyou Xu&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/onur-ozkan&quot;&gt;Onur Özkan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://gist.github.com/Shourya742/b15bbbfdc49c98060171a0bf487c4164&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustc-dev-guide.rust-lang.org/building/bootstrapping/what-bootstrapping-does.html&quot;&gt;bootstrap&lt;/a&gt; is the build system of Rust itself, which is responsible for building the compiler, standard library, and pretty much everything else that you can download through &lt;code&gt;rustup&lt;/code&gt;. This project&#x27;s goal was very open-ended: &quot;improve bootstrap&quot;.&lt;/p&gt;
&lt;p&gt;And Shourya did just that! He made meaningful contributions to several parts of bootstrap. First, he added much-needed documentation to several core bootstrap data structures and modules, which were quite opaque and hard to understand without any docs. Then he moved to improving command execution, as each bootstrap invocation invokes hundreds of external binaries, and it was difficult to track them. Shourya finished a long-standing refactoring that routes almost all executed commands through a single place. This allowed him to also implement command caching and also command profiling, which shows us which commands are the slowest.&lt;/p&gt;
&lt;p&gt;After that, Shourya moved on to refactoring config parsing. This was no easy task, because bootstrap has A LOT of config options; the single &lt;em&gt;function&lt;/em&gt; that parses them had over a thousand lines of code (!). A set of complicated config precedence rules was frequently causing bugs when we had to modify that function. It took him several weeks to untangle this mess, but the result is worth it. The &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/blob/master/src/bootstrap/src/core/config/config.rs#L356&quot;&gt;refactored function&lt;/a&gt; is much less brittle and easier to understand and modify, which is great for future maintenance.&lt;/p&gt;
&lt;p&gt;The final area that Shourya improved were bootstrap tests. He made it possible to run them using bare &lt;code&gt;cargo&lt;/code&gt;, which enables debugging them e.g. in an IDE, which is very useful, and mainly he found a way to run the tests in parallel, which makes contributing to bootstrap itself much more pleasant, as it reduced the time to execute the tests from a minute to under ten seconds. These changes required refactoring many bootstrap tests that were using global state, which was not compatible with parallel execution.&lt;/p&gt;
&lt;p&gt;Overall, Shourya made more than &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pulls?q&#x3D;is%3Apr+author%3Ashourya742+is%3Amerged+&quot;&gt;30 PRs&lt;/a&gt; to bootstrap since April! We are very thankful for all his contributions, as they made bootstrap much easier to maintain. Thank you!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improve-wild-linker-test-suites&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improve-wild-linker-test-suites&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improve Wild linker test suites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lapla-cogito&quot;&gt;Kei Akiyama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidlattimore&quot;&gt;David Lattimore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://lapla.dev/posts/gsoc_final/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidlattimore/wild&quot;&gt;Wild&lt;/a&gt; is a very fast linker for Linux that’s written in Rust. It can be used to build executables and shared objects.&lt;/p&gt;
&lt;p&gt;Kei’s project was to leverage the test suite of one of the other Linux linkers to help test the Wild linker. This goal was accomplished. Thanks to Kei’s efforts, we now run the Mold test suite against Wild in our CI. This has helped to prevent regressions on at least a couple of occasions and has also helped to show places where Wild has room for improvement.&lt;/p&gt;
&lt;p&gt;In addition to this core work, Kei also undertook numerous other changes to Wild during GSoC. Of particular note was the reworking of argument parsing to support &lt;code&gt;--help&lt;/code&gt;, which we had wanted for some time. Kei also fixed a number of bugs and implemented various previously missing features. This work has helped to expand the range of projects that can use Wild to build executables.&lt;/p&gt;
&lt;p&gt;Kei has continued to contribute to Wild even after the GSoC project finished and has now contributed over &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidlattimore/wild/pulls?q&#x3D;is%3Apr+author%3Alapla-cogito+is%3Amerged+&quot;&gt;seventy PRs&lt;/a&gt;. We thank Kei for all the hard work and look forward to continued collaboration in the future!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improving-the-rustc-parallel-frontend-parallel-macro-expansion&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improving-the-rustc-parallel-frontend-parallel-macro-expansion&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improving the Rustc Parallel Frontend: Parallel Macro Expansion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/LorrensP-2158466&quot;&gt;Lorrens Pantelis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentors: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sparrowlii&quot;&gt;Sparrow Li&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/petrochenkov&quot;&gt;Vadim Petrochenkov&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://lorrens.me/2025/10/26/GSoC-Parallel-Macro-Expansion.html&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Rust compiler has a (currently unstable) parallel compilation mode in which some compiler passes run in parallel.
One major part of the compiler that is not yet affected by parallelization is name resolution.
It has several components, but those selected for this GSoC project were import resolution and macro expansion (which are in fact intermingled into a single fixed-point algorithm).
Besides the parallelization itself, another important point of the work was improving the correctness of import resolution by eliminating accidental order dependencies in it, as those also prevent parallelization.&lt;/p&gt;
&lt;p&gt;We should note that this was a &lt;em&gt;very&lt;/em&gt; ambitious project, and we knew from the beginning that it would likely be quite challenging to reach the end goal within the span of just a few months. And indeed, Lorrens did in fact run into several unexpected issues that showed us that the complexity of this work is well beyond a single GSoC project, so he didn&#x27;t actually get to parallelizing the macro expansion algorithm. Nevertheless, he did a lot of important work to improve the name resolver and prepare it for being parallelized.&lt;/p&gt;
&lt;p&gt;The first thing that Lorrens had to do was actually understand how Rust name resolution works and how it is implemented in the compiler. That is, to put it mildly, a &lt;em&gt;very complex&lt;/em&gt; piece of logic, and is affected by legacy burden in the form of backward compatibility lints, outdated naming conventions, and other technical debt. Even this learned knowledge itself is incredibly useful, as the set of people that understand Rust&#x27;s name resolution today is very low, so it is important to grow it.&lt;/p&gt;
&lt;p&gt;Using this knowledge, he made a lot of refactorings to separate &lt;em&gt;significant&lt;/em&gt; mutability in name resolver data structures from &quot;cache-like&quot; mutability used for things like lazily loading otherwise immutable data from extern crates, which was needed to unblock parallelization work. He split &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/143657&quot;&gt;various&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/143884&quot;&gt;parts&lt;/a&gt; of the name resolver, got rid of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/144059&quot;&gt;unnecessary&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/144605&quot;&gt;mutability&lt;/a&gt; and performed a bunch of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/145322&quot;&gt;other&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/147805&quot;&gt;refactorings&lt;/a&gt;. He also had to come up with a very tricky &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/144912&quot;&gt;data structure&lt;/a&gt; that allows providing conditional mutable access to some data.&lt;/p&gt;
&lt;p&gt;These refactorings allowed him to implement something called &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/145108&quot;&gt;&quot;batched import resolution&quot;&lt;/a&gt;, which splits unresolved imports in the crate into &quot;batches&quot;, where all imports in a single batch can be resolved independently and potentially in parallel, which is crucial for parallelizing name resolution. We have to resolve a few remaining language &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/147984&quot;&gt;compatibility&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/147995&quot;&gt;issues&lt;/a&gt;, after which the batched import resolution work will hopefully be merged.&lt;/p&gt;
&lt;p&gt;Lorrens laid an important groundwork for fixing potential correctness issues around name resolution and macro expansion, which unblocks further work on parallelizing these compiler passes, which is exciting. His work also helped unblock some &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/137487&quot;&gt;library&lt;/a&gt; &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pull/139493&quot;&gt;improvements&lt;/a&gt; that were stuck for a long time. We are grateful for your hard work on improving tricky parts of Rust and its compiler, Lorrens. Thank you!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;make-cargo-semver-checks-faster&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#make-cargo-semver-checks-faster&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Make cargo-semver-checks faster&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/CLIDragon&quot;&gt;Joseph Chung&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi&quot;&gt;Predrag Gruevski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://clidragon.github.io/blog/gsoc-2025&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi/cargo-semver-checks&quot;&gt;&lt;code&gt;cargo-semver-checks&lt;/code&gt;&lt;/a&gt; is a Cargo subcommand for finding SemVer API breakages in Rust crates. It is adding SemVer lints at an &lt;em&gt;exponential&lt;/em&gt; pace: the number of lints has been doubling every year, and currently stands at &lt;code&gt;229&lt;/code&gt;. More lints mean more work for &lt;code&gt;cargo-semver-checks&lt;/code&gt; to do, as well as more work for its test suite which runs over 250000 lint checks!&lt;/p&gt;
&lt;p&gt;Joseph&#x27;s contributions took three forms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improving &lt;code&gt;cargo-semver-checks&lt;/code&gt; runtime performance—on large crates, our query runtime went from ~8s to ~2s, a 4x improvement!&lt;/li&gt;
&lt;li&gt;Improving the test suite&#x27;s performance, enabling us to iterate faster. Our test suite used to take ~7min and now finishes in ~1min, a 7x improvement!&lt;/li&gt;
&lt;li&gt;Improving our ability to profile query performance and inspect performance anomalies, both of which were proving a bottleneck for our ability to ship further improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Joseph described all the clever optimization tricks leading to these results in his &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://clidragon.github.io/blog/gsoc-2025&quot;&gt;final report&lt;/a&gt;. To encourage you to check out the post, we&#x27;ll highlight a particularly elegant optimization described there.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cargo-semver-checks&lt;/code&gt; relies on rustdoc JSON, an unstable component of Rust whose output format often has breaking changes. Since each release of &lt;code&gt;cargo-semver-checks&lt;/code&gt; supports a range of Rust versions, it must also support a range of rustdoc JSON formats. Fortunately, each file carries a version number that tells us which version&#x27;s &lt;code&gt;serde&lt;/code&gt; types to use to deserialize the data.&lt;/p&gt;
&lt;p&gt;Previously, we used to deserialize the JSON file twice: once with a &lt;code&gt;serde&lt;/code&gt; type that only loaded the &lt;code&gt;format_version: u32&lt;/code&gt; field, and a second time with the appropriate &lt;code&gt;serde&lt;/code&gt; type that matches the format. This works fine, but many large crates generate rustdoc JSON files that are 500 MiB+ in size, requiring us to walk all that data twice. While &lt;code&gt;serde&lt;/code&gt; is quite fast, there&#x27;s nothing as fast as &lt;em&gt;not&lt;/em&gt; doing the work twice in the first place!&lt;/p&gt;
&lt;p&gt;So we used a trick: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi/trustfall-rustdoc/pull/98/files#diff-b1a35a68f14e696205874893c07fd24fdb88882b47c23cc0e0c80a30c7d53759R46-R82&quot;&gt;&lt;em&gt;optimistically&lt;/em&gt; check&lt;/a&gt; if the &lt;code&gt;format_version&lt;/code&gt; field is the last field in the JSON file, which happens to be the case every time (even though it is not guaranteed). Rather than parsing JSON, we merely look for a &lt;code&gt;,&lt;/code&gt; character in the last few dozen bytes, then look for &lt;code&gt;:&lt;/code&gt; after the &lt;code&gt;,&lt;/code&gt; character, and for &lt;code&gt;format_version&lt;/code&gt; between them. If this is successful, we&#x27;ve discovered the version number while avoiding going through hundreds of MB of data! If we failed for any reason, we just fall back to the original approach having only wasted the effort of looking at 20ish extra bytes.&lt;/p&gt;
&lt;p&gt;Joseph did a lot of profiling and performance optimizations to make &lt;code&gt;cargo-semver-checks&lt;/code&gt; faster for everyone, with awesome results. Thank you very much for your work!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;make-rustup-concurrent&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#make-rustup-concurrent&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Make Rustup Concurrent&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/FranciscoTGouveia&quot;&gt;Francisco Gouveia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rami3l&quot;&gt;rami3l&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://web.tecnico.ulisboa.pt/francisco.t.gouveia/posts/03-gsoc-final-report/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a very important part of the Rustup team&#x27;s vision of migrating the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustup&quot;&gt;rustup&lt;/a&gt; codebase to using async IO since the introduction of the global &lt;code&gt;tokio&lt;/code&gt; runtime in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustup/issues/3367&quot;&gt;#3367&lt;/a&gt;, this project&#x27;s goal was to introduce proper concurrency to rustup. Francisco did that by attacking two aspects of the codebase at once:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;He created a new set of user interfaces for displaying concurrent progress.&lt;/li&gt;
&lt;li&gt;He implemented a new toolchain update checking &amp;amp; installation flow that is idiomatically concurrent.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a warmup, Francisco made &lt;code&gt;rustup check&lt;/code&gt; concurrent, resulting in a rather easy &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://web.tecnico.ulisboa.pt/francisco.t.gouveia/posts/02-rustup-concurrent-checks&quot;&gt;3x performance boost&lt;/a&gt; in certain cases. Along the way, he also introduced a new &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://crates.io/crates/indicatif&quot;&gt;indicatif&lt;/a&gt;-based progress bar for reporting progress of concurrent operations, which replaced the original hand-rolled solution.&lt;/p&gt;
&lt;p&gt;After that, the focus of the project has moved on to the toolchain installation flow used in commands like &lt;code&gt;rustup toolchain install&lt;/code&gt; and &lt;code&gt;rustup update&lt;/code&gt;. In this part, Francisco developed two main improvements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The possibility of downloading multiple components at once when setting up a toolchain, controlled by the &lt;code&gt;RUSTUP_CONCURRENT_DOWNLOADS&lt;/code&gt; environment variable. Setting this variable to a value greater than 1 is particularly useful in certain internet environments where the speed of a single download connection could be restricted by QoS (Quality of Service) limits.&lt;/li&gt;
&lt;li&gt;The ability to interleave component network downloads and disk unpacking. For the moment, unpacking will still happen sequentially, but disk and net I/O can finally be overlapped! This introduces a net gain in toolchain installation time, as only the last component being downloaded will have noticeable unpacking delays. In our tests, this typically results in a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://web.tecnico.ulisboa.pt/francisco.t.gouveia/posts/03-gsoc-final-report/#my-internet-is-fast-can-i-also-have-faster-installations&quot;&gt;reduction of 4-6 seconds&lt;/a&gt; (on fast connections, that&#x27;s ~33% faster!) when setting up a toolchain with the &lt;code&gt;default&lt;/code&gt; profile.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We have to say that these results are very impressive! While a few seconds shorter toolchain installation might not look so important at a first glance, rustup is ubiquitously used to install Rust toolchains on CI of tens of thousands of Rust projects, so this improvement (and also further improvements that it unlocks) will have an enormous effect across the Rust ecosystem. Many thanks to Francisco Gouveia&#x27;s enthusiasm and active participation, without which this wouldn&#x27;t have worked out!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;mapping-the-maze-of-rust-s-ui-test-suite-with-established-continuous-integration-practices&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#mapping-the-maze-of-rust-s-ui-test-suite-with-established-continuous-integration-practices&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Mapping the Maze of Rust&#x27;s UI Test Suite with Established Continuous Integration Practices&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oneirical&quot;&gt;Julien Robert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jieyouxu&quot;&gt;Jieyou Xu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://oneirical.github.io/25-09-27gsoc/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The snapshot-based &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/tree/master/tests/ui&quot;&gt;UI test suite&lt;/a&gt; is a crucial part of the Rust compiler&#x27;s test suite. It contains &lt;em&gt;a lot&lt;/em&gt; of tests: over 19000 at the time of writing. The organization of this test suite is thus
very important, for at least two reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We want to be able to find specific tests, identify related tests, and have some sort of logical grouping of related tests.&lt;/li&gt;
&lt;li&gt;We have to ensure that no directory contains so many entries such that GitHub gives up rendering the directory.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Furthermore, having informative test names and having some context for each test is particularly important, as otherwise contributors would have to reverse-engineer test intent from &lt;code&gt;git blame&lt;/code&gt; and friends.&lt;/p&gt;
&lt;p&gt;Over the years, we have accumulated a lot of unorganized stray test files in the
top level &lt;code&gt;tests/ui&lt;/code&gt; directory, and have a lot of generically named &lt;code&gt;issue-*.rs&lt;/code&gt;
tests in the &lt;code&gt;tests/ui/issues/&lt;/code&gt; directory. The former makes it annoying to find
more meaningful subdirectories, while the latter makes it completely non-obvious
what each test is about.&lt;/p&gt;
&lt;p&gt;Julien&#x27;s project was about introducing some order into the chaos. And that was indeed achieved!
Through Julien&#x27;s efforts (in conjunction with efforts from other contributors), we now have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No more stray tests under the immediate &lt;code&gt;tests/ui/&lt;/code&gt; top-level directory, and are organized into more meaningful subdirectories. We were able to then introduce a style check to prevent new stray tests from being added.&lt;/li&gt;
&lt;li&gt;A top-level document contains TL;DRs for each of the immediate subdirectories.&lt;/li&gt;
&lt;li&gt;Substantially fewer generically-named &lt;code&gt;issue-*.rs&lt;/code&gt;under &lt;code&gt;tests/ui/issues/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Test organization (and more generally, test suite ergonomics) is an often under-
appreciated aspect of maintaining complex codebases. Julien spent a lot of effort
improving test ergonomics of the Rust compiler, both in last year&#x27;s GSoC (where he vastly
improved our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2024/11/07/gsoc-2024-results/#rewriting-esoteric-error-prone-makefile-tests-using-robust-rust-features&quot;&gt;&quot;run-make&quot;&lt;/a&gt; test suite), and then again this year, where he made our UI test suite more ergonomic.
We would like to appreciate your meticulous work, Julien! Thank you very much.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;modernising-the-libc-crate&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#modernising-the-libc-crate&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Modernising the libc Crate&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mbyx&quot;&gt;Abdul Muiz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tgross35&quot;&gt;Trevor Gross&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mbyx/gsoc25_blog/blob/5fd32d35ea4237b2f586f0d8abceeb2dabd86139/_posts/2025-09-01-work_submission.markdown&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/libc&quot;&gt;&lt;code&gt;libc&lt;/code&gt;&lt;/a&gt; is a crucial crate in the Rust ecosystem (on average, it has ~1.5 million &lt;em&gt;daily&lt;/em&gt; downloads), providing bindings to system C API. This GSoC project had two goals: improve testing for what we currently have, and make progress toward a stable 1.0 release of &lt;code&gt;libc&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Test generation is handled by the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/libc/tree/main/ctest&quot;&gt;&lt;code&gt;ctest&lt;/code&gt;&lt;/a&gt; crate, which creates unit tests that compare properties of Rust API to properties of the C interfaces it binds. Prior to the project, &lt;code&gt;ctest&lt;/code&gt; used an obsolete Rust parser that had stopped receiving major updates about eight years ago, meaning &lt;code&gt;libc&lt;/code&gt; could not easily use any syntax newer than that. Abdul completely rewrote &lt;code&gt;ctest&lt;/code&gt; to use &lt;code&gt;syn&lt;/code&gt; as its parser and make it much easier to add new tests, then went through and switched everything over to the more modern &lt;code&gt;ctest&lt;/code&gt;. After this change, we were able to remove a number of hacks that had been needed to work with the old parser.&lt;/p&gt;
&lt;p&gt;The other part of the project was to make progress toward the 1.0 release of &lt;code&gt;libc&lt;/code&gt;. Abdul helped with this by going through and addressing a number of issues that need to be resolved before the release, many of which were made possible with all the &lt;code&gt;ctest&lt;/code&gt; changes.&lt;/p&gt;
&lt;p&gt;While there is still a lot of work left to do before &lt;code&gt;libc&lt;/code&gt; can reach 1.0, Abdul&#x27;s improvements will go a long way towards making that work easier, as they give us more confidence in the test suite, which is now much easier to modify and extend. Thank you very much for all your work!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;prepare-stable-mir-crate-for-publishing&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#prepare-stable-mir-crate-for-publishing&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Prepare stable_mir crate for publishing&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/makai410&quot;&gt;Makai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/celinval&quot;&gt;Celina Val&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://makai410.dev/posts/gsoc-25-final/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This project&#x27;s goal was to prepare the Rust compiler&#x27;s &lt;code&gt;stable_mir&lt;/code&gt;
crate (eventually renamed to &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/nightly-rustc/rustc_public/index.html&quot;&gt;&lt;code&gt;rustc_public&lt;/code&gt;&lt;/a&gt;), which provides a way to interface
with the Rust compiler for analyzing Rust code, for publication on crates.io. While the
existing crate provided easier APIs for tool developers, it lacked proper
versioning and was tightly coupled with compiler versions. The goal was to
enable independent publication with semantic versioning.&lt;/p&gt;
&lt;p&gt;The main technical work involved restructuring &lt;code&gt;rustc_public&lt;/code&gt; and &lt;code&gt;rustc_public_bridge&lt;/code&gt;
(previously named &lt;code&gt;rustc_smir&lt;/code&gt;) by inverting their dependency relationship.
Makai resolved circular dependencies by temporarily merging the crates and
gradually separating them with the new architecture. They also split the existing
compiler interface to separate public APIs from internal compiler details.&lt;/p&gt;
&lt;p&gt;Furthermore, Makai established infrastructure for dual maintenance: keeping an internal
version in the Rust repository to track compiler changes while developing
the publishable version in a dedicated repository. Makai automated a
system to coordinate between versions, and developed custom tooling to validate
compiler version compatibility and to run tests.&lt;/p&gt;
&lt;p&gt;Makai successfully completed the core refactoring and infrastructure
setup, making it possible to publish &lt;code&gt;rustc_public&lt;/code&gt; independently with proper
versioning support for the Rust tooling ecosystem! As a bonus, Makai contributed
several bug fixes and implemented new APIs that had been requested by the
community. Great job Makai!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;prototype-an-alternative-architecture-for-cargo-fix-using-cargo-check&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#prototype-an-alternative-architecture-for-cargo-fix-using-cargo-check&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Prototype an alternative architecture for cargo fix using cargo check&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Pyr0de&quot;&gt;Glen Thalakottur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://gist.github.com/Pyr0de/363ef42d31364003a534059e02690565&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;cargo fix&lt;/code&gt; command applies fixes suggested by lints, which makes it useful for cleaning up sloppy code,
reducing the annoyance of toolchain upgrades when lints change and helping with edition migrations and new lint adoption. However, it has a number of issues. It can be &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/13214&quot;&gt;slow&lt;/a&gt;, it only applies a subset of possible lints, and doesn&#x27;t provide an easy way to select which lints to fix.&lt;/p&gt;
&lt;p&gt;These problems are caused by its current architecture; it is implemented as a variant of &lt;code&gt;cargo check&lt;/code&gt; that replaces &lt;code&gt;rustc&lt;/code&gt; with &lt;code&gt;cargo&lt;/code&gt; being run in a special mode that will call &lt;code&gt;rustc&lt;/code&gt; in a loop, applying fixes until there are none. While this special &lt;code&gt;rustc&lt;/code&gt;-proxy mode is running,
a cross-process lock is held to force only one build target to be fixed at a time to avoid race conditions.
This ensures correctness at the cost of performance and difficulty in making the &lt;code&gt;rustc&lt;/code&gt;-proxy interactive.&lt;/p&gt;
&lt;p&gt;Glen implemented a proof of concept of an alternative design called &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/crate-ci/cargo-fixit&quot;&gt;cargo-fixit&lt;/a&gt;. &lt;code&gt;cargo fixit&lt;/code&gt; spawns &lt;code&gt;cargo check&lt;/code&gt; in a loop, determining which build targets are safe to fix in a given pass, and then applying the suggestions. This puts the top-level program in charge of what fixes get applied, making it easier to coordinate. It also allows the locking to be removed and opens the door to an interactive mode.&lt;/p&gt;
&lt;p&gt;Glen performed various &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/crate-ci/cargo-fixit/blob/main/benchsuite/runs/2025-07-31-af6627c.md&quot;&gt;benchmarks&lt;/a&gt; to test how the new approach performs.  And in some benchmarks, &lt;code&gt;cargo fixit&lt;/code&gt; was able to finish within a few hundred milliseconds, where before the same task took &lt;code&gt;cargo fix&lt;/code&gt; almost a minute! As always, there are trade-offs; the new approach comes at the cost that fixes in packages lower in the dependency tree can cause later packages to be rebuilt multiple times, slowing things down, so there were also benchmarks where the old design was a bit faster. The initial results are still very promising and impressive!&lt;/p&gt;
&lt;p&gt;Further work remains to be done on &lt;code&gt;cargo-fixit&lt;/code&gt; to investigate how it could be optimized better and how should its interface look like before being stabilized. We thank Glen for all the hard work on this project, and we hope that one day the new design will become used by default in Cargo, to bring faster and more flexible fixing of lint suggestions to everyone!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;prototype-cargo-plumbing-commands&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#prototype-cargo-plumbing-commands&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Prototype Cargo Plumbing Commands&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/secona&quot;&gt;Vito Secona&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentors: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cassaundra&quot;&gt;Cassaundra&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/@secona/gsoc-2025-final-report&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal of this project was to move forward our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h2/cargo-plumbing.html&quot;&gt;Project Goal&lt;/a&gt; for creating low-level (&quot;plumbing&quot;) Cargo subcommands to make it easier to reuse parts of Cargo by other tools.&lt;/p&gt;
&lt;p&gt;Vito created a prototype of several plumbing commands in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/crate-ci/cargo-plumbing&quot;&gt;cargo-plumbing&lt;/a&gt; crate. The idea was to better understand how the plumbing commands should look like, and what is needed from Cargo to implement them. Vito had to make compromises in some of these commands to not be blocked on making changes to the current Cargo Rust APIs, and he helpfully documented those &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/crate-ci/cargo-plumbing/issues/82&quot;&gt;blockers&lt;/a&gt;. For example, instead of solely relying on the manifests that the user passed in, the plumbing commands will re-read the manifests within each command, preventing callers from being able to edit them to get specific behavior out of Cargo, e.g. dropping all workspace members to allow resolving dependencies on a per-package basis.&lt;/p&gt;
&lt;p&gt;Vito did a lot of work, as he implemented seven different plumbing subcommands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;locate-manifest&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;read-manifest&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;read-lockfile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lock-dependencies&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;write-lockfile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;resolve-features&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plan-build&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As future work, we would like to deal with some unresolved questions around how to integrate these plumbing commands within Cargo itself, and extend the set of plumbing commands.&lt;/p&gt;
&lt;p&gt;We thank Vito for all his work on improving the flexibility of Cargo.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;conclusion&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#conclusion&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Conclusion&lt;/h2&gt;
&lt;p&gt;We would like to thank all contributors that have participated in Google Summer of Code 2025 with us! It was a blast, and we cannot wait to see which projects GSoC contributors will come up with in the next year. We would also like to thank Google for organizing the Google Summer of Code program and for allowing us to have so many projects this year. And last, but not least, we would like to thank all the Rust mentors who were tirelessly helping our contributors to complete their projects. Without you, Rust GSoC would not be possible.&lt;/p&gt;
&lt;section class&#x3D;&quot;footnotes&quot;&gt;
&lt;ol class&#x3D;&quot;footnotes-list&quot;&gt;
&lt;li id&#x3D;&quot;fn-bootstrapping&quot;&gt;
&lt;p&gt;You can read about what do those individual compiler stages mean e.g. &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rustc-dev-guide.rust-lang.org/building/bootstrapping/what-bootstrapping-does.html&quot;&gt;here&lt;/a&gt;. &lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/11/18/gsoc-2025-results/#fr-bootstrapping-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>

        <author>
            <name>Jakub Beránek, Jack Huey</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Google Summer of Code 2025 selected projects</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2025/05/08/gsoc-2025-selected-projects/" type="text/html" title="Announcing Google Summer of Code 2025 selected projects" />
        <published>2025-05-08T00:00:00+00:00</published>
        <updated>2025-05-08T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2025/05/08/gsoc-2025-selected-projects/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2025/05/08/gsoc-2025-selected-projects/">&lt;p&gt;The Rust Project is &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2025/03/03/Rust-participates-in-GSoC-2025.html&quot;&gt;participating&lt;/a&gt; in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com&quot;&gt;Google Summer of Code (GSoC)&lt;/a&gt; again this year. GSoC is a global program organized by Google that is designed to bring new contributors to the world of open-source.&lt;/p&gt;
&lt;p&gt;In March, we published a list of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;GSoC project ideas&lt;/a&gt;, and started discussing these projects with potential GSoC applicants on our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/421156-gsoc&quot;&gt;Zulip&lt;/a&gt;. We had many interesting discussions with the potential contributors, and even saw some of them making non-trivial contributions to various Rust Project repositories, even before GSoC officially started!&lt;/p&gt;
&lt;p&gt;After the initial discussions, GSoC applicants prepared and submitted their project proposals. We received 64 proposals this year, almost exactly the same number as last year. We are happy to see that there was again so much interest in our projects.&lt;/p&gt;
&lt;p&gt;A team of mentors primarily composed of Rust Project contributors then thoroughly examined the submitted proposals. GSoC required us to produce a ranked list of the best proposals, which was a challenging task in itself since Rust is a big project with many priorities! Same as last year, we went through several rounds of discussions and considered many factors, such as prior conversations with the given applicant, the quality of their proposal, the importance of the proposed project for the Rust Project and its wider community, but also the availability of mentors, who are often volunteers and thus have limited time available for mentoring.&lt;/p&gt;
&lt;p&gt;As is usual in GSoC, even though some project topics received multiple proposals&lt;sup class&#x3D;&quot;footnote-reference&quot; id&#x3D;&quot;fr-most-popular-1&quot;&gt;&lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/05/08/gsoc-2025-selected-projects/#fn-most-popular&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;, we had to pick only one proposal per project topic. We also had to choose between great proposals targeting different work to avoid overloading a single mentor with multiple projects.&lt;/p&gt;
&lt;p&gt;In the end, we narrowed the list down to a smaller number of the best proposals that we could still realistically support with our available mentor pool. We submitted this list and eagerly awaited how many of them would be accepted into GSoC.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;selected-projects&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#selected-projects&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Selected projects&lt;/h2&gt;
&lt;p&gt;On the 8th of May, Google has announced the accepted projects. We are happy to share that &lt;strong&gt;19&lt;/strong&gt; Rust Project proposals were accepted by Google for Google Summer of Code 2025. That&#x27;s a lot of projects, which makes us super excited about GSoC 2025!&lt;/p&gt;
&lt;p&gt;Below you can find the list of accepted proposals (in alphabetical order), along with the names of their authors and the assigned mentor(s):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/USQvru7i&quot;&gt;ABI/Layout handling for the automatic differentiation feature&lt;/a&gt;&lt;/strong&gt;	by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sa4dus&quot;&gt;Marcelo Domínguez&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ZuseZ4&quot;&gt;Manuel Drehwald&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oli Scherer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/UYWEKUkd&quot;&gt;Add safety contracts&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/dawidl022&quot;&gt;Dawid Lachowicz&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tautschnig&quot;&gt;Michael Tautschnig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/KmfCY0i6&quot;&gt;Bootstrap of rustc with rustc_codegen_gcc&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/FractalFir&quot;&gt;Michał Kostrubiec&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/antoyo&quot;&gt;antoyo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/nUt4PdAA&quot;&gt;Cargo: Build script delegation&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/namanlp&quot;&gt;Naman Garg&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/5677hd6S&quot;&gt;Distributed and resource-efficient verification&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/zjp-CN&quot;&gt;Zhou Jiping&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tautschnig&quot;&gt;Michael Tautschnig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/MMRSG9WU&quot;&gt;Enable Witness Generation in cargo-semver-checks&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/GlitchlessCode&quot;&gt;Talyn Veugelers&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi&quot;&gt;Predrag Gruevski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/DeMQAjwi&quot;&gt;Extend behavioural testing of std::arch intrinsics&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/madhav-madhusoodanan&quot;&gt;Madhav Madhusoodanan&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/amanieu&quot;&gt;Amanieu d&#x27;Antras&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/HlR12jqX&quot;&gt;Implement merge functionality in bors&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Sakib25800&quot;&gt;Sakibul Islam&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kobzol&quot;&gt;Jakub Beránek&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/2KNHAlKz&quot;&gt;Improve bootstrap&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Shourya742&quot;&gt;Shourya Sharma&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kobzol&quot;&gt;Jakub Beránek&lt;/a&gt;, &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jieyouxu&quot;&gt;Jieyou Xu&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/onur-ozkan&quot;&gt;Onur Özkan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/ps99Kaqk&quot;&gt;Improve Wild linker test suites&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/lapla-cogito&quot;&gt;Kei Akiyama&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidlattimore&quot;&gt;David Lattimore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/SBW3GMno&quot;&gt;Improving the Rustc Parallel Frontend: Parallel Macro Expansion&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/LorrensP-2158466&quot;&gt;Lorrens&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/sparrowlii&quot;&gt;Sparrow Li&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/qs2rDLG4&quot;&gt;Make cargo-semver-checks faster&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/CLIDragon&quot;&gt;JosephC&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi&quot;&gt;Predrag Gruevski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/CpXV4kzH&quot;&gt;Make Rustup Concurrent&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/FranciscoTGouveia&quot;&gt;Francisco Gouveia&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rami3l&quot;&gt;rami3l&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/KP02lKL4&quot;&gt;Mapping the Maze of Rust&#x27;s UI Test Suite with Established Continuous Integration Practices&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oneirical&quot;&gt;Julien Robert&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jieyouxu&quot;&gt;Jieyou Xu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/r3LkZkOy&quot;&gt;Modernising the libc Crate&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mbyx&quot;&gt;Abdul Muiz&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tgross35&quot;&gt;Trevor Gross&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/76ekEjd1&quot;&gt;New proc-macro Server API for Rust-Analyzer&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/DriedYellowPeach&quot;&gt;Neil Wang&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/veykril&quot;&gt;Lukas Wirth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/3y9x5X8O&quot;&gt;Prepare stable_mir crate for publishing&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/makai410&quot;&gt;Makai&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/celinval&quot;&gt;Celina Val&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/fBOCR2Sp&quot;&gt;Prototype an alternative architecture for cargo fix using cargo check&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Pyr0de&quot;&gt;Glen Thalakottur&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/projects/fTDzc0sk&quot;&gt;Prototype Cargo Plumbing Commands&lt;/a&gt;&lt;/strong&gt; by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/secona&quot;&gt;Vito Secona&lt;/a&gt;, mentored by &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cassaundra&quot;&gt;Cassaundra&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Congratulations to all applicants whose project was selected!&lt;/strong&gt; The mentors are looking forward to working with you on these exciting projects to improve the Rust ecosystem. You can expect to hear from us soon, so that we can start coordinating the work on your GSoC projects.&lt;/p&gt;
&lt;p&gt;We would also like to thank all the applicants whose proposal was sadly not accepted, for their interactions with the Rust community and contributions to various Rust projects. There were some great proposals that did not make the cut, in large part because of limited mentorship capacity. However, even if your proposal was not accepted, we would be happy if you would consider contributing to the projects that got you interested, even outside GSoC! Our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;project idea list&lt;/a&gt; is still actual and could serve as a general entry point for contributors that would like to work on projects that would help the Rust Project maintainers and the Rust ecosystem. Some of the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.github.io/rust-project-goals/2025h1/goals.html&quot;&gt;Rust Project Goals&lt;/a&gt; are also looking for help.&lt;/p&gt;
&lt;p&gt;There is also a good chance we&#x27;ll participate in GSoC next year as well (though we can&#x27;t promise anything at this moment), so we hope to receive your proposals again in the future!&lt;/p&gt;
&lt;p&gt;The accepted GSoC projects will run for several months. After GSoC 2025 finishes (in autumn of 2025), we will publish a blog post in which we will summarize the outcome of the accepted projects.&lt;/p&gt;
&lt;section class&#x3D;&quot;footnotes&quot;&gt;
&lt;ol class&#x3D;&quot;footnotes-list&quot;&gt;
&lt;li id&#x3D;&quot;fn-most-popular&quot;&gt;
&lt;p&gt;The most popular project topic received seven different proposals! &lt;a href&#x3D;&quot;https://blog.rust-lang.org/2025/05/08/gsoc-2025-selected-projects/#fr-most-popular-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>

        <author>
            <name>Jakub Beránek</name>
        </author>
    </entry>
    <entry>
        <title>Rust participates in Google Summer of Code 2025</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2025/03/03/Rust-participates-in-GSoC-2025/" type="text/html" title="Rust participates in Google Summer of Code 2025" />
        <published>2025-03-03T00:00:00+00:00</published>
        <updated>2025-03-03T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2025/03/03/Rust-participates-in-GSoC-2025/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2025/03/03/Rust-participates-in-GSoC-2025/">&lt;p&gt;We are happy to announce that the Rust Project will again be participating in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com&quot;&gt;Google Summer of Code (GSoC) 2025&lt;/a&gt;, same as &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2024/02/21/Rust-participates-in-GSoC-2024.html&quot;&gt;last year&lt;/a&gt;. If you&#x27;re not eligible or interested in participating in GSoC, then most of this post likely isn&#x27;t relevant to you; if you are, this should contain some useful information and links.&lt;/p&gt;
&lt;p&gt;Google Summer of Code (GSoC) is an annual global program organized by Google that aims to bring new contributors to the world of open-source. The program pairs organizations (such as the Rust Project) with contributors (usually students), with the goal of helping the participants make meaningful open-source contributions under the guidance of experienced mentors.&lt;/p&gt;
&lt;p&gt;The organizations that have been accepted into the program have been &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2025/organizations&quot;&gt;announced&lt;/a&gt; by Google. The GSoC applicants now have several weeks to discuss project ideas with mentors. Later, they will send project proposals for the projects that they found the most interesting. If their project proposal is accepted, they will embark on a several month journey during which they will try to complete their proposed project under the guidance of an assigned mentor.&lt;/p&gt;
&lt;p&gt;We have prepared a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;list of project ideas&lt;/a&gt; that can serve as inspiration for potential GSoC contributors that would like to send a project proposal to the Rust organization. However, applicants can also come up with their own project ideas. You can discuss project ideas or try to find mentors in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/421156-gsoc&quot;&gt;#gsoc&lt;/a&gt; Zulip stream. We have also prepared a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code/blob/main/gsoc/proposal-guide.md&quot;&gt;proposal guide&lt;/a&gt; that should help you with preparing your project proposals.&lt;/p&gt;
&lt;p&gt;You can start discussing the project ideas with Rust Project mentors and maintainers immediately, but you might want to keep the following important dates in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The project proposal application period starts on March 24, 2025. From that date you can submit project proposals into the GSoC dashboard.&lt;/li&gt;
&lt;li&gt;The project proposal application period ends on &lt;strong&gt;April 8, 2025&lt;/strong&gt; at 18:00 UTC. Take note of that deadline, as there will be no extensions!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are interested in contributing to the Rust Project, we encourage you to check out our project idea list and send us a GSoC project proposal! Of course, you are also free to discuss these projects and/or try to move them forward even if you do not intend to (or cannot) participate in GSoC. We welcome all contributors to Rust, as there is always enough work to do.&lt;/p&gt;
&lt;p&gt;Last year was our first time participating in GSoC, and it was a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2024/11/07/gsoc-2024-results.html&quot;&gt;success&lt;/a&gt;! This year we are very excited to participate again. We hope that participants in the program can improve their skills, but also would love for this to bring new contributors to the Project and increase the awareness of Rust in general. Like last year, we expect to publish blog posts in the future with updates about our participation in the program.&lt;/p&gt;
</content>

        <author>
            <name>Jakub Beránek, Jack Huey and Paul Lenz</name>
        </author>
    </entry>
    <entry>
        <title>Google Summer of Code 2024 results</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2024/11/07/gsoc-2024-results/" type="text/html" title="Google Summer of Code 2024 results" />
        <published>2024-11-07T00:00:00+00:00</published>
        <updated>2024-11-07T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2024/11/07/gsoc-2024-results/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2024/11/07/gsoc-2024-results/">&lt;p&gt;As we have previously &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html&quot;&gt;announced&lt;/a&gt;, the Rust Project participated
in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com&quot;&gt;Google Summer of Code (GSoC)&lt;/a&gt; for the first time this year. Nine contributors have been tirelessly working on their exciting projects
for several months. The projects had various durations; some of them have ended in August, while the last one has been
concluded in the middle of October. Now that the final reports of all the projects have been submitted, we can happily
announce that all nine contributors have passed the final review! That means that we have deemed all of their projects to be successful,
even though they might not have fulfilled all of their original goals (but that was expected).&lt;/p&gt;
&lt;p&gt;We had a lot of great interactions with our GSoC contributors, and based on their feedback, it seems that they were also
quite happy with the GSoC program and that they had learned a lot. We are of course also incredibly grateful for all their
contributions - some of them have even continued contributing after their project has ended, which is really awesome.
In general, we think that Google Summer of Code 2024 was a success for the Rust Project, and we are looking forward to
participating in GSoC (or similar programs) again in the near future. If you are interested in becoming a (GSoC) contributor,
check out our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;project idea list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Below you can find a brief summary of each of our GSoC 2024 projects, including feedback
from the contributors and mentors themselves. You can find more information about the projects
&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code/blob/main/gsoc/past/2024.md&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;adding-lint-level-configuration-to-cargo-semver-checks&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#adding-lint-level-configuration-to-cargo-semver-checks&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Adding lint-level configuration to cargo-semver-checks&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/suaviloquence/&quot;&gt;Max Carr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi&quot;&gt;Predrag Gruevski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.mcarr.one/gsoc-final/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi/cargo-semver-checks&quot;&gt;cargo-semver-checks&lt;/a&gt; is a tool designed for automatically detecting semantic versioning conflicts, which is planned to one day become a part of Cargo itself. The goal of this project was to enable cargo-semver-checks to ship additional &lt;em&gt;opt-in&lt;/em&gt; lints by allowing users to configure which lints run in which cases, and whether their findings are reported as errors or warnings. Max achieved this goal by implementing a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/obi1kenobi/cargo-semver-checks?tab&#x3D;readme-ov-file#lint-level-configuration&quot;&gt;comprehensive system&lt;/a&gt; for configuring &lt;code&gt;cargo-semver-checks&lt;/code&gt; lints directly in the &lt;code&gt;Cargo.toml&lt;/code&gt; manifest file. He also extensively discussed the design with the Cargo team to ensure that it is compatible with how other Cargo lints are configured, and won&#x27;t present a future compatibility problem for merging cargo-semver-checks into Cargo.&lt;/p&gt;
&lt;p&gt;Predrag, who is the author of &lt;code&gt;cargo-semver-checks&lt;/code&gt; and who mentored Max on this project, was very happy with his contributions that even went beyond his original project scope:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Great work, Max!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;implementation-of-a-faster-register-allocator-for-cranelift&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#implementation-of-a-faster-register-allocator-for-cranelift&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Implementation of a faster register allocator for Cranelift&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/d-sonuga&quot;&gt;Demilade Sonuga&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentors: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/cfallin&quot;&gt;Chris Fallin&lt;/a&gt; and &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Amanieu&quot;&gt;Amanieu d&#x27;Antras&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://d-sonuga.netlify.app/gsoc/regalloc-iii/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Rust compiler can use various &lt;em&gt;backends&lt;/em&gt; for generating executable code. The main one is of course the LLVM backend, but there are other backends, such as &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc_codegen_gcc&quot;&gt;GCC&lt;/a&gt;, &lt;a href&#x3D;&quot;https://blog.rust-lang.org/2024/11/07/gsoc-2024-results/#rust-to-net-compiler-add-support-for-compiling-running-cargo-tests&quot;&gt;.NET&lt;/a&gt; or &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc_codegen_cranelift&quot;&gt;Cranelift&lt;/a&gt;. Cranelift is a code generator for various hardware targets, essentially something similar to LLVM. The Cranelift backend uses Cranelift to compile Rust code into executable code, with the goal of improving compilation performance, especially for debug (unoptimized) builds. Even though this backend can already be faster than the LLVM backend, we have identified that it was slowed down by the register allocator used by Cranelift.&lt;/p&gt;
&lt;p&gt;Register allocation is a well-known compiler task where the compiler decides which registers should hold variables and temporary expressions of a program. Usually, the goal of register allocation is to perform the register assignment in a way that maximizes the runtime performance of the compiled program. However, for unoptimized builds, we often care more about the compilation speed instead.&lt;/p&gt;
&lt;p&gt;Demilade has thus proposed to implement a new Cranelift register allocator called &lt;code&gt;fastalloc&lt;/code&gt;, with the goal of making it as fast as possible, at the cost of the quality of the generated code. He was very well-prepared, in fact he had a prototype implementation ready even before his GSoC project has started! However, register allocation is a complex problem, and thus it then took several months to finish the implementation and also optimize it as much as possible. Demilade also made extensive use of fuzzing to make sure that his allocator is robust even in the presence of various edge cases.&lt;/p&gt;
&lt;p&gt;Once the allocator was ready, Demilade benchmarked the Cranelift backend both with the original and his new register allocator using our compiler &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc-perf&quot;&gt;benchmark suite&lt;/a&gt;. And the performance results look awesome! With his faster register allocator, the Rust compiler executes up to 18% less instructions across several benchmarks, including complex ones like performing a debug build of Cargo itself. Note that this is an &lt;em&gt;end-to-end&lt;/em&gt; performance improvement of the time needed to compile a whole crate, which is really impressive. If you would like to examine the results in more detail or even run the benchmark yourself, check out Demilade&#x27;s &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://d-sonuga.netlify.app/gsoc/regalloc-iii/&quot;&gt;final report&lt;/a&gt;, which includes detailed instructions on how to reproduce the benchmark.&lt;/p&gt;
&lt;p&gt;Apart from having the potential to speed up compilation of Rust code, the new register allocator can be also useful for other use-cases, as it can be used in Cranelift on its own (outside the Cranelift codegen backend). What can we can say other than we are very happy with Demilade&#x27;s work! Note that the new register allocator is not yet available in the Cranelift codegen backend out-of-the-box, but we expect that it will eventually become the default choice for debug builds and that it will thus make compilation of Rust crates using the Cranelift backend faster in the future.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;improve-rust-benchmark-suite&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#improve-rust-benchmark-suite&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Improve Rust benchmark suite&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/s7tya&quot;&gt;Eitaro Kubotera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/kobzol&quot;&gt;Jakub Beránek&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://gist.github.com/s7tya/96dc1cae4ca9e59841a95f0f48d023d6&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This project was relatively loosely defined, with the overarching goal of improving the user interface of the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc-perf&quot;&gt;Rust compiler benchmark suite&lt;/a&gt;. 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 &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://perf.rust-lang.org/dashboard.html&quot;&gt;dashboard&lt;/a&gt; and by implementing &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc-perf/pull/1922&quot;&gt;historical charts&lt;/a&gt; of runtime benchmark results, which help us figure out how is a given benchmark behaving over a longer time span.&lt;/p&gt;
&lt;p&gt;Another improvement that he has worked on was embedding a profiler trace visualizer directly within the &lt;code&gt;rustc-perf&lt;/code&gt; 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 &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://ui.perfetto.dev/&quot;&gt;Perfetto&lt;/a&gt; within the suite website, and also performed various &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc-perf/pull/1968&quot;&gt;optimizations&lt;/a&gt; to improve the performance of loading compilation profiles.&lt;/p&gt;
&lt;p&gt;Last, but not least, Eitaro also created a completely new user interface for the benchmark suite, which runs entirely in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustc-perf/pull/1955&quot;&gt;terminal&lt;/a&gt;. 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.&lt;/p&gt;
&lt;p&gt;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!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;move-cargo-shell-completions-to-rust&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#move-cargo-shell-completions-to-rust&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Move cargo shell completions to Rust&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/shannmu&quot;&gt;shanmu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/epage&quot;&gt;Ed Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://hackmd.io/@PthRWaPvSmS_2Yu_GLbGpg/Hk-ficKpC&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cargo&#x27;s completion scripts have been hand maintained and frequently broken when changed. The goal for this effort was to have the completions automatically generated from the definition of Cargo&#x27;s command-line, with extension points for dynamically generated results.&lt;/p&gt;
&lt;p&gt;shanmu took the prototype for dynamic completions in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/clap-rs/clap&quot;&gt;clap&lt;/a&gt; (the command-line parser used by Cargo), got it working and tested for common shells, as well as extended the parser to cover more cases. They then added extension points for CLI&#x27;s to provide custom completion results that can be generated on the fly.&lt;/p&gt;
&lt;p&gt;In the next phase, shanmu added this to nightly Cargo and added different custom completers to match what the handwritten completions do. As an example, with this feature enabled, when you type &lt;code&gt;cargo test --test&#x3D;&lt;/code&gt; and hit the Tab key, your shell will autocomplete all the test targets in your current Rust crate! If you are interested, see the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#native-completions&quot;&gt;instructions&lt;/a&gt; for trying this out. The link also lists where you can provide feedback.&lt;/p&gt;
&lt;p&gt;You can also check out the following issues to find out what is left before this can be stabilized:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/clap-rs/clap/issues/3166&quot;&gt;clap#3166&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/cargo/issues/14520&quot;&gt;cargo#14520&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id&#x3D;&quot;rewriting-esoteric-error-prone-makefile-tests-using-robust-rust-features&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rewriting-esoteric-error-prone-makefile-tests-using-robust-rust-features&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Rewriting esoteric, error-prone makefile tests using robust Rust features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/Oneirical&quot;&gt;Julien Robert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jieyouxu&quot;&gt;Jieyou Xu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://oneirical.github.io/gsocfinal/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Rust compiler has several test suites that make sure that it is working correctly under various conditions. One of these suites is the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/tree/master/tests/run-make&quot;&gt;&lt;code&gt;run-make&lt;/code&gt; test suite&lt;/a&gt;, whose tests were previously written using &lt;code&gt;Makefile&lt;/code&gt;s. However, this setup &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/40713&quot;&gt;posed several problems&lt;/a&gt;. It was not possible to run the suite on the Tier 1 Windows MSVC target (&lt;code&gt;x86_64-pc-windows-msvc&lt;/code&gt;) and getting it running on Windows at all was quite challenging. Furthermore, the syntax of &lt;code&gt;Makefile&lt;/code&gt;s is quite esoteric, which frequently caused mistakes to go unnoticed even when reviewed by multiple people.&lt;/p&gt;
&lt;p&gt;Julien helped to convert the &lt;code&gt;Makefile&lt;/code&gt;-based &lt;code&gt;run-make&lt;/code&gt; tests into plain Rust-based tests, supported by a test support library called &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/tree/master/src/tools/run-make-support&quot;&gt;&lt;code&gt;run_make_support&lt;/code&gt;&lt;/a&gt;. However, it was not a trivial &quot;rewrite this in Rust&quot; kind of deal. In this project, Julien:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Significantly improved the test documentation;&lt;/li&gt;
&lt;li&gt;Fixed multiple bugs that were present in the &lt;code&gt;Makefile&lt;/code&gt; versions that had gone unnoticed for &lt;em&gt;years&lt;/em&gt; -- some tests were never testing anything or silently ignored failures, so even if the subject being tested regressed, these tests would not have caught that.&lt;/li&gt;
&lt;li&gt;Added to and improved the test support library API and implementation; and&lt;/li&gt;
&lt;li&gt;Improved code organization within the tests to make them easier to understand and maintain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Just to give you an idea of the scope of his work, he has ported almost &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/pulls?q&#x3D;is%3Apr+author%3Aoneirical+is%3Amerged&quot;&gt;250&lt;/a&gt; Makefile tests over the span of his GSoC project! If you like puns, check out the branch names of Julien&#x27;s PRs, as they are simply &lt;em&gt;fantestic&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;As a result, Julien has significantly improved the robustness of the &lt;code&gt;run-make&lt;/code&gt; test suite, and improved the ergonomics of modifying existing &lt;code&gt;run-make&lt;/code&gt; tests and authoring new &lt;code&gt;run-make&lt;/code&gt; tests. Multiple contributors have expressed that they were more willing to work with the Rust-based &lt;code&gt;run-make&lt;/code&gt; tests over the previous &lt;code&gt;Makefile&lt;/code&gt; versions.&lt;/p&gt;
&lt;p&gt;The vast majority of &lt;code&gt;run-make&lt;/code&gt; tests &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rust/issues/121876&quot;&gt;now use the Rust-based test infrastructure&lt;/a&gt;, with a few holdouts remaining due to various quirks. After these are resolved, we can finally rip out the legacy &lt;code&gt;Makefile&lt;/code&gt; test infrastructure.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;rewriting-the-rewrite-trait&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rewriting-the-rewrite-trait&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Rewriting the Rewrite trait&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ding-young&quot;&gt;SeoYoung Lee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/ytmimi&quot;&gt;Yacin Tmimi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://ding-young.github.io/posts/gsoc-final/&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/rustfmt&quot;&gt;rustfmt&lt;/a&gt; is a Rust code formatter that is widely used across the Rust ecosystem thanks to its direct integration within Cargo. Usually, you just run &lt;code&gt;cargo fmt&lt;/code&gt; and you can immediately enjoy a properly formatted Rust project. However, there are edge cases in which &lt;code&gt;rustfmt&lt;/code&gt; can fail to format your code. That is not such an issue on its own, but it becomes more problematic when it fails &lt;em&gt;silently&lt;/em&gt;, without giving the user any context about what went wrong. This is what was happening in &lt;code&gt;rustfmt&lt;/code&gt;, as many functions simply returned an &lt;code&gt;Option&lt;/code&gt; instead of a &lt;code&gt;Result&lt;/code&gt;, which made it difficult to add proper error reporting.&lt;/p&gt;
&lt;p&gt;The goal of SeoYoung&#x27;s project was to perform a large internal refactoring of &lt;code&gt;rustfmt&lt;/code&gt; that would allow tracking context about what went wrong during reformatting. In turn, this would enable turning silent failures into proper error messages that could help users examine and debug what went wrong, and could even allow &lt;code&gt;rustfmt&lt;/code&gt; to retry formatting in more situations.&lt;/p&gt;
&lt;p&gt;At first, this might sound like an easy task, but performing such large-scale refactoring within a complex project such as &lt;code&gt;rustfmt&lt;/code&gt; is not so simple. SeoYoung needed to come up with an approach to incrementally apply these refactors, so that they would be easy to review and wouldn&#x27;t impact the entire code base at once. She introduced a new trait that enhanced the original &lt;code&gt;Rewrite&lt;/code&gt; trait, and modified existing implementations to align with it. She also had to deal with various edge cases that we hadn&#x27;t anticipated before the project started. SeoYoung was meticulous and systematic with her approach, and made sure that no formatting functions or methods were missed.&lt;/p&gt;
&lt;p&gt;Ultimately, the refactor was a success! Internally, rustfmt now keeps track of more information related to formatting failures, including errors that it could not possibly report before, such as issues with macro formatting. It also has the ability to provide information about source code spans, which helps identify parts of code that require spacing adjustments when exceeding the maximum line width. We don&#x27;t yet propagate that additional failure context as user facing error messages, as that was a stretch goal that we didn&#x27;t have time to complete, but SeoYoung has expressed interest in continuing to work on that as a future improvement!&lt;/p&gt;
&lt;p&gt;Apart from working on error context propagation, SeoYoung also made various other improvements that enhanced the overall quality of the codebase, and she was also helping other contributors understand &lt;code&gt;rustfmt&lt;/code&gt;. Thank you for making the foundations of formatting better for everyone!&lt;/p&gt;
&lt;h3 id&#x3D;&quot;rust-to-net-compiler-add-support-for-compiling-running-cargo-tests&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#rust-to-net-compiler-add-support-for-compiling-running-cargo-tests&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Rust to .NET compiler - add support for compiling &amp;amp; running cargo tests&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/FractalFir&quot;&gt;Michał Kostrubiec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/jackh726&quot;&gt;Jack Huey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://fractalfir.github.io/generated_html/rustc_codegen_clr_v0_2_0.html&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As was already mentioned above, the Rust compiler can be used with various codegen backends. One of these is the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/FractalFir/rustc_codegen_clr&quot;&gt;.NET backend&lt;/a&gt;, which compiles Rust code to the Common Intermediate Language (CIL), which can then be executed by the .NET Common Language Runtime (CLR). This backend allows interoperability of Rust and .NET (e.g. C#) code, in an effort to bring these two ecosystems closer together.&lt;/p&gt;
&lt;p&gt;At the start of this year, the .NET backend was already able to compile complex Rust programs, but it was still lacking certain crucial features. The goal of this GSoC project, implemented by Michał, who is in fact the sole author of the backend, was to extend the functionality of this backend in various areas. As a target goal, he set out to extend the backend so that it could be used to run tests using the &lt;code&gt;cargo test&lt;/code&gt; command. Even though it might sound trivial, properly compiling and running the Rust test harness is non-trivial, as it makes use of complex features such as dynamic trait objects, atomics, panics, unwinding or multithreading. These features were especially tricky to implement in this codegen backend, because the LLVM intermediate representation (IR) and CIL have fundamental differences, and not all LLVM intrinsics have .NET equivalents.&lt;/p&gt;
&lt;p&gt;However, this did not stop Michał. He has been working on this project tirelessly, implementing new features, fixing various issues and learning more about the compiler&#x27;s internals every new day. He has also been documenting his journey with (almost) daily &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/channel/421156-gsoc/topic/Project.3A.20Rust.20to.20.2ENET.20compiler&quot;&gt;updates on Zulip&lt;/a&gt;, which were fascinating to read. Once he has reached his original goal, he moved the goalpost up to another level and attempted to run the compiler&#x27;s own test suite using the .NET backend. This helped him uncover additional edge cases and also led to a refactoring of the whole backend that resulted in significant performance improvements.&lt;/p&gt;
&lt;p&gt;By the end of the GSoC project, the .NET backend was able to properly compile and run almost 90% of the standard library &lt;code&gt;core&lt;/code&gt; and &lt;code&gt;std&lt;/code&gt; test suite. That is an incredibly impressive number, since the suite contains thousands of tests, some of which are quite &lt;em&gt;arcane&lt;/em&gt;. Michał&#x27;s pace has not slowed down even after the project has ended and he is still continuously improving the backend. Oh, and did we already mention that his backend also has experimental support for emitting &lt;em&gt;C&lt;/em&gt; code, effectively acting as a &lt;em&gt;C&lt;/em&gt; codegen backend?! Michał has been very busy over the summer.&lt;/p&gt;
&lt;p&gt;We thank Michał for all his work on the .NET backend, as it was truly inspirational, and led to fruitful discussions that were relevant also to other codegen backends. Michał&#x27;s next goal is to get his backend upstreamed and create an official .NET compilation target, which could open up the doors to Rust becoming a first-class citizen in the .NET ecosystem.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;sandboxed-and-deterministic-proc-macro-using-webassembly&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#sandboxed-and-deterministic-proc-macro-using-webassembly&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Sandboxed and deterministic proc macro using WebAssembly&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mav3ri3k&quot;&gt;Apurva Mishra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/davidlattimore&quot;&gt;David Lattimore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/mav3ri3k/rust/blob/gsoc24/gsoc24.md&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rust procedural (proc) macros are currently run as native code that gets compiled to a shared object which is loaded directly into the process of the Rust compiler. Because of this design, these macros can do whatever they want, for example arbitrarily access the filesystem or communicate through a network. This has not only obvious security implications, but it also affects performance, as this design makes it difficult to cache proc macro invocations. Over the years, there have been various discussions about making proc macros more &lt;em&gt;hermetic&lt;/em&gt;, for example by compiling them to WebAssembly modules, which can be easily executed in a sandbox. This would also open the possibility of distributing precompiled versions of proc macros via crates.io, to speed up fresh builds of crates that depend on proc macros.&lt;/p&gt;
&lt;p&gt;The goal of this project was to examine what would it take to implement WebAssembly module support for proc macros and create a prototype of this idea. We knew this would be a very ambitious project, especially since Apurva did not have prior experience with contributing to the Rust compiler, and because proc macro internals are very complex. Nevertheless, some progress was made. With the help of his mentor, David, Apurva was able to create a prototype that can load WebAssembly code into the compiler via a shared object. Some work was also done to make use of the existing &lt;code&gt;TokenStream&lt;/code&gt; serialization and deserialization code in the compiler&#x27;s &lt;code&gt;proc_macro&lt;/code&gt; crate.&lt;/p&gt;
&lt;p&gt;Even though this project did not fulfill its original goals and more work will be needed in the future to get a functional prototype of WebAssembly proc macros, we are thankful for Apurva&#x27;s contributions. The WebAssembly loading prototype is a good start, and Apurva&#x27;s exploration of proc macro internals should serve as a useful reference for anyone working on this feature in the future. Going forward, we will try to describe more incremental steps for our GSoC projects, as this project was perhaps too ambitious from the start.&lt;/p&gt;
&lt;h3 id&#x3D;&quot;tokio-async-support-in-miri&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#tokio-async-support-in-miri&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Tokio async support in Miri&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contributor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/tiif&quot;&gt;Tiffany Pek Yuan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mentor: &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/oli-obk&quot;&gt;Oli Scherer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://gist.github.com/tiif/3e08ba6e8cfb1d078e6155410108ae48&quot;&gt;Final report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/miri&quot;&gt;miri&lt;/a&gt; is an interpreter that can find possible instances of undefined behavior in Rust code. It is being used across the Rust ecosystem, but previously it was not possible to run it on any non-trivial programs (those that ever &lt;code&gt;await&lt;/code&gt; on anything) that use &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://tokio.rs/&quot;&gt;tokio&lt;/a&gt;, due a to a fundamental missing feature: support for the &lt;code&gt;epoll&lt;/code&gt; syscall on Linux (and similar APIs on other major platforms).&lt;/p&gt;
&lt;p&gt;Tiffany implemented the basic &lt;code&gt;epoll&lt;/code&gt; operations needed to cover the majority of the tokio test suite, by crafting pure &lt;code&gt;libc&lt;/code&gt; code examples that exercised those &lt;code&gt;epoll&lt;/code&gt; operations, and then implementing their emulation in miri itself. At times, this required refactoring core miri components like file descriptor handling, as they were originally not created with syscalls like &lt;code&gt;epoll&lt;/code&gt; in mind.&lt;/p&gt;
&lt;p&gt;Surprising to everyone (though probably not tokio-internals experts), once these core &lt;code&gt;epoll&lt;/code&gt; operations were finished, operations like async file reading and writing started working in miri out of the box! Due to limitations of non-blocking file operations offered by operating systems, tokio is wrapping these file operations in dedicated threads, which was already supported by miri.&lt;/p&gt;
&lt;p&gt;Once Tiffany has finished the project, including stretch goals like implementing async file operations, she proceeded to contact tokio maintainers and worked with them to run miri on most tokio tests in CI. And we have good news: so far no soundness problems have been discovered! Tiffany has become a regular contributor to miri, focusing on continuing to expand the set of supported file descriptor operations. We thank her for all her contributions!&lt;/p&gt;
&lt;h2 id&#x3D;&quot;conclusion&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#conclusion&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Conclusion&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
</content>

        <author>
            <name>Jakub Beránek, Jack Huey and Paul Lenz</name>
        </author>
    </entry>
    <entry>
        <title>Announcing Google Summer of Code 2024 selected projects</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects/" type="text/html" title="Announcing Google Summer of Code 2024 selected projects" />
        <published>2024-05-01T00:00:00+00:00</published>
        <updated>2024-05-01T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects/">&lt;p&gt;The Rust Project is &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://blog.rust-lang.org/2024/02/21/Rust-participates-in-GSoC-2024.html&quot;&gt;participating&lt;/a&gt; in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com&quot;&gt;Google Summer of Code (GSoC) 2024&lt;/a&gt;, a global program organized by Google which is designed to bring new contributors to the world of open-source.&lt;/p&gt;
&lt;p&gt;In February, we published a list of &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;GSoC project ideas&lt;/a&gt;, and started discussing these projects with potential GSoC applicants on our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/421156-gsoc&quot;&gt;Zulip&lt;/a&gt;. We were pleasantly surprised by the amount of people that wanted to participate in these projects and that led to many fruitful discussions with members of various Rust teams. Some of them even immediately began contributing to various repositories of the Rust Project, even before GSoC officially started!&lt;/p&gt;
&lt;p&gt;After the initial discussions, GSoC applicants prepared and submitted their project proposals. We received 65 (!) proposals in total. We are happy to see that there was so much interest, given that this is the first time the Rust Project is participating in GSoC.&lt;/p&gt;
&lt;p&gt;A team of mentors primarily composed of Rust Project contributors then thoroughly examined the submitted proposals. GSoC required us to produce a ranked list of the best proposals, which was a challenging task in itself since Rust is a big project with many priorities! We went through many rounds of discussions and had to consider many factors, such as prior conversations with the given applicant, the quality and scope of their proposal, the importance of the proposed project for the Rust Project and its wider community, but also the availability of mentors, who are often volunteers and thus have limited time available for mentoring.&lt;/p&gt;
&lt;p&gt;In many cases, we had multiple proposals that aimed to accomplish the same goal. Therefore, we had to pick only one per project topic despite receiving several high-quality proposals from people we&#x27;d love to work with. We also often had to choose between great proposals targeting different work within the same Rust component to avoid overloading a single mentor with multiple projects.&lt;/p&gt;
&lt;p&gt;In the end, we narrowed the list down to twelve best proposals, which we felt was the maximum amount that we could realistically support with our available mentor pool. We submitted this list and eagerly awaited how many of these twelve proposals would be accepted into GSoC.&lt;/p&gt;
&lt;h2 id&#x3D;&quot;selected-projects&quot;&gt;&lt;a class&#x3D;&quot;anchor&quot; href&#x3D;&quot;#selected-projects&quot; aria-hidden&#x3D;&quot;true&quot;&gt;&lt;/a&gt;
Selected projects&lt;/h2&gt;
&lt;p&gt;On the 1st of May, Google has announced the accepted projects. We are happy to announce that &lt;code&gt;9&lt;/code&gt; proposals out of the twelve that we have submitted were accepted by Google, and will thus participate in Google Summer of Code 2024! Below you can find the list of accepted proposals (in alphabetical order), along with the names of their authors and the assigned mentor(s):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2024/projects/hADSyIDV&quot;&gt;Adding lint-level configuration to cargo-semver-checks&lt;/a&gt;&lt;/strong&gt; by Max Carr, mentored by Predrag Gruevski&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2024/projects/zxxeGZMt&quot;&gt;Implementation of a Faster Register Allocator For Cranelift&lt;/a&gt;&lt;/strong&gt; by d-sonuga, mentored by Chris Fallin and Amanieu d&#x27;Antras&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2024/projects/MeyNanKI&quot;&gt;Improve Rust benchmark suite&lt;/a&gt;&lt;/strong&gt; by s7tya, mentored by Jakub Beránek&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2024/projects/jjnidpgn&quot;&gt;Move cargo shell completions to Rust&lt;/a&gt;&lt;/strong&gt; by shanmu, mentored by Ed Page&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2024/projects/P5BC91Hr&quot;&gt;Rewriting Esoteric, Error-Prone Makefile Tests Using Robust Rust Features&lt;/a&gt;&lt;/strong&gt; by Julien Robert, mentored by Jieyou Xu&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2024/projects/gHEu3vxc&quot;&gt;Rewriting the Rewrite trait&lt;/a&gt;&lt;/strong&gt; by SeoYoung Lee, mentored by Yacin Tmimi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2024/projects/IIHP5ozV&quot;&gt;Rust to .NET compiler - add support for compiling &amp;amp; running cargo tests&lt;/a&gt;&lt;/strong&gt; by Fractal Fir, mentored by Jack Huey&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2024/projects/kXG0mZoj&quot;&gt;Sandboxed and Deterministic Proc Macro using Wasm&lt;/a&gt;&lt;/strong&gt; by Apurva Mishra, mentored by David Lattimore&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com/programs/2024/projects/rk1Ey4hN&quot;&gt;Tokio async support in Miri&lt;/a&gt;&lt;/strong&gt; by Tiffany Pek Yuan, mentored by Oli Scherer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Congratulations to all applicants whose project was selected!&lt;/strong&gt; The mentors are looking forward to working with you on these exciting projects to improve the Rust ecosystem. You can expect to hear from us soon, so that we can start coordinating the work on your GSoC projects.&lt;/p&gt;
&lt;p&gt;We would also like to thank all the applicants whose proposal was sadly not accepted, for their interactions with the Rust community and contributions to various Rust projects. There were some great proposals that did not make the cut, in large part because of limited review capacity. However, even if your proposal was not accepted, we would be happy if you would consider contributing to the projects that got you interested, even outside GSoC! Our &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;project idea list&lt;/a&gt; is still actual, and could serve as a general entry point for contributors that would like to work on projects that would help the Rust Project maintainers and the Rust ecosystem.&lt;/p&gt;
&lt;p&gt;Assuming our involvement in GSoC 2024 is successful, there&#x27;s a good chance we&#x27;ll participate next year as well (though we can&#x27;t promise anything yet) and we hope to receive your proposals again in the future! We also are planning to participate in similar programs in the very near future. Those announcements will come in separate blog posts, so make sure to subscribe to this blog so that you don&#x27;t miss anything.&lt;/p&gt;
&lt;p&gt;The accepted GSoC projects will run for several months. After GSoC 2024 finishes (in autumn of 2024), we plan to publish a blog post in which we will summarize the outcome of the accepted projects.&lt;/p&gt;
</content>

        <author>
            <name>Jakub Beránek, Jack Huey and Paul Lenz</name>
        </author>
    </entry>
    <entry>
        <title>Rust participates in Google Summer of Code 2024</title>
        <link rel="alternate" href="https://blog.rust-lang.org/2024/02/21/Rust-participates-in-GSoC-2024/" type="text/html" title="Rust participates in Google Summer of Code 2024" />
        <published>2024-02-21T00:00:00+00:00</published>
        <updated>2024-02-21T00:00:00+00:00</updated>
        <id>https://blog.rust-lang.org/2024/02/21/Rust-participates-in-GSoC-2024/</id>
        <content type="html" xml:base="https://blog.rust-lang.org/2024/02/21/Rust-participates-in-GSoC-2024/">&lt;p&gt;We&#x27;re writing this blog post to announce that the Rust Project will be participating in &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://summerofcode.withgoogle.com&quot;&gt;Google Summer of Code (GSoC) 2024&lt;/a&gt;. If you&#x27;re not eligible or interested in participating in GSoC, then most of this post likely isn&#x27;t relevant to you; if you are, this should contain some useful information and links.&lt;/p&gt;
&lt;p&gt;Google Summer of Code (GSoC) is an annual global program organized by Google that aims to bring new contributors to the world of open-source. The program pairs organizations (such as the Rust Project) with contributors (usually students), with the goal of helping the participants make meaningful open-source contributions under the guidance of experienced mentors.&lt;/p&gt;
&lt;p&gt;As of today, the organizations that have been accepted into the program have been announced by Google. The GSoC applicants now have several weeks to send project proposals to organizations that appeal to them. If their project proposal is accepted, they will embark on a 12-week journey during which they will try to complete their proposed project under the guidance of an assigned mentor.&lt;/p&gt;
&lt;p&gt;We have prepared a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code&quot;&gt;list of project ideas&lt;/a&gt; that can serve as inspiration for potential GSoC contributors that would like to send a project proposal to the Rust organization. However, applicants can also come up with their own project ideas. You can discuss project ideas or try to find mentors in the &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://rust-lang.zulipchat.com/#narrow/stream/421156-gsoc&quot;&gt;#gsoc&lt;/a&gt; Zulip stream. We have also prepared a &lt;a rel&#x3D;&quot;external&quot; href&#x3D;&quot;https://github.com/rust-lang/google-summer-of-code/blob/main/proposal-guide.md&quot;&gt;proposal guide&lt;/a&gt; that should help you with preparing your project proposals.&lt;/p&gt;
&lt;p&gt;You can start discussing the project ideas with Rust Project maintainers immediately. The project proposal application period starts on March 18, 2024, and ends on April 2, 2024 at 18:00 UTC. Take note of that deadline, as there will be no extensions!&lt;/p&gt;
&lt;p&gt;If you are interested in contributing to the Rust Project, we encourage you to check out our project idea list and send us a GSoC project proposal! Of course, you are also free to discuss these projects and/or try to move them forward even if you do not intend to (or cannot) participate in GSoC. We welcome all contributors to Rust, as there is always enough work to do.&lt;/p&gt;
&lt;p&gt;This is the first time that the Rust Project is participating in GSoC, so we are quite excited about it. We hope that participants in the program can improve their skills, but also would love for this to bring new contributors to the Project and increase the awareness of Rust in general. We will publish another blog post later this year with more information about our participation in the program.&lt;/p&gt;
</content>

        <author>
            <name>Jakub Beránek, Jack Huey and Paul Lenz</name>
        </author>
    </entry>
</feed>
