8000 Tags · NicolasT/reedsolomon · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Tags: NicolasT/reedsolomon

Tags

reedsolomon-0.0.4.3

Toggle reedsolomon-0.0.4.3's commit message
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

Toggle reedsolomon-0.0.4.2's commit message
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

Toggle reedsolomon-0.0.4.1's commit message
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

Toggle reedsolomon-0.0.4.0's commit message
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

Toggle reedsolomon-0.0.3.0's commit message
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

Toggle reedsolomon-0.0.2.0's commit message
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.

reedsolomon-0.0.1.2

Toggle reedsolomon-0.0.1.2's commit message
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

reedsolomon-0.0.1.1

Toggle reedsolomon-0.0.1.1's commit message
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.

reedsolomon-0.0.1.0

Toggle reedsolomon-0.0.1.0's commit message
Initial release

0