)]}'
{
  "commit": "2f197857349732746ef3ab79a7a258d7e8628076",
  "tree": "084113096334c97d8f3063ea8b97c66f81183c99",
  "parents": [
    "ac7c391ee58c608ab10991a7f67526a758f95f97"
  ],
  "author": {
    "name": "Sam Clegg",
    "email": "sbc@chromium.org",
    "time": "Fri Sep 24 19:42:46 2021"
  },
  "committer": {
    "name": "Sam Clegg",
    "email": "sbc@chromium.org",
    "time": "Wed Oct 20 22:35:01 2021"
  },
  "message": "Initial support runtime dlopen in multi-threaded applications\n\nThis change maintains a shared global list of DSOs loaded and adds a\n`emscripten_thread_sync_code` helper function which can be used to bring\nthe current thread up to date by loading all the modules in the this\nlist.\n\nThe static table region allocated for a particular module is allocated\nby the first loading thread.  All other threads will use the same\npre-allocated region.\n\nThis change does not yet deal with sychronizing pointers loaded by\n`dlsym`.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d8a256b1be8af7d652254b3b1d8f2ac4403d6307",
      "old_mode": 33188,
      "old_path": "src/library_dylink.js",
      "new_id": "7901612519a8b5049a8e0ef1a3d2099d257a5353",
      "new_mode": 33188,
      "new_path": "src/library_dylink.js"
    },
    {
      "type": "modify",
      "old_id": "9c85705aa6a7f84499d5d0ad16061f8048fc30d8",
      "old_mode": 33188,
      "old_path": "src/library_pthread.js",
      "new_id": "b51a1b9def8a8ebf944242fb65b5b00aa7e7eff8",
      "new_mode": 33188,
      "new_path": "src/library_pthread.js"
    },
    {
      "type": "modify",
      "old_id": "ed1802a8b758a1d312e15dcabc2c53ebe4b7bad2",
      "old_mode": 33188,
      "old_path": "src/struct_info_internal.json",
      "new_id": "f37de633a4cba77f3ee056526095075d4bf2f7f9",
      "new_mode": 33188,
      "new_path": "src/struct_info_internal.json"
    },
    {
      "type": "modify",
      "old_id": "48949750c9a287cfbeefe5220f9cfad3bd2ac159",
      "old_mode": 33188,
      "old_path": "system/include/emscripten/threading.h",
      "new_id": "a947b71c3a0e7d57c018cc9d9c13155d24b2fa64",
      "new_mode": 33188,
      "new_path": "system/include/emscripten/threading.h"
    },
    {
      "type": "modify",
      "old_id": "fceac14a47f6e07ce35946c3f3edf270754f3413",
      "old_mode": 33188,
      "old_path": "system/lib/libc/dynlink.c",
      "new_id": "cdbd3a7f016cf842dddc783267ca0c2c8c7d94e9",
      "new_mode": 33188,
      "new_path": "system/lib/libc/dynlink.c"
    },
    {
      "type": "modify",
      "old_id": "809e740ae7d1a30944928e331c2796d11c276281",
      "old_mode": 33188,
      "old_path": "system/lib/libc/musl/src/internal/dynlink.h",
      "new_id": "14c2d580ae1e85b51192132556fdcb823a804a57",
      "new_mode": 33188,
      "new_path": "system/lib/libc/musl/src/internal/dynlink.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "671d44523548bd67f568cf1c0a77cf7e527ef5be",
      "new_mode": 33188,
      "new_path": "tests/core/pthread/test_pthread_dlopen.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b5df219a5ecfeaf22a8a9de861330571bb32aadd",
      "new_mode": 33188,
      "new_path": "tests/core/pthread/test_pthread_dlopen_side.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c356dc94a211edf2080eb9fbc90c1438720e592c",
      "new_mode": 33188,
      "new_path": "tests/core/pthread/test_pthread_dlsym.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c09fdc059f0b27ef024fff85835cf7b20afd39e5",
      "new_mode": 33188,
      "new_path": "tests/core/pthread/test_pthread_dlsym_side.c"
    },
    {
      "type": "modify",
      "old_id": "9557f0968e3bb20bd1cca986b4c8a37436596021",
      "old_mode": 33188,
      "old_path": "tests/reference_struct_info.json",
      "new_id": "db3445dd35f943a91ac40e6cbe98ce9fa8310b72",
      "new_mode": 33188,
      "new_path": "tests/reference_struct_info.json"
    },
    {
      "type": "modify",
      "old_id": "932943323f42ef13ba03877ffa39106254f5d5f2",
      "old_mode": 33188,
      "old_path": "tests/test_core.py",
      "new_id": "61f317bc1468111e4f6f45a5d9f9d9b87c18a533",
      "new_mode": 33188,
      "new_path": "tests/test_core.py"
    }
  ]
}
