| Recent Changes (arrayvec) |
| ========================= |
| |
| ## 0.7.2 |
| |
| - Add `.as_mut_str()` to `ArrayString` by @clarfonthey |
| - Add `remaining_capacity` to `ArrayString` by @bhgomes |
| - Add `zero_filled` constructor by @c410-f3r |
| - Optimize `retain` by @TennyZhuang and @niklasf |
| - Make the following methods `const` by @bhgomes: |
| - len |
| - is_empty |
| - capacity |
| - is_full |
| - remaining_capacity |
| - CapacityError::new |
| |
| ## 0.7.1 |
| |
| - Add new ArrayVec methods `.take()` and `.into_inner_unchecked()` by @conradludgate |
| - `clone_from` now uses `truncate` when needed by @a1phyr |
| |
| ## 0.7.0 |
| |
| - `fn new_const` is now the way to const-construct arrayvec and arraystring, |
| and `fn new` has been reverted to a regular "non-const" function. |
| This works around performance issue #182, where the const fn version did not |
| optimize well. Change by @bluss with thanks to @rodrimati1992 and @niklasf |
| for analyzing the problem. |
| |
| - The deprecated feature flag `unstable-const-fn` was removed, since it's not needed |
| |
| - Optimize `.retain()` by using the same algorithm as in std, change by @niklasf, |
| issue #174. Original optimization in Rust std by @oxalica in rust-lang/rust/pull/81126 |
| |
| ## 0.6.1 |
| |
| - The ``ArrayVec::new`` and ``ArrayString::new`` constructors are properly |
| const fns on stable and the feature flag ``unstable-const-fn`` is now deprecated. |
| by @rodrimati1992 |
| |
| - Small fix to the capacity check macro by @Xaeroxe |
| - Typo fix in documentation by @cuviper |
| - Small code cleanup by @bluss |
| |
| ## 0.6.0 |
| |
| - The **const generics** release 🎉. Arrayvec finally implements what it |
| wanted to implement, since its first version: a vector backed by an array, |
| with generic parameters for the arbitrary element type *and* backing array |
| capacity. |
| |
| The New type syntax is `ArrayVec<T, CAP>` where `CAP` is the arrayvec capacity. |
| For arraystring the syntax is `ArrayString<CAP>`. |
| |
| Length is stored internally as u32; this limits the maximum capacity. The size |
| of the `ArrayVec` or `ArrayString` structs for the same capacity may grow |
| slightly compared with the previous version (depending on padding requirements |
| for the element type). Change by @bluss. |
| |
| - Arrayvec's `.extend()` and `FromIterator`/`.collect()` to arrayvec now |
| **panic** if the capacity of the arrayvec is exceeded. Change by @bluss. |
| |
| - Arraystring now implements `TryFrom<&str>` and `TryFrom<fmt::Arguments>` by |
| @c410-f3r |
| |
| - Minimum supported rust version is Rust 1.51 |
| |
| ## 0.5.2 |
| |
| - Add `is_empty` methods for ArrayVec and ArrayString by @nicbn |
| - Implement `TryFrom<Slice>` for ArrayVec by @paulkernfeld |
| - Add `unstable-const-fn` to make `new` methods const by @m-ou-se |
| - Run miri in CI and a few related fixes by @RalfJung |
| - Fix outdated comment by @Phlosioneer |
| - Move changelog to a separate file by @Luro02 |
| - Remove deprecated `Error::description` by @AnderEnder |
| - Use pointer method `add` by @hbina |
| |
| ## 0.5.1 |
| |
| - Add `as_ptr`, `as_mut_ptr` accessors directly on the `ArrayVec` by @tbu- |
| (matches the same addition to `Vec` which happened in Rust 1.37). |
| - Add method `ArrayString::len` (now available directly, not just through deref to str). |
| - Use raw pointers instead of `&mut [u8]` for encoding chars into `ArrayString` |
| (uninit best practice fix). |
| - Use raw pointers instead of `get_unchecked_mut` where the target may be |
| uninitialized everywhere relevant in the ArrayVec implementation |
| (uninit best practice fix). |
| - Changed inline hints on many methods, mainly removing inline hints |
| - `ArrayVec::dispose` is now deprecated (it has no purpose anymore) |
| |
| ## 0.4.12 |
| |
| - Use raw pointers instead of `get_unchecked_mut` where the target may be |
| uninitialized everywhere relevant in the ArrayVec implementation. |
| |
| ## 0.5.0 |
| |
| - Use `MaybeUninit` (now unconditionally) in the implementation of |
| `ArrayVec` |
| - Use `MaybeUninit` (now unconditionally) in the implementation of |
| `ArrayString` |
| - The crate feature for serde serialization is now named `serde`. |
| - Updated the `Array` trait interface, and it is now easier to use for |
| users outside the crate. |
| - Add `FromStr` impl for `ArrayString` by @despawnerer |
| - Add method `try_extend_from_slice` to `ArrayVec`, which is always |
| effecient by @Thomasdezeeuw. |
| - Add method `remaining_capacity` by @Thomasdezeeuw |
| - Improve performance of the `extend` method. |
| - The index type of zero capacity vectors is now itself zero size, by |
| @clarfon |
| - Use `drop_in_place` for truncate and clear methods. This affects drop order |
| and resume from panic during drop. |
| - Use Rust 2018 edition for the implementation |
| - Require Rust 1.36 or later, for the unconditional `MaybeUninit` |
| improvements. |
| |
| ## Older releases |
| |
| - 0.4.11 |
| |
| - In Rust 1.36 or later, use newly stable `MaybeUninit`. This extends the |
| soundness work introduced in 0.4.9, we are finally able to use this in |
| stable. We use feature detection (build script) to enable this at build |
| time. |
| |
| - 0.4.10 |
| |
| - Use `repr(C)` in the `union` version that was introduced in 0.4.9, to |
| allay some soundness concerns. |
| |
| - 0.4.9 |
| |
| - Use `union` in the implementation on when this is detected to be supported |
| (nightly only for now). This is a better solution for treating uninitialized |
| regions correctly, and we'll use it in stable Rust as soon as we are able. |
| When this is enabled, the `ArrayVec` has no space overhead in its memory |
| layout, although the size of the vec should not be relied upon. (See [#114](https://github.com/bluss/arrayvec/pull/114)) |
| - `ArrayString` updated to not use uninitialized memory, it instead zeros its |
| backing array. This will be refined in the next version, since we |
| need to make changes to the user visible API. |
| - The `use_union` feature now does nothing (like its documentation foretold). |
| |
| |
| - 0.4.8 |
| |
| - Implement Clone and Debug for `IntoIter` by @clarcharr |
| - Add more array sizes under crate features. These cover all in the range |
| up to 128 and 129 to 255 respectively (we have a few of those by default): |
| |
| - `array-size-33-128` |
| - `array-size-129-255` |
| |
| - 0.4.7 |
| |
| - Fix future compat warning about raw pointer casts |
| - Use `drop_in_place` when dropping the arrayvec by-value iterator |
| - Decrease mininum Rust version (see docs) by @jeehoonkang |
| |
| - 0.3.25 |
| |
| - Fix future compat warning about raw pointer casts |
| |
| - 0.4.6 |
| |
| - Fix compilation on 16-bit targets. This means, the 65536 array size is not |
| included on these targets. |
| |
| - 0.3.24 |
| |
| - Fix compilation on 16-bit targets. This means, the 65536 array size is not |
| included on these targets. |
| - Fix license files so that they are both included (was fixed in 0.4 before) |
| |
| - 0.4.5 |
| |
| - Add methods to `ArrayString` by @DenialAdams: |
| |
| - `.pop() -> Option<char>` |
| - `.truncate(new_len)` |
| - `.remove(index) -> char` |
| |
| - Remove dependency on crate odds |
| - Document debug assertions in unsafe methods better |
| |
| - 0.4.4 |
| |
| - Add method `ArrayVec::truncate()` by @niklasf |
| |
| - 0.4.3 |
| |
| - Improve performance for `ArrayVec::extend` with a lower level |
| implementation (#74) |
| - Small cleanup in dependencies (use no std for crates where we don't need more) |
| |
| - 0.4.2 |
| |
| - Add constructor method `new` to `CapacityError`. |
| |
| - 0.4.1 |
| |
| - Add `Default` impl to `ArrayString` by @tbu- |
| |
| - 0.4.0 |
| |
| - Reformed signatures and error handling by @bluss and @tbu-: |
| |
| - `ArrayVec`'s `push, insert, remove, swap_remove` now match `Vec`'s |
| corresponding signature and panic on capacity errors where applicable. |
| - Add fallible methods `try_push, insert` and checked methods |
| `pop_at, swap_pop`. |
| - Similar changes to `ArrayString`'s push methods. |
| |
| - Use a local version of the `RangeArgument` trait |
| - Add array sizes 50, 150, 200 by @daboross |
| - Support serde 1.0 by @daboross |
| - New method `.push_unchecked()` by @niklasf |
| - `ArrayString` implements `PartialOrd, Ord` by @tbu- |
| - Require Rust 1.14 |
| - crate feature `use_generic_array` was dropped. |
| |
| - 0.3.23 |
| |
| - Implement `PartialOrd, Ord` as well as `PartialOrd<str>` for |
| `ArrayString`. |
| |
| - 0.3.22 |
| |
| - Implement `Array` for the 65536 size |
| |
| - 0.3.21 |
| |
| - Use `encode_utf8` from crate odds |
| - Add constructor `ArrayString::from_byte_string` |
| |
| - 0.3.20 |
| |
| - Simplify and speed up `ArrayString`’s `.push(char)`- |
| |
| - 0.3.19 |
| |
| - Add new crate feature `use_generic_array` which allows using their |
| `GenericArray` just like a regular fixed size array for the storage |
| of an `ArrayVec`. |
| |
| - 0.3.18 |
| |
| - Fix bounds check in `ArrayVec::insert`! |
| It would be buggy if `self.len() < index < self.capacity()`. Take note of |
| the push out behavior specified in the docs. |
| |
| - 0.3.17 |
| |
| - Added crate feature `use_union` which forwards to the nodrop crate feature |
| - Added methods `.is_full()` to `ArrayVec` and `ArrayString`. |
| |
| - 0.3.16 |
| |
| - Added method `.retain()` to `ArrayVec`. |
| - Added methods `.as_slice(), .as_mut_slice()` to `ArrayVec` and `.as_str()` |
| to `ArrayString`. |
| |
| - 0.3.15 |
| |
| - Add feature std, which you can opt out of to use `no_std` (requires Rust 1.6 |
| to opt out). |
| - Implement `Clone::clone_from` for ArrayVec and ArrayString |
| |
| - 0.3.14 |
| |
| - Add `ArrayString::from(&str)` |
| |
| - 0.3.13 |
| |
| - Added `DerefMut` impl for `ArrayString`. |
| - Added method `.simplify()` to drop the element for `CapacityError`. |
| - Added method `.dispose()` to `ArrayVec` |
| |
| - 0.3.12 |
| |
| - Added ArrayString, a fixed capacity analogy of String |
| |
| - 0.3.11 |
| |
| - Added trait impls Default, PartialOrd, Ord, Write for ArrayVec |
| |
| - 0.3.10 |
| |
| - Go back to using external NoDrop, fixing a panic safety bug (issue #3) |
| |
| - 0.3.8 |
| |
| - Inline the non-dropping logic to remove one drop flag in the |
| ArrayVec representation. |
| |
| - 0.3.7 |
| |
| - Added method .into_inner() |
| - Added unsafe method .set_len() |