Tags: NicolasT/reedsolomon
Tags
reedsolomon-0.0.4.3 =================== Highlights since version 0.0.4.2: Use `__builtin_shuffle` for 'generic' SIMD code ----------------------------------------------- Some compi 8000 lers, including GCC, provide a built-in function to efficiently shuffle vector elements without resorting to platform-specific SIMD intrinsics. If available, we now use this function instead of a hand-written byte-wise implementation for the 'generic' implementations of the SIMD routines. For non-generic implementations, the code generated by `__builtin_shuffle` is slightly more complicated than the hand-written intrinsics code. See commit 724dddb for more information, including how compiler support is checked in the `./configure` script. See: 724dddb Detect and use system-provided `__get_cpuid_count` -------------------------------------------------- The X86 system headers coming with GCC 6.3 now provide a definition of `__get_cpuid_count` in `cpuid.h`. We define said function in a `cbits` module as well (for compilers not providing an implementation in their headers), which conflicts. A test for the declaration is now performed by `./configure`, and if provided by the system, this version of the routine is used. See: 0458a96 Various ------- - Dependency version bounds of `optparse-applicative` are widened to support current Stackage nightly. Related API changes are handled as well. See 495369d.
reedsolomon-0.0.4.2 =================== Highlights since version 0.0.4.1: Fix Haddock builds ------------------ Due to an oversight in `build-tools/ghc-wrapper`, when using GHC 8 Haddock would fail building API documentation for the package: the wrapper generated more output than plain GHC.
reedsolomon-0.0.4.1 =================== Highlights since version 0.0.4.0: Support GHC 8 & Stackage LTS 7 ------------------------------ - Use `-fno-warn-redundant-constraints` in GHC 8 builds Some constraints could be considered redundant because they're not used, but they're "empty" in the sense they're there to prevent compilation (if applicable), not provide runtime functionality. E.g. the `MinBound` and `MaxBound` constraint on `Data.Vector.Gneric.Sized.index`. Sadly enough a per-module `OPTIONS_GHC` pragma enabling `-fno-warn-redundant-constraints` for said module can't be used, because this would make compilation using GHC versions pre-8 fail (unknown compiler flag), and it appears that a `OPTIONS_GHC` pragma can't be `CPP`'ed out :-( - Work-around GHC 8.0.1 'bug' in `__GLASGOW_HASKELL_LLVM__` handling - Loosen constraints on `base` dependency, support `base 4.9` - Loosen constraints on `clock` and `QuickCheck` - Add `bytestring-mmap-0.2.2` to `extra-deps` of `stack.yaml` Looks like `bytestring-mmap` is no longer in Stackage LTS... Set Stackage LTS 7 as default resolver and update CI ---------------------------------------------------- `lts-7.0` is now the default `resolver` in `stack.yaml`, and CI configurations (where applicable) were updated to also test this platform. Minor changes to internal datastructures ---------------------------------------- Fields in the `Encoder` structure are now strict and unboxed, and unused fields are removed.
reedsolomon-0.0.4.0 =================== Highlights since version 0.0.3.0: SIMD support for ARM NEON and PowerPC AltiVec --------------------------------------------- The Galois field multiplication code implemented in C to optimize these calculations compared to native Haskell functions used to provide a generic implementation, and SIMD implementations for Intel SSSE3, AVX and AVX2. The generic implementation was supposed to work on non-Intel platforms, but is significantly slower than the SIMD versions. This version of the library is the first to contain SIMD versions of the code for non-Intel platforms: - ARM NEON - ARM NEON, optimized for AArch64 using `vqtbl1q_u8` - PowerPC AltiVec - PowerPC AltiVec, optimized for POWER8 using `vec_vsrd` Note: The library is tested on these platforms only at the C level by running some tests using Qemu's platform emulation, which could not trigger certain bugs. If you want to use this library on a foreign platform, make sure to run the full (Haskell) test-suite on it. Examples are no longer built and installed by default ----------------------------------------------------- When building the library (e.g. as a dependency of your application), the examples shipped with the library are no longer built and installed by default. Enable the Cabal `examples` flag to build and install them anyway. Extended `configure` checks and refactored C code ------------------------------------------------- The `configure` script has been extended, some bugs in it have been fixed, and the C code in `cbits` was refactored to make it simpler and more maintainable, and allow the C compiler to perform more optimizations.
reedsolomon-0.0.3.0 =================== Highlights since version 0.0.2.0: Fix library ----------- Before this version, the library was unusable outside its build tree, because the SIMD enhancement object files, generated from C sources, were not added to the static library archive or dynamic shared object. This release contains a hack for the Cabal build infrastructure, using wrappers for the `ar` and `ghc` tools, which inject the required command line arguments where applicable. This has been tested on Linux, MacOS X and Windows through all CI platforms used for this project, but it's still an error-prone and non-portable work-around. Various ------- - Dependency version bounds were bumped to include current Stackage nightly. - The `-funroll-all-loops` compiler option was removed from `CFLAGS`. - A reference benchmark using `memcpy` was added to the benchmark suite, which allows to compare encoding performance to memory bandwidth.
reedsolomon-0.0.2.0 =================== Highlights since version 0.0.1.2: Use AVX-optimized Galois routines --------------------------------- Even though AVX-optimized versions of the Galois field routines were compiled into the library, they were not used because of an oversight in the dispatch function. Expose SIMD instruction set being used -------------------------------------- Using a new action, `Data.ReedSolomon.simdInstructions`, the SIMD instruction set used to perform Galois field calculations (if any) can be queried at runtime.
Release 0.0.1.1 with disabled maintainer mode during `cbits` build After investigation of the build failures on Hackage, caused by autools 'maintainer mode' kicking in and required packages not being installed on the build systems, it turns out `cabal unpack` doesn't honor timestamps of files contained in `sdist` tarballs while unpacking. This in turn causes some source files in `cbits` to appear newer than their generated versions (e.g. `configure.ac` being newer than `configure`), and the 'maintainer mode' rules being triggered, which we obviously don't want to happen in release packages. This patch changes `Setup.hs` to explicitly pass `--disable-maintainer-mode` to `configure` in builds of packages whose version number doesn't match the development version, 999. This is a work-around for Cabal issue #2311. See: haskell/cabal#2311 See: 4eeceb8
Release 0.0.1 with proper timestamps in tarball The 0.0.1.0 release tarball contains improper timestamps of autotools-generated files in `cbits`, which causes the 'maintainer mode' to attempt to rebuild some files, which fails on systems where the required tools are not available. This release contains a fix in the `sdist` generation process which should work-around this, and result in successful builds on Hackage.