[BUG] `DType::from` rejects `S16`, `U16` and `F16`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Comienza con la conversión de DType en src/core/util.rs:76-81 y compara su rango aceptado con el enum en src/core/defines.rs:112-139. Sigue Array::get_type() en array.rs:427-432 y verifica que S16, U16 y F16 ya no provoquen un panic, incluso al aplicar el formato Debug a un array; los valores no reconocidos deben producir un error claro.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
impl From<u32> for DType {
fn from(t: u32) -> Self {
assert!(DType::F32 as u32 <= t && t <= DType::U64 as u32);
unsafe { mem::transmute(t) }
}
}
The upper bound is DType::U64, which is 9. But the enum continues past it (src/core/defines.rs:112-139):
U64 = 9,
S16 = 10,
U16 = 11,
F16 = 12,
So the assert fires for three of the crate's own supported types. Array::get_type() (array.rs:427-432) is the caller, which means:
let a = randu::<half::f16>(dim4!(3, 3));
let t = a.get_type(); // panics
println!("{:?}", a); // panics — Debug impl calls get_type()
This is not a version-skew problem — it's wrong against a correct 3.8 library, and has been since f16 support was added. It's also the inverse mistake to the one in AfError::from: that assert is too loose, this one is too tight.
Fix: bound at DType::F16 as u32, or better, use an exhaustive match with a clear error for unrecognised values. Note ArrayFire 3.10 adds s8 = 13, so a match would future-proof this.
Found by Claude Opus 5. Verified manually.
- Lenguaje dominante
- Rust
- Estrellas
- 827
- Forks
- 59
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de arrayfire/arrayfire-rust
-
Bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
arrayfire/arrayfire-rust#388 ·
-
Bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
arrayfire/arrayfire-rust#387 ·
-
Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
arrayfire/arrayfire-rust#384 ·
-
Bug
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
arrayfire/arrayfire-rust#385 · 1 comentario ·
-
Bug
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
arrayfire/arrayfire-rust#382 ·
Todos los issues de arrayfire/arrayfire-rust
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Eynzof/Hermes-CN-Desktop#616 ·
-
bug rules
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
app bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
IronCoreLabs/ironcore-alloy#346 ·
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100