Concurrency foundation: get the threading model right before parallel/GPU work (tracking)
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
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Activo
- Stack tecnológico
- c
- Área
- operating-systems, testing-qa
Línea de trabajo
Start with the whole-runtime concurrency review and the probes under ~/src/wt/briefs/conc-review/, then read the unchecked Tier 1 and Tier 2 issues listed here. The tracking work spans memory safety, runtime contracts, documentation, and the proposed tsan-http Makefile target and CI lane; done means the selected findings and gate debt are resolved and verified.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Jon, 2026-09-14: "we really need to get concurrency right, that way when we get gpu access we have a solid foundation for parallelism."
A whole-runtime concurrency review (three independent reviewers, every finding executed on main @ a18deac; probes kept under ~/src/wt/briefs/conc-review/) produced the issues below. They are ordered by the fix set that closes the most with the least: the first five are memory-unsafety in programs with NO user-written race; the rest are silent-wrong contracts and the doc/gate debt.
Tier 1 — memory unsafety without a user race
- #1141 dict keys interned per thread dangle after a worker exits (spawn → join → read reads garbage)
- #1142 the trace tape has no lock: sink buffer overflow, torn tapes (workers AND HTTP states), replay-reader use-after-free, observer-config ping-pong
- #1144
load_file/importfrom a worker: per-STATE loading stack, unlocked module cache, module namespace table freed under readers (false "circular dependency") - #1145 arming sets realloc'd under readers (occurrence tier never widened; two embed states race with no spawn)
- #1161 module-env lock (#607) keyed on a predicate that is false for imported modules — never locked (found landing #1141)
- #1162 embed API: a host thread attach/eval/detach frees its intern table — global env names incl. builtins dangle for the state (pre-existing, found reviewing #1141)
- #1146
thread_joinhas no claim step (double join = UB hang); handle ids recycle without a generation; full table → silent null - #1140 HTTP: a code route mutates the live route table from a worker
Tier 2 — silent-wrong contracts
- #1147 cycle collector off for the rest of the run after the first spawn (117x peak RSS)
- #1148 "messages copy" is false for buffer / text_builder / closures
- #1149
exitinside a worker does not stop the program; main blocked inrecvhangs forever - #1150
randomshares libc's generator state across workers with a racy seed - #1151 process-wide SIGPIPE flip;
printignores flush errors - #1143
eigs_closeon one embed state shuts the tape for every other state
Docs and the gate
- #1152 state that user races are UNDEFINED (allocator corruption), enumerate the process-global surfaces for embedders, extend the TSan slice to the shapes it never runs
- #1139 a
tsan-httpMakefile target and CI lane (the ad-hoc one found #1137)
Verified sound (by execution) — the foundation to build on
Channel semantics incl. close-while-blocked and multi-receiver; nested spawn and tasks inside workers; the per-thread cooperative scheduler; the refcount-atomics flip and every raw refcount site; per-thread freelists under the copy rule for lists/dicts; the JIT cliff incl. a spawn while emitted code is running; the replay boundary for recv; the binding-count and config-cache fixes from #1137.
Where the stress would come from
No consumer in the ecosystem exercises OS-thread parallelism today (eddy covers the COOPERATIVE layer against Porcupine/Elle; hq/PORTFOLIO.md lists the true-parallel slice as uncovered). Once Tier 1 lands, a parallel consumer is the forcing function: a portfolio SAT solver in EigenMiniSat (N workers, N seeds, first result wins over a channel, native MiniSat as the oracle) and a parallel tensor workload (the shape GPU work will take) are the two natural candidates.
- Lenguaje dominante
- C
- Estrellas
- 3
- Forks
- 7
- Merge medio
- 4 h 15 min
- PR fusionados (30 d)
- 106
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
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 InauguralSystems/EigenScript
-
area:lint-tooling bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
InauguralSystems/EigenScript#1340 ·
Los mantenedores suelen responder en 1 día
-
area:stdlib found-by:code-review kind:silent-wrong
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
InauguralSystems/EigenScript#1338 ·
Los mantenedores suelen responder en 1 día
-
area:lint-tooling found-by:critic kind:docs-drift
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
InauguralSystems/EigenScript#1335 ·
Los mantenedores suelen responder en 1 día
-
area:ci found-by:critic kind:gate-defect
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
InauguralSystems/EigenScript#1311 ·
Los mantenedores suelen responder en 1 día
-
enrolment: decide test_gc_runner_controls.py (exempt vs enrol) and whether floors need a ratchetAbiertoarea:gates found-by:critic kind:decision
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
InauguralSystems/EigenScript#1280 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de InauguralSystems/EigenScript
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
sandialabs/seacas#945 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
ARM-software/sysarch-acs#556 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
netdata/netdata#24062 · 1 comentario ·
Los mantenedores suelen responder en 1 día