Skip to content

Latest commit

 

History

History
313 lines (216 loc) · 9.73 KB

CHANGELOG.md

File metadata and controls

313 lines (216 loc) · 9.73 KB

Recent Changes (arrayvec)

0.7.4

  • Add feature zeroize to support the Zeroize trait by @elichai

0.7.3

  • Use track_caller on multiple methods like push and similar, for capacity overflows by @kornelski
  • impl BorrowMut for ArrayString by @msrd0
  • Fix stacked borrows violations by @clubby789
  • Update Miri CI by @RalfJung

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)
    • 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()