You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Might I suggest adding an updated drain to the list.
SmallVec::drain was implemented in #26, but does not accept a range argument like Vec::drain. At the time, RangeArgument (now RangeBounds) had not stabilized. RangeBounds is now stable since Rust 1.28.
Many of the unstable Rust features seem unlikely to stabilize any time soon. I think we should consider making a 1.0 release in the near future (sometime this year) which would include everything that is stable now (or in the very near future), and then make a 2.0 release much later (probably 2 or more years from now) with features that stabilize later.
The following would be delayed until 2.0 or later:
const generics
custom allocators
specialization
The following might be ready in time for 1.0:
MaybeUninit
liballoc
union
It might be worth waiting until MaybeUninit is stabilized, since that fixes a potentially critical soundness issue. Alternately we could use build-time rustc version detection to conditionally use MaybeUninit, but this would increase code complexity and we would need to live with it for potentially a long time.
Reacted by Clément Renault, Alex Kladov and Koutheir A.
I really hope that v1.0 version will use const generics. Yes, stabilization is unlikely to happen in the near future (6-12 months), but at least it's on horizon, which can not be said about specialization.
I'd like to publish this as soon as possible, because lack of MaybeUninit in existing releases is UB waiting to happen, and is already impacting downstream projects that run MIRI tests. We can release a 2.0 version next year or whenever const generics are ready.
Reacted by Chris Wong, Josh Bowman-Matthews, memoryruins, Clément Renault and Jon Gjengset
There's a neat trick written up by @dtolnay to emulate specialization on stable. I haven't looked too deeply into how well that performs, but it's probably worth a shot trying to use it.
Activity
llogiq commentedon Aug 23, 2018
Regarding specialization, I can see how the
Fromimplementation can work out, but wouldn'tExtendandinsert_manyviolate coherence rules?mbrubeck commentedon Aug 23, 2018
Specializing these would require adding an intermediate trait with a default impl and specialized impls, like libstd's
impl Extend for Vec.cbarrick commentedon Nov 15, 2018
Might I suggest adding an updated
drainto the list.SmallVec::drainwas implemented in #26, but does not accept a range argument likeVec::drain. At the time,RangeArgument(nowRangeBounds) had not stabilized.RangeBoundsis now stable since Rust 1.28.mbrubeck commentedon Mar 20, 2019
Many of the unstable Rust features seem unlikely to stabilize any time soon. I think we should consider making a 1.0 release in the near future (sometime this year) which would include everything that is stable now (or in the very near future), and then make a 2.0 release much later (probably 2 or more years from now) with features that stabilize later.
The following would be delayed until 2.0 or later:
The following might be ready in time for 1.0:
It might be worth waiting until MaybeUninit is stabilized, since that fixes a potentially critical soundness issue. Alternately we could use build-time rustc version detection to conditionally use MaybeUninit, but this would increase code complexity and we would need to live with it for potentially a long time.
lambda-fairy commentedon Aug 11, 2019
MaybeUninitandallocare now stable. Do we want to update this issue?newpavlov commentedon Sep 12, 2019
I really hope that v1.0 version will use const generics. Yes, stabilization is unlikely to happen in the near future (6-12 months), but at least it's on horizon, which can not be said about specialization.
mbrubeck commentedon Oct 30, 2019
I posted a PR for a 1.0.0 release in #175
I'd like to publish this as soon as possible, because lack of
MaybeUninitin existing releases is UB waiting to happen, and is already impacting downstream projects that run MIRI tests. We can release a 2.0 version next year or whenever const generics are ready.llogiq commentedon Oct 30, 2019
There's a neat trick written up by @dtolnay to emulate specialization on stable. I haven't looked too deeply into how well that performs, but it's probably worth a shot trying to use it.
matklad commentedon Nov 15, 2019
@mbrubeck thank you for putting work into this!
Seems like the issue can be closed and a new one, wishlist for 2.0, opened instead
mbrubeck commentedon Nov 19, 2019
Filed #183 to track 2.0 progress.
bump required rust to 1.36
[-][meta] Wishlist for 1.0[/-][+][meta] Wishlist for smallvec 1.0[/+]