This codebase relies in unsafe code throughout the compression implementation, to do things like pointer arithmetic and explicitly avoiding bounds checking.
For long-term safety and maintainability/evolvability, it'd be better to remove unsafe wherever possible, the trick is finding a way to do it that doesn't negatively impact performance.
An attempt was made in #84 (comment) but the results were very bad. A more complete analysis of why the safe code is slow and what we can do to hint to the compiler to do things like eliding bounds checks and copies could make this possible
This codebase relies in unsafe code throughout the compression implementation, to do things like pointer arithmetic and explicitly avoiding bounds checking.
For long-term safety and maintainability/evolvability, it'd be better to remove unsafe wherever possible, the trick is finding a way to do it that doesn't negatively impact performance.
An attempt was made in #84 (comment) but the results were very bad. A more complete analysis of why the safe code is slow and what we can do to hint to the compiler to do things like eliding bounds checks and copies could make this possible