
Fearless SIMD v1.0 buraxıldı: Rust kitabxanası SIMD kodundan unsafe-i çıxarır
Linebender, portativ SIMD və aparat intrinziklərinə təhlükəsiz giriş təklif edən, ad-hoc unsafe kodu tələb etməyən Rust kitabxanası fearless_simd v1.0-ı buraxdı; versiyaya üç il təhlükəsizlik yeniləməsi veriləcək.
Linebender fearless_simd v1.0-ı buraxdı: Rust üçün kitabxananın məqsədi unsafe kodunu SIMD-dən çıxarmaqdır. SIMD bir təlimatın eyni anda bir neçə dəyərə tətbiq edilməsi texnikasıdır. Elan layihənin bloqunda 22 sentyabr 2026-cı ildə dərc olundu; ilk prototipdən təxminən səkkiz il keçib. Kitabxana üç istifadə səviyyəsini əhatə edir: avtovektorlaşdırma və multiversiyalaşdırma, tam portativ SIMD abstraksiyaları və aparat intrinziklərinə təhlükəsiz giriş.
Performans
Portativ SIMD abstraksiyalarına qarşı ən çox səslənən tənqid performans itkisidir. Müxtəlif platformalarda kənar hallarda fərqli davranan əməliyyatlar üçün, məsələn swizzle və ya sürüşən nöqtəli maksimum üçün kitabxana iki variant təqdim edir: hər yerdə eyni nəticə verən dəqiq variant və kənar halların gözlənilmədiyi yerlərdə platformadan asılı nəticə qaytaran sürətli variant.
Alqoritmləri aparatın təbii vektor eninə görə yazmaq mümkündür; sabit vektor ölçüləri də dəstəklənir. Komanda həmçinin Rust və LLVM-ə yaxşılaşdırmalar göndərib. Portativ əməliyyatlar kifayət etmədikdə kod əlavə xərc olmadan platforma intrinziklərinə enə bilir.
Təhlükəsizlik
Müəlliflərə görə digər SIMD abstraksiyaları unsafe kodla doludur; açar söz axtarışı minlərlə blok göstərir. fearless_simd-də isə ad-hoc unsafe tələb olunmur. Bunu iki kiçik komponent təmin edir: kompilyatorun target feature 1.1-nə söykənərək SIMD intrinziklərinin çoxunu təhlükəsiz çağıran kernel! makrosu və bytemuck ilə zerocopy-dən ilhamlanan təhlükəsiz transmute modulu; bu modul _mm_loadu_epi32 kimi yükləmə və saxlama intrinziklərini bir təkrar istifadə oluna bilən sarğı ilə əvəz edir. Bu iki müstəqil blok yaddaş baxımından təhlükəsizdirsə, qalan kod da konstruksiyaya görə təhlükəsizdir.
Ergonomika və sabitlik
Rust-da funksiya multiversiyalaşdırması çətin idi: əvvəlki həllər ya #[inline(always)] annotasiyaları və onların nəticələrini anlamağı tələb edirdi, ya da hər çağırışa kiçik funksiyalara zərər verən xərc əlavə edirdi. 1.0 versiyası ilə birlikdə bu qərarları avtomatik verən #[simd] atributuna malik fearless_simd_macros v0.1 gəlir; əl ilə üsul da əlçatan qalır.
Layihə v1.0 və bütün sonrakı versiyalar üçün üç il təhlükəsizlik yeniləməsi vəd edir və API-ni pozmadan f16 tipinə, həmçinin SVE və RISC-V vektor uzantılarına dəstək yolunu görür.
İstifadə və std::simd yolu
Fearless SIMD artıq 30 crate-in birbaşa, mindən çox crate-in isə dolayı asılılığıdır. Komanda std::simd-in sabitləşməsini alqışlayacağını, lakin bunun kitabxananı artıq etməyəcəyini bildirir: standart kitabxana yalnız orada olması mütləq olan hissələri tətbiq edir, multiversiyalaşdırma və aparat enində vektorları isə ekosistemə buraxır. std::simd sabitləşsə, layihə ona keçməyi, öz kodunu azaltmağı və nadir platformalara dəstək qazanmağı planlaşdırır.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.