1Recent Changes (arrayvec) 2========================= 3 4## 0.7.4 5 6- Add feature zeroize to support the `Zeroize` trait by @elichai 7 8## 0.7.3 9 10- Use track_caller on multiple methods like push and similar, for capacity 11 overflows by @kornelski 12- impl BorrowMut for ArrayString by @msrd0 13- Fix stacked borrows violations by @clubby789 14- Update Miri CI by @RalfJung 15 16## 0.7.2 17 18- Add `.as_mut_str()` to `ArrayString` by @clarfonthey 19- Add `remaining_capacity` to `ArrayString` by @bhgomes 20- Add `zero_filled` constructor by @c410-f3r 21- Optimize `retain` by @TennyZhuang and @niklasf 22- Make the following methods `const` by @bhgomes: 23 - len 24 - is_empty 25 - capacity 26 - is_full 27 - remaining_capacity 28 - CapacityError::new 29 30## 0.7.1 31 32- Add new ArrayVec methods `.take()` and `.into_inner_unchecked()` by @conradludgate 33- `clone_from` now uses `truncate` when needed by @a1phyr 34 35## 0.7.0 36 37- `fn new_const` is now the way to const-construct arrayvec and arraystring, 38 and `fn new` has been reverted to a regular "non-const" function. 39 This works around performance issue #182, where the const fn version did not 40 optimize well. Change by @bluss with thanks to @rodrimati1992 and @niklasf 41 for analyzing the problem. 42 43- The deprecated feature flag `unstable-const-fn` was removed, since it's not needed 44 45- Optimize `.retain()` by using the same algorithm as in std, change by @niklasf, 46 issue #174. Original optimization in Rust std by @oxalica in rust-lang/rust/pull/81126 47 48## 0.6.1 49 50- The ``ArrayVec::new`` and ``ArrayString::new`` constructors are properly 51 const fns on stable and the feature flag ``unstable-const-fn`` is now deprecated. 52 by @rodrimati1992 53 54- Small fix to the capacity check macro by @Xaeroxe 55- Typo fix in documentation by @cuviper 56- Small code cleanup by @bluss 57 58## 0.6.0 59 60- The **const generics** release . Arrayvec finally implements what it 61 wanted to implement, since its first version: a vector backed by an array, 62 with generic parameters for the arbitrary element type *and* backing array 63 capacity. 64 65 The New type syntax is `ArrayVec<T, CAP>` where `CAP` is the arrayvec capacity. 66 For arraystring the syntax is `ArrayString<CAP>`. 67 68 Length is stored internally as u32; this limits the maximum capacity. The size 69 of the `ArrayVec` or `ArrayString` structs for the same capacity may grow 70 slightly compared with the previous version (depending on padding requirements 71 for the element type). Change by @bluss. 72 73- Arrayvec's `.extend()` and `FromIterator`/`.collect()` to arrayvec now 74 **panic** if the capacity of the arrayvec is exceeded. Change by @bluss. 75 76- Arraystring now implements `TryFrom<&str>` and `TryFrom<fmt::Arguments>` by 77 @c410-f3r 78 79- Minimum supported rust version is Rust 1.51 80 81## 0.5.2 82 83- Add `is_empty` methods for ArrayVec and ArrayString by @nicbn 84- Implement `TryFrom<Slice>` for ArrayVec by @paulkernfeld 85- Add `unstable-const-fn` to make `new` methods const by @m-ou-se 86- Run miri in CI and a few related fixes by @RalfJung 87- Fix outdated comment by @Phlosioneer 88- Move changelog to a separate file by @Luro02 89- Remove deprecated `Error::description` by @AnderEnder 90- Use pointer method `add` by @hbina 91 92## 0.5.1 93 94- Add `as_ptr`, `as_mut_ptr` accessors directly on the `ArrayVec` by @tbu- 95 (matches the same addition to `Vec` which happened in Rust 1.37). 96- Add method `ArrayString::len` (now available directly, not just through deref to str). 97- Use raw pointers instead of `&mut [u8]` for encoding chars into `ArrayString` 98 (uninit best practice fix). 99- Use raw pointers instead of `get_unchecked_mut` where the target may be 100 uninitialized everywhere relevant in the ArrayVec implementation 101 (uninit best practice fix). 102- Changed inline hints on many methods, mainly removing inline hints 103- `ArrayVec::dispose` is now deprecated (it has no purpose anymore) 104 105## 0.4.12 106 107- Use raw pointers instead of `get_unchecked_mut` where the target may be 108 uninitialized everywhere relevant in the ArrayVec implementation. 109 110## 0.5.0 111 112- Use `MaybeUninit` (now unconditionally) in the implementation of 113 `ArrayVec` 114- Use `MaybeUninit` (now unconditionally) in the implementation of 115 `ArrayString` 116- The crate feature for serde serialization is now named `serde`. 117- Updated the `Array` trait interface, and it is now easier to use for 118 users outside the crate. 119- Add `FromStr` impl for `ArrayString` by @despawnerer 120- Add method `try_extend_from_slice` to `ArrayVec`, which is always 121 effecient by @Thomasdezeeuw. 122- Add method `remaining_capacity` by @Thomasdezeeuw 123- Improve performance of the `extend` method. 124- The index type of zero capacity vectors is now itself zero size, by 125 @clarfon 126- Use `drop_in_place` for truncate and clear methods. This affects drop order 127 and resume from panic during drop. 128- Use Rust 2018 edition for the implementation 129- Require Rust 1.36 or later, for the unconditional `MaybeUninit` 130 improvements. 131 132## Older releases 133 134- 0.4.11 135 136 - In Rust 1.36 or later, use newly stable `MaybeUninit`. This extends the 137 soundness work introduced in 0.4.9, we are finally able to use this in 138 stable. We use feature detection (build script) to enable this at build 139 time. 140 141- 0.4.10 142 143 - Use `repr(C)` in the `union` version that was introduced in 0.4.9, to 144 allay some soundness concerns. 145 146- 0.4.9 147 148 - Use `union` in the implementation on when this is detected to be supported 149 (nightly only for now). This is a better solution for treating uninitialized 150 regions correctly, and we'll use it in stable Rust as soon as we are able. 151 When this is enabled, the `ArrayVec` has no space overhead in its memory 152 layout, although the size of the vec should not be relied upon. (See [#114](https://github.com/bluss/arrayvec/pull/114)) 153 - `ArrayString` updated to not use uninitialized memory, it instead zeros its 154 backing array. This will be refined in the next version, since we 155 need to make changes to the user visible API. 156 - The `use_union` feature now does nothing (like its documentation foretold). 157 158 159- 0.4.8 160 161 - Implement Clone and Debug for `IntoIter` by @clarcharr 162 - Add more array sizes under crate features. These cover all in the range 163 up to 128 and 129 to 255 respectively (we have a few of those by default): 164 165 - `array-size-33-128` 166 - `array-size-129-255` 167 168- 0.4.7 169 170 - Fix future compat warning about raw pointer casts 171 - Use `drop_in_place` when dropping the arrayvec by-value iterator 172 - Decrease mininum Rust version (see docs) by @jeehoonkang 173 174- 0.3.25 175 176 - Fix future compat warning about raw pointer casts 177 178- 0.4.6 179 180 - Fix compilation on 16-bit targets. This means, the 65536 array size is not 181 included on these targets. 182 183- 0.3.24 184 185 - Fix compilation on 16-bit targets. This means, the 65536 array size is not 186 included on these targets. 187 - Fix license files so that they are both included (was fixed in 0.4 before) 188 189- 0.4.5 190 191 - Add methods to `ArrayString` by @DenialAdams: 192 193 - `.pop() -> Option<char>` 194 - `.truncate(new_len)` 195 - `.remove(index) -> char` 196 197 - Remove dependency on crate odds 198 - Document debug assertions in unsafe methods better 199 200- 0.4.4 201 202 - Add method `ArrayVec::truncate()` by @niklasf 203 204- 0.4.3 205 206 - Improve performance for `ArrayVec::extend` with a lower level 207 implementation (#74) 208 - Small cleanup in dependencies (use no std for crates where we don't need more) 209 210- 0.4.2 211 212 - Add constructor method `new` to `CapacityError`. 213 214- 0.4.1 215 216 - Add `Default` impl to `ArrayString` by @tbu- 217 218- 0.4.0 219 220 - Reformed signatures and error handling by @bluss and @tbu-: 221 222 - `ArrayVec`'s `push, insert, remove, swap_remove` now match `Vec`'s 223 corresponding signature and panic on capacity errors where applicable. 224 - Add fallible methods `try_push, insert` and checked methods 225 `pop_at, swap_pop`. 226 - Similar changes to `ArrayString`'s push methods. 227 228 - Use a local version of the `RangeArgument` trait 229 - Add array sizes 50, 150, 200 by @daboross 230 - Support serde 1.0 by @daboross 231 - New method `.push_unchecked()` by @niklasf 232 - `ArrayString` implements `PartialOrd, Ord` by @tbu- 233 - Require Rust 1.14 234 - crate feature `use_generic_array` was dropped. 235 236- 0.3.23 237 238 - Implement `PartialOrd, Ord` as well as `PartialOrd<str>` for 239 `ArrayString`. 240 241- 0.3.22 242 243 - Implement `Array` for the 65536 size 244 245- 0.3.21 246 247 - Use `encode_utf8` from crate odds 248 - Add constructor `ArrayString::from_byte_string` 249 250- 0.3.20 251 252 - Simplify and speed up `ArrayString`’s `.push(char)`- 253 254- 0.3.19 255 256 - Add new crate feature `use_generic_array` which allows using their 257 `GenericArray` just like a regular fixed size array for the storage 258 of an `ArrayVec`. 259 260- 0.3.18 261 262 - Fix bounds check in `ArrayVec::insert`! 263 It would be buggy if `self.len() < index < self.capacity()`. Take note of 264 the push out behavior specified in the docs. 265 266- 0.3.17 267 268 - Added crate feature `use_union` which forwards to the nodrop crate feature 269 - Added methods `.is_full()` to `ArrayVec` and `ArrayString`. 270 271- 0.3.16 272 273 - Added method `.retain()` to `ArrayVec`. 274 - Added methods `.as_slice(), .as_mut_slice()` to `ArrayVec` and `.as_str()` 275 to `ArrayString`. 276 277- 0.3.15 278 279 - Add feature std, which you can opt out of to use `no_std` (requires Rust 1.6 280 to opt out). 281 - Implement `Clone::clone_from` for ArrayVec and ArrayString 282 283- 0.3.14 284 285 - Add `ArrayString::from(&str)` 286 287- 0.3.13 288 289 - Added `DerefMut` impl for `ArrayString`. 290 - Added method `.simplify()` to drop the element for `CapacityError`. 291 - Added method `.dispose()` to `ArrayVec` 292 293- 0.3.12 294 295 - Added ArrayString, a fixed capacity analogy of String 296 297- 0.3.11 298 299 - Added trait impls Default, PartialOrd, Ord, Write for ArrayVec 300 301- 0.3.10 302 303 - Go back to using external NoDrop, fixing a panic safety bug (issue #3) 304 305- 0.3.8 306 307 - Inline the non-dropping logic to remove one drop flag in the 308 ArrayVec representation. 309 310- 0.3.7 311 312 - Added method .into_inner() 313 - Added unsafe method .set_len() 314