- Use LruCache instead of InversionTree for caching data decode matrices
- See PR #104
- Minor code duplication
- See PR #102
- Dependencies update
- Updated
smallvec
from0.6.1
to1.8.0
- Updated
- Fixed cross build bug for aarch64 with simd-accel
- See PR #100
- Add support for
RUST_REED_SOLOMON_ERASURE_ARCH
environment variable and stop usingnative
architecture for SIMD code- See PR #98
- The
simd-accel
feature now builds on M1 Macs- See PR #92
- Minor code cleanup
- Merged several PRs
- Not fully reviewed as I am no longer maintaining this crate
- Updated build.rs to respect RUSTFLAGS's target-cpu if available
- See PR #75
- Added AVX512 support
- See PR #69
- Disabled SIMD acceleration when MSVC is being used to build the library
- See PR #67
- Dependencies update
- Updated
smallvec
from0.6
to1.2
- Updated
- Updated SIMD C code for Windows compatibility
- Replaced use of
libc::uint8_t
insrc/galois_8.rs
withu8
- Major API restructure: removed
Shard
type in favor of generic functions - The logic of this crate is now generic over choice of finite field
- The SIMD acceleration feature for GF(2^8) is now activated with the
simd-accel
Cargo feature. Pure-rust behavior is default. - Ran rustfmt
- Adds a GF(2^16) implementation
- Doc fix
- Added space before parantheses in code comments and documentation
- Disabled SIMD C code for Android and iOS targets entirely
- Fixed
Matrix::augment
- The error checking code was incorrect
- Since this method is used in internal code only, and the only use case is a correct use case, the error did not lead to any bugs
- Fixed benchmark data
- Previously used MB=10^6 bytes while I should have used MB=2^20 bytes
- Table in README has been updated accordingly
- The
>= 2.1.0
data is obtained by measuring again with the correctedrse-benchmark
code - The
2.0.X
and1.X.X
data are simply adjusted by mutiplying10^6
then dividing by2^20
- The
- Dependencies update
- Updated
rand
from0.4
to0.5.4
- Updated
- Added special handling in
build.rs
for CC options on Android and iOS-march=native
is not available for GCC on Android, see issue #23
- Impl'd
std::error::Error
forreed_solomon_erasure::Error
andreed_solomon_erasure::SBSError
- See issue #17, suggested by DrPeterVanNostrand
- Added fuzzing suite
- No code changes due to this as no bugs were found
- Upgraded InversionTree QuickCheck test
- No code changes due to this as no bugs were found
- Upgraded test suite for main codec methods (e.g. encode, reconstruct)
- A lot of heavy QuickCheck tests were added
- No code changes due to this as no bugs were found
- Upgraded test suite for ShardByShard methods
- A lot of heavy QuickCheck tests were added
- No code changes due to this as no bugs were found
- Minor code refactoring in
reconstruct_internal
method- This means
reconstruct
and related methods are slightly more optimized
- This means
- Added QuickCheck tests to the test suite
- InversionTree is heavily tested now
- No code changes as no bugs were found
- Deps update
- Updated rayon from 0.9 to 1.0
- Same as 3.0.1, but 3.0.1 had unapplied changes
- Updated doc for
with_buffer
variants of verifying methods- Stated explicitly that the buffer contains the correct parity shards after a successful call
- Added tests for the above statement
- Added
with_buffer
variants for verifying methods- This gives user the option of reducing heap allocation(s)
- Core code clean up, improvements, and review, added more AUDIT comments
- Improved shard utils
- Added code to remove leftover parity shards in
reconstruct_data_shards
- This means one fewer gotcha of using the methods
ShardByShard
code review and overhaulInversionTree
code review and improvements
- Added more flexibility for
convert_2D_slices
macro- Now accepts expressions rather than just identifiers
- The change requires change of syntax
- Replaced all slice splitting functions in
misc_utils
with std lib ones or rayon ones- This means there are fewer heap allocations in general
- Made
==
(eq
) forReedSolomon
more reasonable- Previously
==
would compare- data shard count
- parity shard count
- total shard count
- internal encoding matrix
- internal
ParallelParam
- Now it only compares
- data shard count
- parity shard count
- Previously
- Added info on encoding behaviour to doc
- Made Reed-Solomon codec creation methods return error instead of panic when shard numbers are not correct
- Fixed SBS error checking code
- Documentation fixes and polishing
- Renamed
Error::InvalidShardsIndicator
toError::InvalidShardFlags
- Added more details to documentation on error handling
- Error handling code overhaul and checks for all method variants
- Dead commented out code cleanup and indent fix
- Added Nicolas's SIMD C code files, gaining major speedup on supported CPUs
- Added support for "shard by shard" encoding, allowing easier streamed encoding
- Added functions for shard by shard encoding
- Complete rewrite of most code following Klaus Post's design
- Added optimsations (parallelism, loop unrolling)
- 4-5x faster than
1.X.X
- Documentation polish
- Added documentation badge to README
- Optimised internal matrix related operations
- This largely means
decode_missing
is faster
- This largely means
- Added more helper functions
- Added more tests
- Added more tests
- Fixed decode_missing
- Previously may reconstruct the missing shards with incorrect length
- Added more tests
- Added integration with Codecov (via kcov)
- Code refactoring
- Added integration with Coveralls (via kcov)
- Code restructuring
- Added documentation
- Base version