Remix.run Logo
loeg 3 days ago

Do you think any new, Git-relevant platform is going to gain C compiler support via anything other than Clang/LLVM?

bArray 3 days ago | parent | next [-]

In theory you should be able to use TCC to build git currently [1] [2]. If you have a lightweight system or you're building something experimental, it's a lot easier to get TCC up and running over GCC. I note that it supports arm, arm64, i386, riscv64 and x86_64.

[1] https://bellard.org/tcc/

[2] https://github.com/TinyCC/tinycc

loeg 3 days ago | parent [-]

> I note that it supports arm, arm64, i386, riscv64 and x86_64.

But like, so does LLVM.

1718627440 3 days ago | parent | prev | next [-]

Code doesn't need to "gain C compiler support", that's the point of having a language standard.

loeg 3 days ago | parent | next [-]

Someone has to write the platform-specific backend. A language standard doesn't help you if nothing implements it for your new platform.

MarsIronPI 3 days ago | parent | prev [-]

Which Rust still does not have. If serious projects like Git and Linux are adopting Rust, the Rust team might want to consider writing a spec.

yencabulator 3 days ago | parent [-]

https://blog.rust-lang.org/2025/03/26/adopting-the-fls/

MarsIronPI 5 hours ago | parent [-]

A specification is not a standard. It's a good first start, but what makes a standard more valuable is that it requires more than one entity to approve a change to it. This does look like a step in the right direction though.

delusional 3 days ago | parent | prev [-]

The nature considering the future is that our actions _now_ affect the answer _then_. If we tie our foundational tools to LLVM, then it's very unlikely a new platform can exists without support for it. If we don't tie ourselves to it, then it's more likely we can exist without it. It's not a matter of if LLVM will be supported. We ensure that by making it impossible not to be the case. It's a self fulfilling prophecy.

I prefer to ask another question: "Is this useful". Would it be useful, if we were to spin up a different platform in the future, to be able to do so without LLVM. I think the answer to that is a resounding yes.

That doesn't leave rust stranded. A _useful_ path for rust to pursue would be to defined a minimal subset of the compiler that you'd need to implement to compile all valid programs. The type checker, borrow checker, unused variable tracker, and all other safety features should be optional extensions to a core of a minimal portable compiler. This way, the rust compiler could feasibly be as simple as the simplest C compiler while still supporting all the complicated validation on platforms with deep support.

duckerude 3 days ago | parent [-]

rustc is only loosely tied to LLVM. Other code generation backends exist in various states of production-readiness. There are also two other compilers, mrustc and GCC-rs.

mrustc is a bootstrap Rust compiler that doesn't implement a borrow checker but can compile valid programs, so it's similar to to your proposed subset. Rust minus verification is still a very large and complex language though, just like C++ is large and complex.

A core language that's as simple to implement as C would have to be very different and many people (I suspect most) would like it less than the Rust that exists.