301 lines
9.4 KiB
Markdown
301 lines
9.4 KiB
Markdown
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()
|