antoyo

joined 2 years ago
 

It was a bit more quiet recently. I hope to add the libcore tests (compiled with rustc_codegen_gcc) in the CI of the Rust repo soon in order to prevent test failures from coming back at every sync: this will greatly help us to focus on feature development.

 

We finally have rustup distribution for rustc_codegen_gcc! Now I'll get back to build rustc for a target not currently supported by Rust.

 

It's nice to see progress towards the milestone of having a rustc working on a target not currently supported by Rust. I can't wait to see that happen.

 

I'm happy to have finally fixed the issue we had with LTO (link-time optimization) and with cross-language LTO!

[–] antoyo@programming.dev 0 points 8 months ago

Well, LTO works in many cases, so it's not completely broken. I managed to do a refactoring in this PR, but I'm not entirely satisfied with the results yet (it prints stuff to stderr when LTO is not supported by the gcc installation). I have an idea to workaround this in order to land this PR which should help me continue fixing the issues we have with LTO.

LTO is very complex, though, so this is why it's taking time to move forward on this (same for unwinding support which also works in many cases, but not all).

 

We've been making good progress towards running more tests for rustc_codegen_gcc in the CI of the Rust repo to make our syncs with it easier and also progress towards having rustup distribution.

[–] antoyo@programming.dev 0 points 11 months ago

Well, we can generate code for targets not supported by LLVM, but it is not trivial to setup (we hope to get rustup support in the coming months to make this easier) and most GCC targets won't pass as many tests as x86-64 with rustc_codegen_gcc. There's some info in the wiki about some targets that people tried.

It is an optional goal for the Google Summer of Code to bootstrap the rust compiler on other platforms, so we might be able to get a working rustc for new platforms by the end of the summer.

[–] antoyo@programming.dev 0 points 11 months ago (3 children)

Oh, sorry for the confusion: this is about rustc_codegen_gcc which is a codegen plugin for rustc that uses libgccjit to generate the object files via GCC instead of LLVM, so it still requires rustc. There's another project that is a GCC frontend, called gccrs. Also, bootstrap is overloaded: in this case, a full bootstrap means that we can compile the Rust compiler with rustc_codegen_gcc, producing a stage-2 compiler, then recompile the Rust compiler with this stage-2 compiler to get a stage-3 compiler and those 2 compares as equal.

[–] antoyo@programming.dev 0 points 11 months ago (5 children)

What do you think it means?

 

We've got a few bugs fixed that allowed us to fully bootstrap the Rust compiler with rustc_codegen_gcc and to fix the CI for Rust for Linux compiled with rustc_codegen_gcc. We hope to improve our testing within the Rust repo in order to allow us to move faster towards our goals.

 

I've been pretty busy in my life recently, but I finally got around writing this blog post. Hopefully, things are sorted out in my personal life and I should be able to be more regular about these updates in the future.

I'm very happy to see good progress towards rustup distribution (thanks to Kobzol again!).