Skip to content

Latest commit

 

History

History
157 lines (89 loc) · 3.9 KB

CHANGELOG.md

File metadata and controls

157 lines (89 loc) · 3.9 KB

Changelog

All notable changes to this project will be documented in this file.

[0.0.9] - 2022-07-25

Features

Rework TwoSimdBlocks into Twice

  • TwoSimdBlocks got removed
  • Twice<A> gives an alignment guarantee of two blocks of A
  • halves on aligned block of Twice<A> splits a block into two smaller alignments

[0.0.8] - 2022-07-09

Features

Make Default conform to strict provenance

Related: #34

Made Alignment types empty

Related: #31

Bug Fixes

Invalid Hash impl for AlignedBytes

Related: #33

[0.0.7] - 2022-06-03

Features

alignment_size function for aligned types

  • Allows getting the alignment size as a method instead of static.

Related: #29

[0.0.6] - 2022-05-28

Bug Fixes

Take FnMut in new_initialize

  • Fn is unnecessarily prohibitive, FnMut allows more initialisation functions.

[0.0.5] - 2022-05-27

Features

Add support for AVX512

  • When the avx512f target feature is enabled the SimdBlock is set to 64 bytes.

Related: #23

Relax AVX2 requirement to AVX

  • AVX already includes 256-bit SIMD vectors, so using it as the trigger for SimdBlock instead of AVX2 makes more sense

Related: #22

Reliability

Enable local simd-size-matrix tests

  • One can use the test_simd_sizes.py script to run the simd-size test matrix locally.

[0.0.4] - 2022-05-25

Features

Support sse target feature

  • When the sse target feature is enabled on x86/x86_64 the SimdBlock size is 16 bytes, unless a target feature with a larger vector is also enabled.

Related: #18

Reliability

Miri test on windows targets

Added simd_alignment_test

  • Test whether the size of SimdBlock agrees with the expected one for a given target.

Added simd-size-matrix test

  • Use simd_alignment_test to check whether SimdBlock sizes remain consistent across targets.

[0.0.3] - 2022-05-18

Bug Fixes

Impl of Default returning unaligned ptrs

  • Implementations of Default for
  • AlignedBytes
  • &AlignedSlice
  • &mut AlignedSlice
  • were incorrect by using NonNull::dangling as the pointer.
  • That pointer need not be aligned to the specified Alignment.
  • This was fixed by using std's dangling implementation tweaked to
  • the required alignment, while still not allocating.

Related: #11

Reliability

Allow miri symbolic-alignment-check

  • Miri's -Zmiri-symbolic-alignment-check breaks align_offset to always return usize::MAX (that is by design), so we need to fallback to regular cast-then-modulo alignment check for tests when running under Miri.

Related: #12

[0.0.2] - 2022-05-17

Features

Added alignment::TwoTo<N>

Related: #5

[0.0.1] - 2022-05-17

Features

Initial API

  • Alignment types driven by the alignment module.
  • AlignedBytes -- aligned container
  • AlignedSlice -- type guarantee on alignment of &[u8]
  • AlignedBlockIterator -- iterate aligned blocks of a slice.
  • Quality of life implementations of Deref and std::cmp traits.

Reliability

Automatically generate changelog (#1)

Related: #1

Use cargo-hack for feature powerset

Related: #3