Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Early versions of Rust used refcounting for everything and iirc they found anywhere between 10-15% of the resulting binaries was refcounting instructions!

Do you happen to have a citation for this? I don’t remember ever hearing about it, but it’s possible this was before my time, as I started in the smart pointers era.



I read it in an old HN comment by pcwalton. Algolia to the rescue! Actually it's even worse, he said it was 19% of the binary size:

https://news.ycombinator.com/item?id=5691684

The Rust compiler does this. Even so, 19% of the binary size in rustc is adjusting reference counts.

I am not exaggerating this. One-fifth of the code in the binary is sitting there wasted adjusting reference counts. This is much of the reason we're moving to tracing garbage collection.

It's interesting how many strategies Rust tried before settling on linear types.


> It's interesting how many strategies Rust tried before settling on linear types.

Rust doesn’t actually have linear types. I’m not sure what Rust’s types are called (affine?), but linear types are the “must be consumed” (can’t leak) types, and Rust doesn’t have any support for this.

Rust’s guarantee is that you MUST NOT use an object after dropping it. Linear types would add the additional requirement that you MUST drop the object.


Rust's types are affine, yes. Sometimes some people don't draw the distinction between the two and call both "linear." But "affine" is more precise.


Fascinating, thank you!

(I completely forgot I wrote that and also I'm mildly embarrassed at how I used to write back then.) :)


Thank you!!!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: