Call graph (Rust/Go): Rust macro invocations linked to a same-named fn, calls inside Rust struct literals / vec![] args missed, Go generic instantiation call missed

Cerrado
#5,634 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
go, python, rust

Línea de trabajo

Start by reading callcheck_rustgo2.py and gore_vs_linuxdoom.py in /srv/storage_16tb/projects/gitgalaxy/doom-study/study-prototype/, then trace call-graph extraction and oracle checks for Rust macros, struct literals, nested macro arguments, and Go generic instantiation. Use the cited Rust and Go locations as regression cases. Done means each shape has a focused test, the #5630 oracle reports zero misses or false calls, and any changed goldens include an explained drift.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug core-engine metrics needs:doom-corpus priority: low scope:core

Problem

Independent body oracle on the licensed Rust/Go DOOM ports (engine 0e2bf4ade) finds Rust/Go call graphs very accurate (recall 0.999 on rust-doom, room4doom and gore; precision 1.000 on rust-doom and gore, ~0.998 on room4doom), with these small shapes:

  1. Rust macro invocation recorded as a call to an unrelated same-named function (room4doom, 29 edges): write!(f, ...) inside fmt (expands to f.write_fmt(...)) becomes fmt -> write, linking to the crate's own write fn, e.g. game-config/src/lib.rs:30, gameplay/src/save.rs:63, gamestate-traits/src/keys.rs:154. A name!(...) invocation should not resolve to a function name.
  2. Rust calls inside struct-literal fields and macro arguments missed (room4doom, ~10): render/backend/src/lib.rs:448 upload_ui: pixels: as_u32_slice(s.pixels()), w: s.width(), h: s.height() inside a struct literal; tools/editor-core/src/texture_lumps.rs:152,197,221: encode_texture_lumps(&[vec![def(...)]]); tools/geom-kernel/src/name8.rs:130: Name8::new( in a nested visitor impl.
  3. Go generic instantiation call missed (gore, 1): doom.go:33305 r_InitSpriteLumps: patch := w_CacheLumpNumT[*patch_t](...).

Context: gore vs linuxdoom cross-language consensus (625 shared functions, 1,233 shared edges, Jaccard 0.90) found 0 engine misses on either side; all 134 differing edges are real code differences (C macros FTOM/MTOF vs explicit FixedMul calls in Go, refactors).

Acceptance

  • Tests per shape; the #5630 oracle reports 0 for them on the licensed Rust/Go ports; goldens with drift explained.

Prototype: /srv/storage_16tb/projects/gitgalaxy/doom-study/study-prototype/callcheck_rustgo2.py, gore_vs_linuxdoom.py.

🤖 Generated with Claude Code

Lenguaje dominante
Python
Estrellas
57
Forks
11
Merge medio
1 h 42 min
PR fusionados (30 d)
966

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de squid-protocol/gitgalaxy

Todos los issues de squid-protocol/gitgalaxy

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.