Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Add blog post about Google Summer of Code 2024 project results #1419

Merged
merged 26 commits into from
Nov 7, 2024
Merged
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
494e164
Add blog post about Google Summer of Code 2024 project results
Kobzol Oct 24, 2024
4686029
Add cargo shell completion project summary
Kobzol Oct 25, 2024
7885039
Add run-make test port project summary
Kobzol Oct 25, 2024
3d3e20e
Clarify ported run-make test count
Kobzol Oct 25, 2024
9ff948f
Use Julien's pun
Kobzol Oct 26, 2024
c575d2e
Reword cargo-semver-checks section
Kobzol Oct 27, 2024
50c8f3a
Add description of Apurva's project
Kobzol Oct 28, 2024
b9efc93
Add description of the Cranelift register allocator
Kobzol Oct 28, 2024
5c12305
Add description of the .NET backend project
Kobzol Oct 28, 2024
8e8c4b7
Remove temporary note
Kobzol Oct 28, 2024
7a0c18c
Add description of the async support in miri project
Kobzol Oct 29, 2024
1a93a51
Fix typo
Kobzol Oct 29, 2024
37b39dd
Use Fractal's real name
Kobzol Oct 29, 2024
5d3a970
Clarify LLVM IR/CIL differences
Kobzol Oct 29, 2024
a3de931
Remove notion of blocking/non-blocking operations
Kobzol Oct 29, 2024
a7cac06
Bootstrap rustfmt project description
Kobzol Oct 29, 2024
83223a7
Use Michał's full name
Kobzol Oct 29, 2024
d2639d7
Change heading casing
Kobzol Nov 5, 2024
7ab5802
Extend rustfmt project description
Kobzol Nov 5, 2024
8ff9d08
Fix typo
Kobzol Nov 5, 2024
560b3c7
Remove redundant word
Kobzol Nov 5, 2024
44740b8
Move post to another date
Kobzol Nov 5, 2024
0f8c0bd
Remove redundant link
Kobzol Nov 7, 2024
1304d43
Remove duplicated exclamation mark
Kobzol Nov 7, 2024
db3fcc6
Remove redundant link
Kobzol Nov 7, 2024
da30032
Slightly reword miri text
Kobzol Nov 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use Fractal's real name
Kobzol committed Oct 29, 2024
commit 37b39dd10628b1902e8f4aa78a8b7be8a344e65e
8 changes: 4 additions & 4 deletions posts/2024-11-01-gsoc-2024-results.md
Original file line number Diff line number Diff line change
@@ -130,13 +130,13 @@ TODO

As was already mentioned above, the Rust compiler can be used with various codegen backends. One of these is the [.NET backend][codegen-clr], which compiles Rust code to the Common Intermediate Language (CIL), which can then be executed by the .NET Common Language Runtime (CRL). This backend allows interoperability of Rust and .NET (e.g. C#) code, in an effort to bring these two ecosystems closer together.

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 none other than FractalFir, the author of the backend himself, 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 `cargo test` 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 tricky to implement in this codegen backend, especially because of large differences between how the .NET runtime works and the way LLVM usually does things.
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ł (aka Fractal Fir), 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 `cargo test` 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 tricky to implement in this codegen backend, especially because of large differences between how the .NET runtime works and the way LLVM usually does things.

However, this did not stop Fractal. He has been working on this project tirelessly, implementing new features, fixing various issues and learning more about the compiler's internals every new day. He has also been documenting his journey with (almost) daily [updates on Zulip](https://rust-lang.zulipchat.com/#narrow/channel/421156-gsoc/topic/Project.3A.20Rust.20to.20.2ENET.20compiler), 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'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.
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's internals every new day. He has also been documenting his journey with (almost) daily [updates on Zulip](https://rust-lang.zulipchat.com/#narrow/channel/421156-gsoc/topic/Project.3A.20Rust.20to.20.2ENET.20compiler), 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'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.

By the end of the GSoC project, the .NET backend was able to properly compile and run almost 95% of the standard library `core` and `std` test suite. That is an incredibly impressive number, since the suite contains thousands of tests, some of which are quite *arcane*. Fractal'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 can also emit *C* code, effectively acting as a *C* codegen backend?!
By the end of the GSoC project, the .NET backend was able to properly compile and run almost 90% of the standard library `core` and `std` test suite. That is an incredibly impressive number, since the suite contains thousands of tests, some of which are quite *arcane*. Michał'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 *C* code, effectively acting as a *C* codegen backend?! Michał has been very busy over the summer.

We thank Fractal 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. Fractal'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.
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ł'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.

[codegen-clr]: https://github.com/FractalFir/rustc_codegen_clr