Thread with 29 posts

jump to expanded post
mcc , @mcc@mastodon.social
(open profile)

@hikari The "if Rust does it a certain way, it must be right" attitude is infuriating and never more so than when you're actually trying to write Rust. It leads to really shallow thinking about the language.

What's really weird is I've stumbled into interacting with the actual Rust core devs and/or inventors a few times and they're all really nice, humble people who *don't act like this*. You ask about an odd decision & they either talk about complex tradeoffs or are like "oh that was an error"

Open remote post (opens in a new window)
mcc , @mcc@mastodon.social
(open profile)

@hikari Like, I want to be writing Rust, but there are a lot of things in it that come down to "this is a bad thing that was situationally necessary in order to achieve some other goal" and you want to figure out ways to cope with the bad thing and someone's coming along trying to convince you that the bad thing is Good Actually and it's just exhausting and unhelpful.

The only positive thing I can say on this front is I've also interacted with the Go community and they're even worse about this.

Open remote post (opens in a new window)
mcc , @mcc@mastodon.social
(open profile)

@rf @whitequark @hikari Maybe, but also what I think about a lot is that one of the biggest barriers to making a new language is building a library ecosystem. Like the libraries are at least half of why I want to use Rust or TypeScript.

If I ever do a language project enough it's likely to be built on top of Rust in some way that reuses the ABI just so I don't ever have to learn or expect anyone else to learn a new library ecosystem again.

Open remote post (opens in a new window)
auramarua , @auramarua@mastodon.xyz
(open profile)

@erincandescent @rf @mcc @whitequark @hikari COM's focus on header files and RPC means it has no meaningful notion of in-register ABI, also known as "calling convention". This omission means that where relevant, it simply canonizes C or C++ ABIs.

Decoupling has not been achieved if it does not allow recompiling the same C source to be incompatible with itself without reference to bespoke compiler flags, beyond those in the decoupling mechanism itself.

Open remote post (opens in a new window)
mcc , @mcc@mastodon.social
(open profile)

@hikari @rf @whitequark so like in the case of Rust the language is very tightly coupled to the "ABI" and if you generalized the ABI it would no longer capture what is useful about the language. Part of what's captured in a Rust function call is who is responsible for freeing any given piece of memory. How many languages even have a concept of someone being responsible for freeing memory, much less designating who it is?

Open remote post (opens in a new window)
soc , @soc@chaos.social
(open profile)

@hikari @mcc @rf @whitequark You hit the nail on its head.

I have spent a lot of time thinking about this, and the current approach where every language puts its ABI into their own little defined-by-code silo is a dead end.

There are various existing ideas to look at, though my personal approach is basically saying "ok, what's going to happen if I write my own PT_INTERP?".

Open remote post (opens in a new window)