)]}'
{
  "commit": "2cadade3af68b8a7b0717ddd8cb8a2383a3cf59e",
  "tree": "d95322f534a9bd8c7c9f8c6b5cb47bdfd9251571",
  "parents": [
    "39a0a85c7cf9cac1b32f01f4ac2697454531ecae"
  ],
  "author": {
    "name": "Thomas Lively",
    "email": "tlively@google.com",
    "time": "Sat Aug 01 02:20:32 2026"
  },
  "committer": {
    "name": "Thomas Lively",
    "email": "tlively@google.com",
    "time": "Sat Aug 01 02:20:32 2026"
  },
  "message": "SHARED_WASMGC mechanism for sending data to new threads\n\nThe experimental SHARED_WASMGC setting already allows for sharing data between threads in the form of a single global value initialized once on the main thread and then imported whenever the module is instantiated on a new worker. This is technically sufficient to bootstrap arbitrary shared state, including a user space message-passing primitives, as long as threads can be initialized with different thread IDs, but this is not very convenient.\n\nAdd another mechanism gated behind SHARED_WASMGC that allows sending specific shared values to newly spawned threads without a complicated user space TID-keyed parallel mailbox system. The new system depends on the module exporting two new globals, _gc_spawn_arg for outgoing values and _gc_thread_state for received values. When a thread calls pthread_create, its _gc_spawn_arg value is read and transferred via postMessage to the Worker where the new thread is created, where it is assigned to _gc_thread_state before pthread initialization.\n\nMake both the existing globally shared state mechanism and the new thread state mechanism optional so users can use either or both as they wish.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f8567c530658ab87361f6da68dbb130646397f6d",
      "old_mode": 33188,
      "old_path": "site/source/docs/tools_reference/settings_reference.rst",
      "new_id": "901f385511eea54335d115a32fcb4933bccb173d",
      "new_mode": 33188,
      "new_path": "site/source/docs/tools_reference/settings_reference.rst"
    },
    {
      "type": "modify",
      "old_id": "2f65bfa8ae73978932742b968a22107e35af5d74",
      "old_mode": 33188,
      "old_path": "src/lib/libpthread.js",
      "new_id": "b98f448578ea516fccc5ef32bee17f21c00d0756",
      "new_mode": 33188,
      "new_path": "src/lib/libpthread.js"
    },
    {
      "type": "modify",
      "old_id": "26d48b6b86103d32f79a7a71bd10bb6bd35a80c7",
      "old_mode": 33188,
      "old_path": "src/runtime_pthread.js",
      "new_id": "cb1ad13f7ba1713d05325f940dc8938614d8f1ca",
      "new_mode": 33188,
      "new_path": "src/runtime_pthread.js"
    },
    {
      "type": "modify",
      "old_id": "af2fecf89efedd973e408963024f06699cbfd966",
      "old_mode": 33188,
      "old_path": "src/settings.js",
      "new_id": "1d582ee26dcbae18f2129829d05c4d287a9bf012",
      "new_mode": 33188,
      "new_path": "src/settings.js"
    },
    {
      "type": "modify",
      "old_id": "df63abf035d0541db3687511e0358783c8a207a1",
      "old_mode": 33188,
      "old_path": "test/test_other.py",
      "new_id": "41421b33baa05604b0ccfb6bf20432cb2d9b8bf7",
      "new_mode": 33188,
      "new_path": "test/test_other.py"
    }
  ]
}
