Concurrency foundation: get the threading model right before parallel/GPU work (tracking)
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- c
- Lĩnh vực
- operating-systems, testing-qa
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- C
- Star
- 3
- Fork
- 7
- Merge trung bình
- 4 giờ 5 phút
- Pull request đã merge (30 ngày)
- 116
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của InauguralSystems/EigenScript
-
area:docs good first issue kind:docs-drift
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
InauguralSystems/EigenScript#1400 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:docs good first issue kind:docs-drift
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
InauguralSystems/EigenScript#1396 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
docs/BUILTINS.md: task_spawn row says task_yield/task_join 'land in a later increment'; both existĐang mởarea:docs good first issue kind:docs-drift
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
InauguralSystems/EigenScript#1392 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:embed kind:silent-wrong
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
InauguralSystems/EigenScript#1387 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:stdlib kind:silent-wrong
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
InauguralSystems/EigenScript#1378 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của InauguralSystems/EigenScript
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Failed to resolve logo sourceĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
fastfetch-cli/fastfetch#2628 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
FujiNetWIFI/fujinet-firmware#1736 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100