unum-cloud / usearch

Fast Open-Source Search & Clustering engine × for Vectors & 🔜 Strings × in C++, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolfram 🔍
https://unum-cloud.github.io/usearch/
Apache License 2.0
2.26k stars 140 forks source link

Bug: Rust docs are failing to build for 2.16.x #531

Open hadronzoo opened 2 days ago

hadronzoo commented 2 days ago

Describe the bug

2.16.0 appears to have introduced a GCC 13 requirement, which is breaking CI systems like the Rust Docs builder. Compiling a Rust project that depends on USearch 2.16.2 on a Github Action Runner using ubuntu-latest will also result in the same compilation failure.

Steps to reproduce

Compile a Rust project that uses USearch 2.16.0 on Ubuntu 22.04, which will fail with cc1plus: error: attribute 'avx512fp16' argument 'target' is unknown. Upgrading to GCC 13 or switching to Ubuntu 24.04 will fix the issue.

Expected behavior

Rust docs to build for new versions. Compilation to succeed on Ubuntu 22.04 without errors.

USearch version

v2.16.0

Operating System

Ubuntu 22.04

Hardware architecture

x86

Which interface are you using?

Other bindings

Contact Details

joshua@beamform.io

Are you open to being tagged as a contributor?

Is there an existing issue for this?

Code of Conduct

ashvardanian commented 2 days ago

@hadronzoo, hi! Is there a way to override the compilation settings of the docs builder?

I assume it might be easier to fix this issue in SimSIMD first.

hadronzoo commented 2 days ago

It looks like docs.rs does have a way to update the build environment for a crate: https://forge.rust-lang.org/docs-rs/add-dependencies.html.

ashvardanian commented 2 days ago

@hadronzoo, sounds like a solution! Any chance you could open a PR? Might be best to start in the SimSIMD repo, as it's the source of the problems, I assum.

hadronzoo commented 2 days ago

Is there any way to detect the older platform to prevent this error? Unfortunately, any crate which depends upon USearch also fails to build docs. I've also opened a docs.rs issue.

hadronzoo commented 2 days ago

It looks like they only take 20.04 packages:

This should be the name of a package in the Ubuntu 20.04 Repositories.

I think that's going to block upgrading GCC.

hadronzoo commented 1 day ago

Another option is to make the simsimd feature optional instead of being enable by default.

ashvardanian commented 1 day ago

@hadronzoo, making it optional is a bad idea. It brings too much to the table and very few people remember to check the available options/flags/settings 🤔 Is there a way to control the minimum viable GLibC version or OS version?

hadronzoo commented 15 hours ago

I think this is blocked on https://github.com/rust-lang/docs.rs/issues/2672.