# 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` gives an alignment guarantee of two blocks of A - `halves` on aligned block of `Twice` splits a block into two smaller alignments ## [0.0.8] - 2022-07-09 ### Features #### Make `Default` conform to strict provenance Related: [#34](https://github.com/V0ldek/aligners/issues/34) #### Made `Alignment` types empty Related: [#31](https://github.com/V0ldek/aligners/issues/31) ### Bug Fixes #### Invalid `Hash` impl for `AlignedBytes` Related: [#33](https://github.com/V0ldek/aligners/issues/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](https://github.com/V0ldek/aligners/issues/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](https://github.com/V0ldek/aligners/issues/18) #### 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](https://github.com/V0ldek/aligners/issues/18) ### 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](https://github.com/V0ldek/aligners/issues/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](https://github.com/V0ldek/aligners/issues/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](https://github.com/V0ldek/aligners/issues/12) ## [0.0.2] - 2022-05-17 ### Features #### Added `alignment::TwoTo` Related: [#5](https://github.com/V0ldek/aligners/issues/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](https://github.com/V0ldek/aligners/issues/1) #### Use cargo-hack for feature powerset Related: [#3](https://github.com/V0ldek/aligners/issues/3)