Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン
#1,153 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
説明が足りない
活発さ
活発
技術スタック
c

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
C
スター
3
フォーク
7
平均マージ
4時間 15分
マージ済み PR(30日)
106

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

InauguralSystems/EigenScript のほかの issue

InauguralSystems/EigenScript の issue をすべて見る

似ている issue

C の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。