incorrect bool/Option(bool) support
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Comece com o reproducer em Rust usando um iterador sobre bool e o erro de validação OpBitcast relatado. Rastreie como bool e Option são reduzidos para SPIR-V, incluindo o caso inverso de bool-to-char e a capability Int8 inesperada. Valide o resultado com o reproducer mostrado e SPIR-V Tools, sem Bitcast inválido nem capability Int8 desnecessária.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Expected Behaviour
no crash when using bool / Option(bool) (note: in particular, the bug was observed when using iterators over bool)
Example & Steps To Reproduce
This code fail to compile:
#![cfg_attr(target_arch = "spirv", no_std)]
use spirv_std::glam::UVec3;
use spirv_std::spirv;
#[spirv(compute(threads(64)))]
pub fn main_cs(
#[spirv(global_invocation_id)] id: UVec3,
#[spirv(storage_buffer, descriptor_set = 0, binding = 0)] buffer: &mut [u32],
) {
let mut t =test();
buffer[1] += t.next().unwrap() as u32;
}
struct T{}
#[inline(never)]
pub fn test()->impl Iterator<Item = bool>{
T{}
}
impl Iterator for T {
type Item=bool;
fn next(&mut self) -> Option<Self::Item> {
return Some(true);
}
}
The relevant part of the error
error: error:0:0 - Expected Result Type to be a pointer or int or float vector or scalar type: Bitcast
%40 = OpBitcast %bool %33
NB: the error also happen the other way arround (cast from bool to char).
It also seem that these cast force to use the Capability::Int8 when no Int8 is used in similar cases
System Info
- Rust: rustc 1.90.0-nightly
- OS: artix linux with kernel 6.17.8-artix1-1
- GPU: NVIDIA Corporation GA102 [GeForce RTX 3080 Ti]
- SPIR-V: SPIRV-Tools v2025.4 v2025.4-0-g7f2d9ee92
- Linguagem predominante
- Rust
- Estrelas
- 3.4k
- Forks
- 132
- Merge médio
- 21h 41min
- PRs com merge (30d)
- 17
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de Rust-GPU/rust-gpu
-
enhancement
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 68/100
Rust-GPU/rust-gpu#209 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
Rust-GPU/rust-gpu#659 · 8 comentários ·
Mantenedores costumam responder em até 1 dia
-
Adhere to Rust floating-point semanticsTalvez livre de novo @Firestar99 assumiu há 29 dias e não há nenhum pull request aberto. Abertaenhancement
Rust-GPU/rust-gpu#643 · 6 comentários · 1 reação · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
Rust-GPU/rust-gpu#608 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 48/100
Rust-GPU/rust-gpu#606 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de Rust-GPU/rust-gpu
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
project-robius/robrix#1154 ·
Mantenedores costumam responder em até 1 dia
-
Add MimirAberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
slavakurilyak/awesome-ai-agents#759 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
compiler-explorer/compiler-explorer#9272 ·
Mantenedores costumam responder em até 1 dia
-
Trash, bin or rubbish?Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 63/100
pop-os/cosmic-files#2117 ·
Mantenedores costumam responder em até 2 dias