Define the freestanding memory-operation runtime contract
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Start with llvm/src/codegen/ir.rs at the linked starting point, then reproduce the O0/O2 object builds and inspect undefined symbols with llvm-nm. Discuss the design with @LunaStev before implementation. Done means the runtime ownership contract is documented, applied consistently to optimized loops and aggregate operations, and checked for overlapping memmove, zero-length operations, and unintended hosted linkage.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Motivation
A raw byte-zeroing loop has no undefined symbol at O0, but O2 creates llvm.memset and the object has an undefined memset symbol. --freestanding disables default libc/libm links but does not prevent this lowering. This behavior is also common in C freestanding compilers; the gap is an explicit Wave ownership/provider contract.
Starting points: llvm/src/codegen/ir.rs.
fun clear(p: ptr<u8>, n: i64) { var i: i64 = 0; while (i < n) { deref p[i] = 0; i += 1; } }
Reproduced at 73aff59e on Linux amd64/LLVM 21.1.8: build with --freestanding --target=x86_64-unknown-none-elf --emit=obj at O0/O2, then inspect with llvm-nm --undefined-only. Only O2 has U memset in the sampled loop.
Scope
Decide compiler-owned memory helpers versus an explicit caller-supplied kernel runtime contract. Cover memcpy/memmove/memset and optimized loops/aggregates, including preservation of memory semantics.
Completion criteria
- Agree on and document whether memory primitives are compiler-owned or explicitly provided by the freestanding environment.
- Implement the approved contract consistently for optimized loops and aggregate copies/initialization.
- Inspect O0/O2 undefined symbols and test overlapping memmove and zero-length operations without accidental hosted linkage.
Design required. Please mention @LunaStev to discuss the design before starting implementation.
- Lenguaje dominante
- Rust
- Estrellas
- 56
- Forks
- 21
- Merge medio
- 23 h 20 min
- PR fusionados (30 d)
- 45
Preparar el entorno
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 wavefnd/Wave
-
Reject unrepresentable POSIX listener descriptors before Unix-domain acceptPosiblemente ocupada @ShahadatTest la tomó hace 6 días. Abiertobug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
wavefnd/Wave#1082 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Preserve expression assembly result types when recording HIR conversionsPosiblemente ocupada @hiyouwhatsapp la tomó hace 2 días. Abiertobug help wanted
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
bug help wanted
Dificultad 4/5 3-5 días Aptitud para principiantes 53/100
Los mantenedores suelen responder en 1 día
-
Preserve the previous build output when writing its Cargo receipt failsPosiblemente ocupada @hiyouwhatsapp la tomó hace 2 días. Abiertobug build help wanted
Dificultad 4/5 3-5 días Aptitud para principiantes 56/100
Los mantenedores suelen responder en 1 día
-
Reconcile obsolete staging assets before verifying a new Nightly generationPosiblemente ocupada @hiyouwhatsapp la tomó hace 2 días. Abiertobug ci help wanted
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
Todos los issues de wavefnd/Wave
Issues similares
-
Panic on live viewport resize when unstyled elements exist in display: none subtreePosiblemente ocupada @GoCoder7 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
DioxusLabs/blitz#1488 ·
Los mantenedores suelen responder en 1 día
-
🏷️ good first issue enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
S-Needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
vectordotdev/vrl#2042 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día