AdamNiederer / faster

SIMD for humans
Mozilla Public License 2.0
1.56k stars 51 forks source link

Failed to build faster version = "0.5.2" with rustc 1.53.0-nightly (07e0e2ec2 2021-03-24) #68

Open FrontMage opened 3 years ago

FrontMage commented 3 years ago

Hi, I'm trying to using faster on my project, but I can't seem to build it on my machine. Does not seems to be the problem of rust but the problem with vektor crate.

error[E0425]: cannot find function `_mm_extract_pi16` in module `crate::myarch`
    --> /home/xinbg/.cargo/registry/src/mirrors.ustc.edu.cn-12df342d903acd47/vektor-0.2.2/src/x86/sse.rs:1292:28
     |
1292 |             crate::myarch::_mm_extract_pi16(crate::mem::transmute(a), $imm8)
     |                            ^^^^^^^^^^^^^^^^
...
1296 |     crate::mem::transmute(constify_imm8!(imm2, call))
     |                           -------------------------- in this macro invocation
     |
    ::: /home/xinbg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/sse2.rs:1419:1
     |
1419 | pub unsafe fn _mm_extract_epi16(a: __m128i, imm8: i32) -> i32 {
     | ------------------------------------------------------------- similarly named function `_mm_extract_epi16` defined here
     |
     = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
help: a function with a similar name exists
     |
1292 |             crate::myarch::_mm_extract_epi16(crate::mem::transmute(a), $imm8)
     |                            ^^^^^^^^^^^^^^^^^
help: consider importing this function
     |
5    | use crate::_mm_extract_pi16;
     |

^C  Building [=====================>       ] 7/9: vektor

Is there anything I'm missing to make faster 0.5.2 work? Thx for the help!

risboo6909 commented 3 years ago

I had the same issue. Tried to compile it on Windows, MacOs and Linux.

Eventually I came up with the understanding that all those compilation errors come from Rust compatibility issues. By trial and error method I figured out that the last Rust toolchain version which still allows you to compile faster crate is nightly-2020-08-27 (Rust version 1.46.0).

You can install that version and see that the crate compiles flawlesly on it but fails to compile on any further version of toolchain.

Reading release notes for Rust version 1.47.0 which is the first one who fails to compile the crate, it's not clear to me yet what exactly from that list breaks down faster compilation.

ghost commented 3 years ago

@risboo6909 good answer. But after reading it, my first question is whether this crate still alive or dead?

risboo6909 commented 3 years ago

@halldong I don't know. It looks to me that this library requires a lot of effort to make it compile again. Can't say anything concrete because I'm not an author of the crate.