Uh oh!
There was an error while loading. Please reload this page.
Document heap allocation location guarantee - #32383
Conversation
steveklabnik
commented
Mar 21, 2016
cc @rust-lang/lang, is this a guarantee we actually want to make? |
nagisa
commented
Mar 21, 2016
We rely on moving |
huonw
commented
Mar 21, 2016
std can assume things about implementation details that external libraries can't/shouldn't, because changes to those details can be accompanied by changes to the places that rely on them. That said, I would think that this is a guarantee we want to make, it seems to me like the only downside is that it would stop an implementation using a moving GC for (cc @rust-lang/libs too.) |
alexcrichton
commented
Mar 21, 2016
cc https://internals.rust-lang.org/t/zero-sized-fn-types-should-we-change-behavior-of-transmute/3253/2 some more discussion on this |
aidanhs
commented
Mar 21, 2016
I can see that opinion is leaning in favour, but a couple of motivating examples just for completeness:
|
pnkfelix
commented
Mar 21, 2016
I would say "that ship has sailed", except I don't think that such a ship was ever constructed, let alone given a port to dock at... |
nikomatsakis
commented
Mar 21, 2016
I think we can not -- and should not -- change the fact that |
alexcrichton
commented
Mar 24, 2016
The libs team discussed this during triage yesterday and the conclusion was to merge this for now. We probably want to in the long run take a more principled approach to defining these sorts of guarantees (for example doing them all at once), but this seems like it'd be clearly true in any situation so seems fine to merge. Thanks @aidanhs! |
steveklabnik
commented
Mar 24, 2016
🎊 |
steveklabnik
commented
Mar 24, 2016
@bors: rollup |
…=alexcrichton Document heap allocation location guarantee ``` 14:25 < aidanhs> is there any guarantee that boxes will not move the value on the heap when they are moved? 14:26 <@steveklabnik> aidanhs: ... i'm not sure if it's a guarantee, but it follows, generally 14:26 <@steveklabnik> aidanhs: moves mean memcpy, so you're memcpying the structure of the box itself, which is copying the pointer 14:26 <@steveklabnik> so the pointer won't be updated 14:26 <@steveklabnik> moves cannot do complex things like move the memory around on the heap 14:26 <@kmc> aidanhs: I would say it's guaranteed 14:27 < aidanhs> steveklabnik: yeah, that's what I was thinking, it'd be pretty strange for rust to do something, but I couldn't find any docs one way or the other 14:27 <@steveklabnik> kmc: aidanhs yeah, it's like a borderline thing that we don't explicitly guanratee but i think IS guaranteed by our other guarantees 14:27 <@steveklabnik> mostly that move == memcpy 14:28 < aidanhs> kmc: steveklabnik great thanks! would a PR to the rust reference along these lines be ok? 14:28 < jmesmon> aidanhs: I believe owning_ref has some discussion of that (stable references) 14:29 <@steveklabnik> aidanhs: i would probably take that, yeah 14:29 < aidanhs> jmesmon: thanks, I'll take a look at that ``` https://botbot.me/mozilla/rust/2016-02-22/?msg=60657619&page=18 r? @steveklabnik
…=alexcrichton Document heap allocation location guarantee ``` 14:25 < aidanhs> is there any guarantee that boxes will not move the value on the heap when they are moved? 14:26 <@steveklabnik> aidanhs: ... i'm not sure if it's a guarantee, but it follows, generally 14:26 <@steveklabnik> aidanhs: moves mean memcpy, so you're memcpying the structure of the box itself, which is copying the pointer 14:26 <@steveklabnik> so the pointer won't be updated 14:26 <@steveklabnik> moves cannot do complex things like move the memory around on the heap 14:26 <@kmc> aidanhs: I would say it's guaranteed 14:27 < aidanhs> steveklabnik: yeah, that's what I was thinking, it'd be pretty strange for rust to do something, but I couldn't find any docs one way or the other 14:27 <@steveklabnik> kmc: aidanhs yeah, it's like a borderline thing that we don't explicitly guanratee but i think IS guaranteed by our other guarantees 14:27 <@steveklabnik> mostly that move == memcpy 14:28 < aidanhs> kmc: steveklabnik great thanks! would a PR to the rust reference along these lines be ok? 14:28 < jmesmon> aidanhs: I believe owning_ref has some discussion of that (stable references) 14:29 <@steveklabnik> aidanhs: i would probably take that, yeah 14:29 < aidanhs> jmesmon: thanks, I'll take a look at that ``` https://botbot.me/mozilla/rust/2016-02-22/?msg=60657619&page=18 r? @steveklabnik
aidanhs
commented
Mar 29, 2016
Thanks all! |
https://botbot.me/mozilla/rust/2016-02-22/?msg=60657619&page=18
r? @steveklabnik