Ethin wrote:You just exactly proved my point.
Nope, you just proved you can't read.
Ethin wrote:The C, C++, and Ada standards make no reference to ABIs
They are very specific about having an ABI and that it's specified elsewhere. And what does SysV ABI and MS ABI specify if not those? Here's the quote again:
Note how both specifications express explicitly that they are specifying an ABI for the C language only, and nothing else.
It is a fact that
C language has an ABI, it is specified well, while all that Rust has is a joke.
Ethin wrote:There are interfacing aspects, sure, but that's still not an ABI specification.
They never said that it was! It's the other specification I linked that has the title "Application Binary Interface", and indeed it's about registers and stack layouts. On the other hand Rust did claim that it has the ABI spec, by calling the page "Application Binary Interface (ABI)", and btw
there's no other document by that name. You do realize the difference, right?
Ethin wrote:And you completely and utterly ignored what I said at the end of my post as well. The rust reference (in particular that page you linked to) explicitly states:
Rust Reference wrote:See
extern functions for information on specifying the ABI for exporting functions. See
external blocks for information on specifying the ABI for linking external libraries.
I did not ignore it. I said that that tells absolutely nothing about the actual ABI, which is 100% correct. Describing how to use the "extern" keyword isn't the same as specifying the in-out registers and stack layout (which is, by definition what binary interface specifies). Using keywords like "extern" and "external"
are part of the API (as I've already said).
Ethin wrote:I don't know how I can make that any clearer for you.
It is very much and utterly clear to me that what Rust has by the name "ABI" isn't the binary interface at all. That's the truth. Nothing you can say would change that fact.
For your information, the OP question was:
pvc wrote:How is Rust ABI on x86, AMD64, ARM32 and ARM64 defined? Is Rust ABI stable? How registers are used? What is stack frame layout? How does name mangling work in Rust?
Here I ask you again: where is a link to a Rust ABI specification that talks about the registers and stack layout? It isn't the one that's falsely called "Application Binary Interface (ABI)", so where is it?
iansjack wrote:You tell the Rust compiler to use the C ABI. It's not rocket science.
If you must resort to the C ABI, then why don't you use that ABI in Rust in the first place? Why is there a need for an unstable Rust ABI at all? See what I mean? What if you take a year break (like many OSdevers do) and you want to make a small change in your kernel a year from now? Do you have to recompile EVERYTHING because the latest compiler can't link properly with your one year old Rust libk? That's hilarious.
Anyway, C is still the best language for kernel development, neither Go nor Rust is a match by far. I'm looking forward the day when Rust becomes the new COBOL, or the new Java, and I'm 100% sure it's going to happen in my lifetime. Now it's new and hyped, but that will pass pretty soon. I'm also 100% sure C will be still around long after I'm gone.
Cheers,
bzt