rav1e icon indicating copy to clipboard operation
rav1e copied to clipboard

Check in pre-assembled x86_64 binaries

Open Jasper-Bekkers opened this issue 3 years ago • 5 comments

It might be nice to check in pre-assembled binaries to avoid downstream users to have to require nasm, that way a build.rs can just link them directly from instead. Additionally one could do a CI step to make sure the binaries are up-to-date for whenever those lower level parts change and need to be rebuilt.

Alternatively - though this might not be usable directly, it might be an option to switch to inline assembly now that it's been stabilized on Rust 1.59. Since I'm not familiar with the inner workings of this project - it might not be possible.

Jasper-Bekkers avatar Apr 02 '22 00:04 Jasper-Bekkers

If you check the releases page, our CI publishes binaries for each weekly pre-release. Is there something in these releases that is insufficient?

Converting all of the ASM in rav1e to inline ASM would be hugely time consuming. Not impossible, but also probably not worthwhile as it wouldn't give any performance gains either.

shssoichiro avatar Apr 02 '22 01:04 shssoichiro

Would be nice to leverage what global_asm provides, but that requires to get the toolchain to understand the nasm dialect or to write a converter.

lu-zero avatar Apr 02 '22 06:04 lu-zero

If you check the releases page, our CI publishes binaries for each weekly pre-release. Is there something in these releases that is insufficient?

Converting all of the ASM in rav1e to inline ASM would be hugely time consuming. Not impossible, but also probably not worthwhile as it wouldn't give any performance gains either.

Are the pre-assembled assembly modules also included in crates.io releases? Maybe I just missed something?

Jasper-Bekkers avatar Apr 02 '22 08:04 Jasper-Bekkers

I'm against checking in any binary in the source tree, people that do not want to install nasm can probably be served well enough by our weekly binaries.

You may sponsor the effort of porting nasm to rust so that it is possible to integrate it better in the toolchain.

lu-zero avatar Apr 02 '22 09:04 lu-zero

I'm against checking in any binary in the source tree, people that do not want to install nasm can probably be served well enough by our weekly binaries.

This doesn't work when using rav1e as a Rust crate directly, from the looks of it the releases only contain a header file and dll's. Checking in binaries is more often done when external toolchains are required, such as for example in this texture compression crate, it doesn't get in the way of a lot either, and binaries can be checked to be up to date in CI for example.

You may sponsor the effort of porting nasm to rust so that it is possible to integrate it better in the toolchain.

I could be up for this as well, how do you set this up typically?

Jasper-Bekkers avatar Apr 02 '22 12:04 Jasper-Bekkers