Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở
#1,153 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

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

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ả

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.

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

Mở trong Codespaces

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.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của InauguralSystems/EigenScript

Tất cả issue của InauguralSystems/EigenScript

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.