)]}'
{
  "commit": "66671a4a5547866da6b671308fad64cca2acf071",
  "tree": "674bbe6f00aca3f80e25525c5743be37d8ac92e9",
  "parents": [
    "616c08bc1ec604a822d354cbb0353b7994cec72d"
  ],
  "author": {
    "name": "Thomas Lively",
    "email": "tlively@google.com",
    "time": "Fri Mar 10 18:31:35 2023"
  },
  "committer": {
    "name": "Thomas Lively",
    "email": "tlively@google.com",
    "time": "Sat Aug 12 15:02:32 2023"
  },
  "message": "Upgrade to C++20\n\nThis will enable us to use new features including concepts and coroutines to\nmake our code easier to read and write.\n\nIn order to make the build work after the update, remove many newly unnecessary\noverloads of operator!\u003d, which older C++ compilers consider to be ambiguous with\ntheir corresponding overloads of operator\u003d\u003d, despite this having already been\nfixed in the C++ spec. The operator!\u003d overloads are not necessary in C++20\nbecause the compiler can synthesize them automatically.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8a008b5146a5b77a1c62d585c9411e727ec25446",
      "old_mode": 33188,
      "old_path": "CMakeLists.txt",
      "new_id": "a7723d04766bf2e01499e69bf5d920070249b76a",
      "new_mode": 33188,
      "new_path": "CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "130dbf92329eecf8bb00d1984c9df590d891c7e4",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "8e06420c22c4b4821ab6ba671841ea375b716cfb",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "modify",
      "old_id": "10e78176945400c526e878c6d5b06e75b2e81e9f",
      "old_mode": 33188,
      "old_path": "src/dataflow/node.h",
      "new_id": "3578b30ddefbbe6548dc022e6fb1a2fd269a3a9f",
      "new_mode": 33188,
      "new_path": "src/dataflow/node.h"
    },
    {
      "type": "modify",
      "old_id": "086d504ba99520dcb18bdfe7bf64831821590822",
      "old_mode": 33188,
      "old_path": "src/emscripten-optimizer/simple_ast.cpp",
      "new_id": "dd0b59fdea1e7b2f617b1fca701d085d651a0333",
      "new_mode": 33188,
      "new_path": "src/emscripten-optimizer/simple_ast.cpp"
    },
    {
      "type": "modify",
      "old_id": "e4c886dd857939ee8b87b22ad72a76288471fac1",
      "old_mode": 33188,
      "old_path": "src/emscripten-optimizer/simple_ast.h",
      "new_id": "dbe2048b11a09dd86e67c6650a100dcaf0c55373",
      "new_mode": 33188,
      "new_path": "src/emscripten-optimizer/simple_ast.h"
    },
    {
      "type": "modify",
      "old_id": "e19aacfdcfc5011a015acd7ca4b77bab04f4d9eb",
      "old_mode": 33188,
      "old_path": "src/support/parent_index_iterator.h",
      "new_id": "159df1c85995289631761b4755b48f3efd8d6923",
      "new_mode": 33188,
      "new_path": "src/support/parent_index_iterator.h"
    },
    {
      "type": "modify",
      "old_id": "4f2dc0b81c350cded07d8db249dc4afbfa048716",
      "old_mode": 33188,
      "old_path": "src/support/small_vector.h",
      "new_id": "93585c51a8c34185ffae178e0acb7e93c766efe0",
      "new_mode": 33188,
      "new_path": "src/support/small_vector.h"
    },
    {
      "type": "modify",
      "old_id": "91353dd37270b815e4d5467401906c703e9df6f7",
      "old_mode": 33188,
      "old_path": "src/support/topological_sort.h",
      "new_id": "18dba11fe4549f443646c3f73e72f6e8a352c2d8",
      "new_mode": 33188,
      "new_path": "src/support/topological_sort.h"
    },
    {
      "type": "modify",
      "old_id": "108185bd07b9014c9a00ac7709547170b66e3f36",
      "old_mode": 33188,
      "old_path": "third_party/llvm-project/include/llvm/ADT/StringMap.h",
      "new_id": "91a7ea756116770ce836b8586859758225b0f4d4",
      "new_mode": 33188,
      "new_path": "third_party/llvm-project/include/llvm/ADT/StringMap.h"
    },
    {
      "type": "modify",
      "old_id": "467fd4c00ec5a45124876397a514061825618771",
      "old_mode": 33188,
      "old_path": "third_party/llvm-project/include/llvm/ADT/iterator.h",
      "new_id": "1d00e1e8844c15c88fca96a920fd824820a5569d",
      "new_mode": 33188,
      "new_path": "third_party/llvm-project/include/llvm/ADT/iterator.h"
    }
  ]
}
