rustc_codegen_gcc
mrustc
Our great sponsors
rustc_codegen_gcc | mrustc | |
---|---|---|
49 | 75 | |
864 | 2,081 | |
1.9% | - | |
9.6 | 9.0 | |
7 days ago | 5 days ago | |
Rust | C++ | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
rustc_codegen_gcc
-
How hard would it be to port the Rust toolchain to a new non-POSIX OS written in Rust and get it to host its own development? What would that process entail?
Alternatively, there's another initiative called codegen_gcc which is about using GCC as a backend for the rustc compiler. It's (much) more advanced in Rust support, but I am not sure how easy it would be to use a modified libgccjit from there.
-
"Rust makes me never want to touch C again" -- Matthew Ahrens
In addition to what others have said about platform support, Rust is also on its way to gaining more platform support through rustc_codegen_gcc, the GCC codegen backend for rustc, as an alternative to the LLVM backend. That means many of the platforms GCC supports will suddenly become available with Rust.
-
Rust contributions for Linux 6.4 are finally merged upstream!
Yeah, rustc_codegen_gcc is a GCC backend for rustc, and its making a lot of good regular progress.
-
GCC 13 and the State of Gccrs
gcc-rs is one of two projects for bringing Rust to gcc. gcc-rs is the more ambitious of the two, with an entirely new frontend. There is also rustc_codegen_gcc (https://github.com/rust-lang/rustc_codegen_gcc) that keeps the rustc frontend, and only swaps out LLVM for GCC at the codegen stage.
-
rustc_codegen_gcc: Progress Report #22
Fixing unwinding in release mode is still ungoing. I could use some help here, so anyone with some understanding of unwinding, landing pads or GCC, please come on this issue to discuss this.
-
Any alternate Rust compilers?
Additionally, there is gcc codegen for rustc (https://github.com/rust-lang/rustc_codegen_gcc), which is not a compiler per se, but an alternative code generator, with more architectures supported and other nice things. It's also coming along, but there's still a lot of work to do there too. There's also Cranelift codegen (https://github.com/bjorn3/rustc_codegen_cranelift), which is designed to make debug builds faster, but this is not as exciting/useful as the other 2.
-
rustc_codegen_gcc: Progress Report #21
Good idea. I added the tag "help wanted" to the issue.
-
Challenges writing a compiler frontend targeting both LLVM and GCC?
Also, there are indeed ABI issues, e.g. for 128-bit integers and NaN.
-
A brave new world: building glibc with LLVM
I'm excited about both the backend & the frontend.
-
Rust front-end merged in GCC trunk
There is also a project for rustc to use GCC instead of LLVM for codegen.
mrustc
-
Why do lifetimes need to be leaky?
No, you don't. Existential proof: mrustc ignores lifetimes. Just flat out simply ignores. It changes some corner-cases related to HRBT, yet rustc compiled by mrustc works (that's BTW mrustc exist: to bootsrap the rustc compiler).
-
I think C++ is still a desirable coding platform compared to Rust
Incidentally C++ is the only way to bootstrap rust without rust today.
-
Rust โ Faster compilation with the parallel front-end in nightly
Well, there is mrustc[0], a Rust compiler that doesn't include a borrow-checker, so it's possible to compile (at least some versions of) Rust without a borrow checker, though it might not result in the most optimized code.
AFAIK there are some optimization like the infamous `noalias` optimization (which took several tries to get turned on[1]) that uses information established during borrow checking.
I'm also not sure what the relation with NLL (non-lexical lifetimes) is, where I would assume you would need at least a primitive borrow-checker to establish some information that the backend might be interested in. Then again, mrustc compiles Rust versions that have NLL features without a borrow-checker, so it's again probably more on the optimization side than being essential.
- Running the "Reflections on Trusting Trust" Compiler
-
Forty years of GNU and the free software movement
> Maybe another memory safe language, but Rust has severe bootstrapping issues which is a hard sell for distros that care about source to binary transparency.
It is possible to bootstrap rustc from just GCC relatively easily, although it's a little bit time consuming.
You can use mrustc to bootstrap Rust 1.54: https://github.com/thepowersgang/mrustc
And from then you can go through each version all the way to the current 1.72. (Each new Rust version officially needs the previous one to compile.)
-
Building rustc on sparcv9 Solaris
Have you tried this route : https://github.com/thepowersgang/mrustc ?
-
GCC 13 and the state of gccrs
Mrustc supports Rust 1.54.0 today
- Any alternate Rust compilers?
-
Stop Comparing Rust to Old C++
There are three. The official one, mrustc (no borrow checker, but can essentially compile the official rustc) and GCC (can't really compile anything substantial yet). Only rustc is production-ready though.
-
Can I make it so that only the newest version of Rust gets installed?
That probably depends on what you mean by problematic. Having an ever increasing chain of dependencies isnโt the most desirable situation so there has been some work to trim the bootstrap chain. In 2018, when the blogpost I linked above was written, mrustc was used to bootstrap rust 1.19.0; now mrustc can bootstrap rust 1.54.0 so the chain to recent versions is much shorter than if all those intervening versions back through 1.19.0 needed to be built. https://github.com/thepowersgang/mrustc
What are some alternatives?
gccrs - GCC Front-End for Rust
gccrs - GCC Front-End for Rust
gcc-rust - a (WIP) Rust frontend for gcc / a gcc backend for rustc
min-sized-rust - ๐ฆ How to minimize Rust binary size ๐ฆ
llvm-cbe - resurrected LLVM "C Backend", with improvements
databend - ๐๐ฎ๐๐ฎ, ๐๐ป๐ฎ๐น๐๐๐ถ๐ฐ๐ & ๐๐. Modern alternative to Snowflake. Cost-effective and simple for massive-scale analytics. https://databend.com
rust-ttapi
compiler-explorer - Run compilers interactively from your web browser and interact with the assembly
miri - An interpreter for Rust's mid-level intermediate representation
libgccjit-patches - Patches awaiting review for libgccjit