Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Concurrency foundation: get the threading model right before parallel/GPU work (tracking)

Abierto
#1,153 3 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
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

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

area:concurrency kind:tracking

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/import from 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_join has 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 exit inside a worker does not stop the program; main blocked in recv hangs forever
  • #1150 random shares libc's generator state across workers with a racy seed
  • #1151 process-wide SIGPIPE flip; print ignores flush errors
  • #1143 eigs_close on 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-http Makefile 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

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

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 InauguralSystems/EigenScript

Todos los issues de InauguralSystems/EigenScript

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.