Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Process & Runtime Semantics by Language

Part hub — Section G: Comprehensive Programming-Language Semantics, Standard Libraries, Process APIs, and Subprocess Behavior.

Each of the eight languages (C, C++, Python, Go, Java, Rust, Node.js, OCaml) is documented as a separate documentation project with six mandatory coverage areas and its own verifiable coverage ledger:

  1. Syntax and semantics — declarations, evaluation rules, scope and lifetime, cleanup, error propagation, undefined/unspecified behavior, version and platform deltas, misconceptions, worked examples.
  2. Standard-library and runtime API inventory — source-derived, with canonical signatures, side effects, ownership, thread-safety, and version availability; never inventory from memory.
  3. Process creation and termination — entry-point return versus explicit termination, cleanup handlers, destructors/deferred/hooks/finalizers, uncaught exceptions, panics, aborts, exit-status ranges and truncation.
  4. Signals and OS interaction — registration, masking, delivery, async-signal-safety, runtime restrictions, threads/GC/FFI interactions, POSIX versus Linux-specific behavior.
  5. Subprocess and child-process management — creation, waiting, pipes, streams, timeouts, cancellation, zombies, injection-safe argument passing, status retrieval.
  6. Concurrency and resource semantics — threading, synchronization, fd/handle ownership, buffering, deadlocks, races, leaks, and the effect of GC / ownership systems / runtime scheduling.

Scope discipline: this is not an indiscriminate ecosystem inventory. The in-scope surface is language semantics, the standard library/runtime insofar as it bears on process lifecycle, signals, subprocesses, and resource management. Adjacent deep dives live elsewhere in this book and are cross-linked, not duplicated:

Chapters and ledgers

LanguageChapterCoverage ledgerVerified target (official sources, retrieved 2026-10)
Cc.mdledger-c.mdISO C17 (N2310) + C23 (N3220), glibc (via sourceware.org), POSIX.1-2024, man-pages 6.19
C++cpp.mdledger-cpp.mdISO C++23 DIS N4950 + working draft (eel.is, 2026-08-23), GCC 14.2.0 libstdc++, POSIX.1-2024
Pythonpython.mdledger-python.mdCPython 3.15.0 (docs.python.org + CPython source + PEPs 442/446/475)
Gogo.mdledger-go.mdGo 1.27.2 (go.dev/dl JSON feed + pkg.go.dev)
Javajava.mdledger-java.mdJDK 25 (Javadoc + JLS SE 25 + JEPs + jdk-25+36 source), HotSpot on Linux
Rustrust.mdledger-rust.mdstd 1.99.0 (build b940084d7, 2026-09-28; doc.rust-lang.org + std source)
Node.jsnodejs.mdledger-nodejs.mdNode.js v24.21.0 ‘Krypton’ LTS (nodejs.org/dist + api docs, libuv 1.52.1)
OCamlocaml.mdledger-ocaml.mdOCaml 5.5.1 (ocaml.org + official source tree, 24 verified .mli/.c files)
Allcomparison.md—Cross-language semantic comparison (G5), grounded in the eight chapters

Exact versions were re-verified against the official release feeds at research time; where a chapter’s target moved relative to the exit-signal part’s older range (e.g. Rust 1.61–1.8x era there), the chapters here are the current source of record. What each chapter actually checked, and any source that could not be reached, are stated in the chapter’s scope section and ledger header. No chapter claims universality beyond its declared scope.

Coverage ledger schema (G4)

Every ledger uses the schema below. Statuses: not-started, researched, documented, source-limited. An entry is documented only when the explanation exists, required examples are present, and the cited references support the claims — a name in a table is never sufficient.

IDLanguage/API or behaviorCanonical signatureDocumentation pathAuthoritative referenceVersion/platform scopeStatus

Stable ID prefixes: PL-C-, PL-CPP-, PL-PY-, PL-GO-, PL-JV-, PL-RS-, PL-ND-, PL-OC- (deliberately disjoint from the LG-* ledger IDs of the exit-signal part).

Per-language rollups (inventoried / documented / remaining / source-limited) are reported at the top of each ledger file and consolidated below.

Coverage rollup (integration result)

LedgerInventoriedDocumentedRemainingSource-limited
C828101
C++757401
Python808000
Go808000
Java807802
Rust767303
Node.js808000
OCaml807703
Part total633623010

Every source-limited row names the unreachable primary source and the substituting evidence in its ledger (examples: the Linux UAPI wait-status header claims anchored to man-pages 6.19; std::jthread destructor wording anchored to the working-draft class contract; libjsig kept brief; OCaml tail-call and SIGSEGV-conversion wording absent from the fetched manual pages). No entry is marked documented on the strength of a name in a table; the statuses not-started and researched do not occur at publication time.

Reference policy (G3)

  • Primary sources only for behavior claims: language specifications, official standard-library and runtime references, official platform documentation.
  • Direct links next to significant claims; dedicated References section per chapter; per-ledger-entry signature source.
  • Never invent URLs, signatures, outputs, guarantees, or version availability. Implementation-dependent or unverifiable behavior is labeled as such, explicitly.